From 35f4f764a786685ea45d84abe1cf1ad3847f4c97 Mon Sep 17 00:00:00 2001 From: coletdjnz Date: Sun, 21 Jan 2024 10:03:33 +1300 Subject: [rh:requests] Apply `remove_dot_segments` to absolute redirect locations Fixes https://github.com/yt-dlp/yt-dlp/issues/9020 Authored by: coletdjnz --- yt_dlp/networking/_requests.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'yt_dlp/networking/_requests.py') diff --git a/yt_dlp/networking/_requests.py b/yt_dlp/networking/_requests.py index e129110ca..00e4bdb49 100644 --- a/yt_dlp/networking/_requests.py +++ b/yt_dlp/networking/_requests.py @@ -8,6 +8,7 @@ import warnings from ..dependencies import brotli, requests, urllib3 from ..utils import bug_reports_message, int_or_none, variadic +from ..utils.networking import normalize_url if requests is None: raise ImportError('requests module is not installed') @@ -199,6 +200,10 @@ class RequestsSession(requests.sessions.Session): prepared_request.method = new_method + # Requests fails to resolve dot segments on absolute redirect locations + # See: https://github.com/yt-dlp/yt-dlp/issues/9020 + prepared_request.url = normalize_url(prepared_request.url) + def rebuild_auth(self, prepared_request, response): # HACK: undo status code change from rebuild_method, if applicable. # rebuild_auth runs after requests would remove headers/body based on status code -- cgit v1.2.3