aboutsummaryrefslogtreecommitdiff
path: root/yt_dlp/networking/_urllib.py
diff options
context:
space:
mode:
authorcoletdjnz <coletdjnz@protonmail.com>2023-10-14 12:33:00 +1300
committerGitHub <noreply@github.com>2023-10-13 23:33:00 +0000
commit8a8b54523addf46dfd50ef599761a81bc22362e6 (patch)
treef6f7d31d0ee51dfe732d26e26c294829b6c5ed5b /yt_dlp/networking/_urllib.py
parent700444c23ddb65f618c2abd942acdc0c58c650b1 (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.py26
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)