diff options
author | coletdjnz <coletdjnz@protonmail.com> | 2024-07-14 11:22:43 +1200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-14 11:22:43 +1200 |
commit | 150ecc45d9cacc919550c13b04fd998ac5103a6b (patch) | |
tree | 88f2e04b6e7fdc0d2f49a43984bc1ff0327773b3 /yt_dlp/networking/common.py | |
parent | 8b8b442cb005a8d85315f301615f83fb736b967a (diff) |
[networking] Add `legacy_ssl` request extension (#10448)
Supported by Urllib, Requests and Websockets request handlers. Ignored by CurlCFFI.
Also added couple cookie-related tests.
Authored by: coletdjnz
Diffstat (limited to 'yt_dlp/networking/common.py')
-rw-r--r-- | yt_dlp/networking/common.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/yt_dlp/networking/common.py b/yt_dlp/networking/common.py index a6db16715..e8951c7e7 100644 --- a/yt_dlp/networking/common.py +++ b/yt_dlp/networking/common.py @@ -205,6 +205,7 @@ class RequestHandler(abc.ABC): The following extensions are defined for RequestHandler: - `cookiejar`: Cookiejar to use for this request. - `timeout`: socket timeout to use for this request. + - `legacy_ssl`: Enable legacy SSL options for this request. See legacy_ssl_support. To enable these, add extensions.pop('<extension>', None) to _check_extensions Apart from the url protocol, proxies dict may contain the following keys: @@ -247,10 +248,10 @@ class RequestHandler(abc.ABC): self.legacy_ssl_support = legacy_ssl_support super().__init__() - def _make_sslcontext(self): + def _make_sslcontext(self, legacy_ssl_support=None): return make_ssl_context( verify=self.verify, - legacy_support=self.legacy_ssl_support, + legacy_support=legacy_ssl_support if legacy_ssl_support is not None else self.legacy_ssl_support, use_certifi=not self.prefer_system_certs, **self._client_cert, ) @@ -262,7 +263,8 @@ class RequestHandler(abc.ABC): return float(request.extensions.get('timeout') or self.timeout) def _get_cookiejar(self, request): - return request.extensions.get('cookiejar') or self.cookiejar + cookiejar = request.extensions.get('cookiejar') + return self.cookiejar if cookiejar is None else cookiejar def _get_proxies(self, request): return (request.proxies or self.proxies).copy() @@ -314,6 +316,7 @@ class RequestHandler(abc.ABC): """Check extensions for unsupported extensions. Subclasses should extend this.""" assert isinstance(extensions.get('cookiejar'), (YoutubeDLCookieJar, NoneType)) assert isinstance(extensions.get('timeout'), (float, int, NoneType)) + assert isinstance(extensions.get('legacy_ssl'), (bool, NoneType)) def _validate(self, request): self._check_url_scheme(request) |