mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2026-10-16 13:38:07 -07:00
[networking] Fix + decoding in SOCKS proxy credentials (#17728)
Authored by: doe1080
This commit is contained in:
@@ -63,13 +63,13 @@ class TestNetworkingUtils:
|
|||||||
'username': 'user',
|
'username': 'user',
|
||||||
'password': '',
|
'password': '',
|
||||||
}),
|
}),
|
||||||
('socks4://u%40ser:pa%20ss@127.0.0.1:1080', {
|
('socks4://u%40ser+name:pa%20ss+word@127.0.0.1:1080', {
|
||||||
'proxytype': ProxyType.SOCKS4,
|
'proxytype': ProxyType.SOCKS4,
|
||||||
'addr': '127.0.0.1',
|
'addr': '127.0.0.1',
|
||||||
'port': 1080,
|
'port': 1080,
|
||||||
'rdns': False,
|
'rdns': False,
|
||||||
'username': 'u@ser',
|
'username': 'u@ser+name',
|
||||||
'password': 'pa ss',
|
'password': 'pa ss+word',
|
||||||
}),
|
}),
|
||||||
('socks4a://:pa%20ss@127.0.0.1', {
|
('socks4a://:pa%20ss@127.0.0.1', {
|
||||||
'proxytype': ProxyType.SOCKS4A,
|
'proxytype': ProxyType.SOCKS4A,
|
||||||
|
|||||||
@@ -52,25 +52,27 @@ def ssl_load_windows_store_certs(ssl_context, storename):
|
|||||||
|
|
||||||
def make_socks_proxy_opts(socks_proxy):
|
def make_socks_proxy_opts(socks_proxy):
|
||||||
url_components = urllib.parse.urlparse(socks_proxy)
|
url_components = urllib.parse.urlparse(socks_proxy)
|
||||||
if url_components.scheme.lower() == 'socks5':
|
scheme = url_components.scheme.lower()
|
||||||
|
|
||||||
|
if scheme == 'socks5':
|
||||||
socks_type = ProxyType.SOCKS5
|
socks_type = ProxyType.SOCKS5
|
||||||
rdns = False
|
rdns = False
|
||||||
elif url_components.scheme.lower() == 'socks5h':
|
elif scheme == 'socks5h':
|
||||||
socks_type = ProxyType.SOCKS5
|
socks_type = ProxyType.SOCKS5
|
||||||
rdns = True
|
rdns = True
|
||||||
elif url_components.scheme.lower() == 'socks4':
|
elif scheme == 'socks4':
|
||||||
socks_type = ProxyType.SOCKS4
|
socks_type = ProxyType.SOCKS4
|
||||||
rdns = False
|
rdns = False
|
||||||
elif url_components.scheme.lower() == 'socks4a':
|
elif scheme == 'socks4a':
|
||||||
socks_type = ProxyType.SOCKS4A
|
socks_type = ProxyType.SOCKS4A
|
||||||
rdns = True
|
rdns = True
|
||||||
else:
|
else:
|
||||||
raise ValueError(f'Unknown SOCKS proxy version: {url_components.scheme.lower()}')
|
raise ValueError(f'Unknown SOCKS proxy version: {scheme}')
|
||||||
|
|
||||||
def unquote_if_non_empty(s):
|
def unquote_if_non_empty(s):
|
||||||
if not s:
|
if not s:
|
||||||
return s
|
return s
|
||||||
return urllib.parse.unquote_plus(s)
|
return urllib.parse.unquote(s)
|
||||||
return {
|
return {
|
||||||
'proxytype': socks_type,
|
'proxytype': socks_type,
|
||||||
'addr': url_components.hostname,
|
'addr': url_components.hostname,
|
||||||
|
|||||||
Reference in New Issue
Block a user