aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/utils.py
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2016-05-03 15:15:32 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2016-05-10 14:51:38 +0800
commit51fb4995a5242c0edca09167cf8c4b050cf5a186 (patch)
tree6405ca1394b088e16e0c08c559b58ba23b2e9676 /youtube_dl/utils.py
parent9e9cd7248d387954d1009087ac300ee3ff6a9766 (diff)
downloadyoutube-dl-51fb4995a5242c0edca09167cf8c4b050cf5a186.tar.xz
[utils] Register SOCKS protocols in urllib and support SOCKS4A
Diffstat (limited to 'youtube_dl/utils.py')
-rw-r--r--youtube_dl/utils.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index b2e4a2dfb..c9702fd93 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -61,6 +61,13 @@ from .socks import (
)
+def register_socks_protocols():
+ # "Register" SOCKS protocols
+ for scheme in ('socks', 'socks4', 'socks4a', 'socks5'):
+ if scheme not in compat_urlparse.uses_netloc:
+ compat_urlparse.uses_netloc.append(scheme)
+
+
# This is not clearly defined otherwise
compiled_regex_type = type(re.compile(''))
@@ -870,6 +877,8 @@ def make_socks_conn_class(base_class, socks_proxy):
socks_type = ProxyType.SOCKS5
elif url_components.scheme.lower() in ('socks', 'socks4'):
socks_type = ProxyType.SOCKS4
+ elif url_components.scheme.lower() == 'socks4a':
+ socks_type = ProxyType.SOCKS4A
proxy_args = (
socks_type,
@@ -2738,7 +2747,7 @@ class PerRequestProxyHandler(compat_urllib_request.ProxyHandler):
if proxy == '__noproxy__':
return None # No Proxy
- if compat_urlparse.urlparse(proxy).scheme.lower() in ('socks', 'socks4', 'socks5'):
+ if compat_urlparse.urlparse(proxy).scheme.lower() in ('socks', 'socks4', 'socks4a', 'socks5'):
req.add_header('Ytdl-socks-proxy', proxy)
# youtube-dl's http/https handlers do wrapping the socket with socks
return None