[utils] Send HTTP/1.1 ALPN extension (#3889)

Some servers may reject requests if not sent (e.g. fingerprinting)

Fixes #3878

Authored by: coletdjnz
This commit is contained in:
coletdev 2022-05-28 15:46:36 +12:00 committed by GitHub
parent 520876fa09
commit 2c6dcb65fb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View 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)