diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2013-05-04 12:19:02 +0200 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2013-05-04 12:22:56 +0200 | 
| commit | ea6d901e51c71714eb0f1c34594e2f50e20c7d0d (patch) | |
| tree | db0eb3300d820fa2e7019458f1381f751c3729ec | |
| parent | 4539dd30e6c00a50760094e7a41744843d659cb1 (diff) | |
Add --no-check-certificate (#814)
| -rw-r--r-- | youtube_dl/__init__.py | 3 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 14 | 
2 files changed, 16 insertions, 1 deletions
| diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index b8a82f932..05cb6e36a 100644 --- 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 index 4ec0ebfe1..f2342b10a 100644 --- 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): | 
