1
0
mirror of https://github.com/yt-dlp/yt-dlp.git synced 2025-08-15 08:58:28 +00:00
This commit is contained in:
Raul 2025-08-06 20:25:23 +03:00 committed by GitHub
commit d82c3a6e48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 1 deletions

View File

@ -285,7 +285,16 @@ def _get_cookiejar(self, request):
return self.cookiejar if cookiejar is None else cookiejar return self.cookiejar if cookiejar is None else cookiejar
def _get_proxies(self, request): def _get_proxies(self, request):
return (request.proxies or self.proxies).copy() if request.proxies:
return request.proxies.copy()
proxies = dict()
for proxy_key, proxy_url in self.proxies.items():
# Proxy url can be a callable
if isinstance(proxy_url, typing.Callable):
proxy_url = proxy_url()
proxies[proxy_key] = proxy_url
return proxies
def _check_url_scheme(self, request: Request): def _check_url_scheme(self, request: Request):
scheme = urllib.parse.urlparse(request.url).scheme.lower() scheme = urllib.parse.urlparse(request.url).scheme.lower()
@ -318,6 +327,8 @@ def _check_proxies(self, proxies):
# Skip proxy scheme checks # Skip proxy scheme checks
continue continue
if isinstance(proxy_url, typing.Callable):
proxy_url = proxy_url()
try: try:
if urllib.request._parse_proxy(proxy_url)[0] is None: if urllib.request._parse_proxy(proxy_url)[0] is None:
# Scheme-less proxies are not supported # Scheme-less proxies are not supported

View File

@ -178,6 +178,8 @@ def clean_proxies(proxies: dict, headers: HTTPHeaderDict):
if proxy_key == 'no': # special case if proxy_key == 'no': # special case
continue continue
if proxy_url is not None: if proxy_url is not None:
if isinstance(proxy_url, typing.Callable):
proxy_url = proxy_url()
# Ensure proxies without a scheme are http. # Ensure proxies without a scheme are http.
try: try:
proxy_scheme = urllib.request._parse_proxy(proxy_url)[0] proxy_scheme = urllib.request._parse_proxy(proxy_url)[0]