]> jfr.im git - yt-dlp.git/commitdiff
[utils] Send HTTP/1.1 ALPN extension (#3889)
authorcoletdev <redacted>
Sat, 28 May 2022 03:46:36 +0000 (15:46 +1200)
committerGitHub <redacted>
Sat, 28 May 2022 03:46:36 +0000 (03:46 +0000)
Some servers may reject requests if not sent (e.g. fingerprinting)

Fixes #3878

Authored by: coletdjnz

yt_dlp/utils.py

index 9da8bb29330d53dd3d762018630cfa6c706ed0cc..b0300b724b0cbee9cd8eac42fc21d9a92103c978 100644 (file)
@@ -948,6 +948,13 @@ def make_HTTPS_handler(params, **kwargs):
                 password=params.get('client_certificate_password'))
         except ssl.SSLError:
             raise YoutubeDLError('Unable to load client certificate')
+
+    # Some servers may reject requests if ALPN extension is not sent. See:
+    # https://github.com/python/cpython/issues/85140
+    # https://github.com/yt-dlp/yt-dlp/issues/3878
+    with contextlib.suppress(NotImplementedError):
+        context.set_alpn_protocols(['http/1.1'])
+
     return YoutubeDLHTTPSHandler(params, context=context, **kwargs)