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-0.1.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: yt_dlp_proxy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.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-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b09545b43a1db673a51ee67153622a5a3d8cc4306058b7f9b981a92b3fc97c8f
MD5 83bec402c4f6efb8228f3a78d84bbc78
BLAKE2b-256 48554b6e9b39996285753bd3c0eed7aa127993fd38517c81271a1ad5b1928948

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