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

Uploaded Python 3

File details

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

File metadata

  • Download URL: yt_dlp_proxy-1.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 26de1318fbd6af9aaf92edf0cdcc7944c7fc39c4b5e891b978460799337912a4
MD5 ca0ca36d41848ecbf34850ef30fff3b2
BLAKE2b-256 1c8dad244401a0c1249dc74bcadadb93e9cb219c033ba01b60d754b0b4aed784

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