]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/networking/_requests.py
[rh:requests] Apply `remove_dot_segments` to absolute redirect locations
[yt-dlp.git] / yt_dlp / networking / _requests.py
index e129110ca471afcf61aa84f716fb17cd643fd09d..00e4bdb490cdf03c701a4849d5bcaf1dfbdb9833 100644 (file)
@@ -8,6 +8,7 @@
 
 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 @@ def rebuild_method(self, prepared_request, response):
 
         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