youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit ea6d901e51c71714eb0f1c34594e2f50e20c7d0d
parent 4539dd30e6c00a50760094e7a41744843d659cb1
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Sat,  4 May 2013 12:19:02 +0200

Add --no-check-certificate (#814)

Diffstat:
Myoutube_dl/__init__.py | 3++-
Myoutube_dl/utils.py | 14++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py @@ -149,6 +149,7 @@ def parseOpts(overrideArguments=None): action='store_true', dest='list_extractors', help='List all supported extractors and the URLs they would handle', default=False) general.add_option('--proxy', dest='proxy', default=None, help='Use the specified HTTP/HTTPS proxy', metavar='URL') + general.add_option('--no-check-certificate', action='store_true', dest='no_check_certificate', default=False, help='Suppress HTTPS certificate validation.') general.add_option('--test', action='store_true', dest='test', default=False, help=optparse.SUPPRESS_HELP) selection.add_option('--playlist-start', @@ -395,7 +396,7 @@ def _real_main(argv=None): if 'http' in proxies and 'https' not in proxies: proxies['https'] = proxies['http'] proxy_handler = compat_urllib_request.ProxyHandler(proxies) - https_handler = compat_urllib_request.HTTPSHandler() + https_handler = make_HTTPS_handler(opts) opener = compat_urllib_request.build_opener(https_handler, proxy_handler, cookie_processor, YoutubeDLHandler()) compat_urllib_request.install_opener(opener) socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py @@ -438,6 +438,20 @@ def formatSeconds(secs): else: return '%d' % secs +def make_HTTPS_handler(opts): + if sys.version_info < (3,2): + # Python's 2.x handler is very simplistic + return compat_urllib_request.HTTPSHandler() + else: + import ssl + context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) + context.set_default_verify_paths() + + context.verify_mode = (ssl.CERT_NONE + if opts.no_check_certificate + else ssl.CERT_REQUIRED) + return compat_urllib_request.HTTPSHandler(context=context) + class ExtractorError(Exception): """Error during info extraction.""" def __init__(self, msg, tb=None):