diff options
author | coletdjnz <coletdjnz@protonmail.com> | 2023-10-14 12:33:00 +1300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-13 23:33:00 +0000 |
commit | 8a8b54523addf46dfd50ef599761a81bc22362e6 (patch) | |
tree | f6f7d31d0ee51dfe732d26e26c294829b6c5ed5b /yt_dlp/networking/_urllib.py | |
parent | 700444c23ddb65f618c2abd942acdc0c58c650b1 (diff) |
[rh:requests] Add handler for `requests` HTTP library (#3668)
Adds support for HTTPS proxies and persistent connections (keep-alive)
Closes https://github.com/yt-dlp/yt-dlp/issues/1890
Resolves https://github.com/yt-dlp/yt-dlp/issues/4070
Resolves https://github.com/ytdl-org/youtube-dl/issues/32549
Resolves https://github.com/ytdl-org/youtube-dl/issues/14523
Resolves https://github.com/ytdl-org/youtube-dl/issues/13734
Authored by: coletdjnz, Grub4K, bashonly
Diffstat (limited to 'yt_dlp/networking/_urllib.py')
-rw-r--r-- | yt_dlp/networking/_urllib.py | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/yt_dlp/networking/_urllib.py b/yt_dlp/networking/_urllib.py index 9e2bf33e4..68bab2b08 100644 --- a/yt_dlp/networking/_urllib.py +++ b/yt_dlp/networking/_urllib.py @@ -3,7 +3,6 @@ from __future__ import annotations import functools import http.client import io -import socket import ssl import urllib.error import urllib.parse @@ -24,6 +23,7 @@ from ._helper import ( InstanceStoreMixin, add_accept_encoding_header, create_connection, + create_socks_proxy_socket, get_redirect_method, make_socks_proxy_opts, select_proxy, @@ -40,7 +40,6 @@ from .exceptions import ( ) from ..dependencies import brotli from ..socks import ProxyError as SocksProxyError -from ..socks import sockssocket from ..utils import update_url_query from ..utils.networking import normalize_url @@ -190,25 +189,12 @@ def make_socks_conn_class(base_class, socks_proxy): _create_connection = create_connection def connect(self): - def sock_socket_connect(ip_addr, timeout, source_address): - af, socktype, proto, canonname, sa = ip_addr - sock = sockssocket(af, socktype, proto) - try: - connect_proxy_args = proxy_args.copy() - connect_proxy_args.update({'addr': sa[0], 'port': sa[1]}) - sock.setproxy(**connect_proxy_args) - if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT: # noqa: E721 - sock.settimeout(timeout) - if source_address: - sock.bind(source_address) - sock.connect((self.host, self.port)) - return sock - except socket.error: - sock.close() - raise self.sock = create_connection( - (proxy_args['addr'], proxy_args['port']), timeout=self.timeout, - source_address=self.source_address, _create_socket_func=sock_socket_connect) + (proxy_args['addr'], proxy_args['port']), + timeout=self.timeout, + source_address=self.source_address, + _create_socket_func=functools.partial( + create_socks_proxy_socket, (self.host, self.port), proxy_args)) if isinstance(self, http.client.HTTPSConnection): self.sock = self._context.wrap_socket(self.sock, server_hostname=self.host) |