Skip to main content

A tool for running yt-dlp with the best free proxy

Project description

python3 main.py https://www.youtube.com/watch?v=Ay41fytSZQM -f bestaudio/worst --no-playlist --no-geo-bypass --cookies ../cookies/youtube/cookies.txt

yt-dlp-proxy Guide

yt-dlp-proxy is a script designed to help you avoid throttling and bans by automatically selecting the best proxy for yt-dlp.

Howto start with yt-dlp-proxy

yt-dlp-proxy update

This will also perform a speed test for each free proxy and select the best one available.

Download with yt-dlp-proxy

Use yt-dlp-proxy just like you would use yt-dlp! Pass all the arguments to yt-dlp-proxy instead. Example:

yt-dlp-proxy --format bv[vcodec^=avc!]+ba https://www.youtube.com/watch?v=bQB0_4BG-9F

If the proxy becomes slow over time, rerun the command from Step 1 to refresh the proxy selection.

Optional: Symlink and systemwide installation

Setting Up a Symlink for Easier Access

To make yt-dlp-proxy easier to access from anywhere, you can create a symlink in /usr/bin or another directory in your system’s PATH.


Option 1: Create a Symlink in /usr/bin

Open a terminal. Run the following command, replacing /path/to/yt-dlp-proxy with the actual path to the yt-dlp-proxy script:

sudo ln -s /path/to/yt-dlp-proxy /usr/bin/yt-dlp-proxy

Now you can use yt-dlp-proxy from any directory in the terminal.


Option 2: Install to /usr/bin

If you prefer, you can directly move the yt-dlp-proxy script to /usr/bin:

Open a terminal. Run the following command, again replacing /path/to/yt-dlp-proxy with the path to the script:

sudo install /path/to/yt-dlp-proxy /usr/bin/yt-dlp-proxy

This will copy yt-dlp-proxy to /usr/bin, making it globally accessible.

Now, you can simply type yt-dlp-proxy from any location in the terminal to use the script.


Creating custom proxy providers

First you need to create new py file in proxy_providers directory using this code template:

import requests
from proxy_provider import ProxyProvider

class SomeProxyProvider(ProxyProvider):
    """
    Someproxy provider
    """
    PROXIES_LIST_URL = "https://goodproxies.net/list.json"

    def fetch_proxies(self):
        """Fetch proxies from goodproxies.net"""
        response = requests.get(self.PROXIES_LIST_URL, timeout=5)
        response.raise_for_status()
        response_json = response.json()
        return_list = []
        for server in response_json["data"]["servers"]["10501"]["proxies"]:
            return_list.append(
                {
                    "city": "Unknown city",
                    "country": server["country"].upper(),
                    "host": server["proxy"].split(":")[0],
                    "port": server["proxy"].split(":")[1],
                    "username": response_json["data"]["servers"]["10501"]["credentials"]["username"],
                    "password": response_json["data"]["servers"]["10501"]["credentials"]["password"]
                }
            )
        return return_list

As you can see, this script uses one json structure for all providers. In example code we've "converted" json response from server to python dictionary, compatible with yt-dlp-proxy. Here is basic example of json structure yt-dlp-proxy uses:

[
  {
    "city": "City1",
    "country": "Country1",
    "host": "0.0.0.0",
    "password": "password123",
    "port": "proxy_port",
    "username": "squid_username"
  }
]

Please note that all proxy providers are loaded automatically and you don't need to import them manually in main.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yt_dlp_proxy-1.0.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file yt_dlp_proxy-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: yt_dlp_proxy-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.5

File hashes

Hashes for yt_dlp_proxy-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 19e61be4a4a5db67d8efa34f699f91a89bc6e9b815e1d59d797436db01feeaa1
MD5 42624364f0e2b04b542c839c7023170f
BLAKE2b-256 090301fb48a1b5f9d842d10f852890a97e257706c95be1f4394fc42b190c0530

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page