Install our own HTTPS handler as well (#1309)
This commit is contained in:
parent
9460db832c
commit
36399e8576
1 changed files with 17 additions and 8 deletions
|
@ -476,7 +476,7 @@ def formatSeconds(secs):
|
||||||
def make_HTTPS_handler(opts):
|
def make_HTTPS_handler(opts):
|
||||||
if sys.version_info < (3,2):
|
if sys.version_info < (3,2):
|
||||||
# Python's 2.x handler is very simplistic
|
# Python's 2.x handler is very simplistic
|
||||||
return compat_urllib_request.HTTPSHandler()
|
return YoutubeDLHandlerHTTPS()
|
||||||
else:
|
else:
|
||||||
import ssl
|
import ssl
|
||||||
context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
|
context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
|
||||||
|
@ -485,7 +485,7 @@ def make_HTTPS_handler(opts):
|
||||||
context.verify_mode = (ssl.CERT_NONE
|
context.verify_mode = (ssl.CERT_NONE
|
||||||
if opts.no_check_certificate
|
if opts.no_check_certificate
|
||||||
else ssl.CERT_REQUIRED)
|
else ssl.CERT_REQUIRED)
|
||||||
return compat_urllib_request.HTTPSHandler(context=context)
|
return YoutubeDLHandlerHTTPS(context=context)
|
||||||
|
|
||||||
class ExtractorError(Exception):
|
class ExtractorError(Exception):
|
||||||
"""Error during info extraction."""
|
"""Error during info extraction."""
|
||||||
|
@ -569,7 +569,8 @@ class ContentTooShortError(Exception):
|
||||||
self.downloaded = downloaded
|
self.downloaded = downloaded
|
||||||
self.expected = expected
|
self.expected = expected
|
||||||
|
|
||||||
class YoutubeDLHandler(compat_urllib_request.HTTPHandler):
|
|
||||||
|
class YoutubeDLHandler_Template: # Old-style class, like HTTPHandler
|
||||||
"""Handler for HTTP requests and responses.
|
"""Handler for HTTP requests and responses.
|
||||||
|
|
||||||
This class, when installed with an OpenerDirector, automatically adds
|
This class, when installed with an OpenerDirector, automatically adds
|
||||||
|
@ -602,8 +603,8 @@ class YoutubeDLHandler(compat_urllib_request.HTTPHandler):
|
||||||
ret.code = code
|
ret.code = code
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def http_request(self, req):
|
def _http_request(self, req):
|
||||||
for h,v in std_headers.items():
|
for h, v in std_headers.items():
|
||||||
if h in req.headers:
|
if h in req.headers:
|
||||||
del req.headers[h]
|
del req.headers[h]
|
||||||
req.add_header(h, v)
|
req.add_header(h, v)
|
||||||
|
@ -618,7 +619,7 @@ class YoutubeDLHandler(compat_urllib_request.HTTPHandler):
|
||||||
del req.headers['Youtubedl-user-agent']
|
del req.headers['Youtubedl-user-agent']
|
||||||
return req
|
return req
|
||||||
|
|
||||||
def http_response(self, req, resp):
|
def _http_response(self, req, resp):
|
||||||
old_resp = resp
|
old_resp = resp
|
||||||
# gzip
|
# gzip
|
||||||
if resp.headers.get('Content-encoding', '') == 'gzip':
|
if resp.headers.get('Content-encoding', '') == 'gzip':
|
||||||
|
@ -632,8 +633,16 @@ class YoutubeDLHandler(compat_urllib_request.HTTPHandler):
|
||||||
resp.msg = old_resp.msg
|
resp.msg = old_resp.msg
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
https_request = http_request
|
|
||||||
https_response = http_response
|
class YoutubeDLHandler(YoutubeDLHandler_Template, compat_urllib_request.HTTPHandler):
|
||||||
|
http_request = YoutubeDLHandler_Template._http_request
|
||||||
|
http_response = YoutubeDLHandler_Template._http_response
|
||||||
|
|
||||||
|
|
||||||
|
class YoutubeDLHandlerHTTPS(YoutubeDLHandler_Template, compat_urllib_request.HTTPSHandler):
|
||||||
|
https_request = YoutubeDLHandler_Template._http_request
|
||||||
|
https_response = YoutubeDLHandler_Template._http_response
|
||||||
|
|
||||||
|
|
||||||
def unified_strdate(date_str):
|
def unified_strdate(date_str):
|
||||||
"""Return a string with the date in the format YYYYMMDD"""
|
"""Return a string with the date in the format YYYYMMDD"""
|
||||||
|
|
Loading…
Reference in a new issue