diff --git a/test/test_networking_utils.py b/test/test_networking_utils.py index a2feacba71..d3b3a688d4 100644 --- a/test/test_networking_utils.py +++ b/test/test_networking_utils.py @@ -63,13 +63,13 @@ class TestNetworkingUtils: 'username': 'user', '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, 'addr': '127.0.0.1', 'port': 1080, 'rdns': False, - 'username': 'u@ser', - 'password': 'pa ss', + 'username': 'u@ser+name', + 'password': 'pa ss+word', }), ('socks4a://:pa%20ss@127.0.0.1', { 'proxytype': ProxyType.SOCKS4A, diff --git a/yt_dlp/networking/_helper.py b/yt_dlp/networking/_helper.py index c75306bfae..809641a3e9 100644 --- a/yt_dlp/networking/_helper.py +++ b/yt_dlp/networking/_helper.py @@ -52,25 +52,27 @@ def ssl_load_windows_store_certs(ssl_context, storename): def make_socks_proxy_opts(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 rdns = False - elif url_components.scheme.lower() == 'socks5h': + elif scheme == 'socks5h': socks_type = ProxyType.SOCKS5 rdns = True - elif url_components.scheme.lower() == 'socks4': + elif scheme == 'socks4': socks_type = ProxyType.SOCKS4 rdns = False - elif url_components.scheme.lower() == 'socks4a': + elif scheme == 'socks4a': socks_type = ProxyType.SOCKS4A rdns = True 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): if not s: return s - return urllib.parse.unquote_plus(s) + return urllib.parse.unquote(s) return { 'proxytype': socks_type, 'addr': url_components.hostname,