diff --git a/yt_dlp/extractor/generic.py b/yt_dlp/extractor/generic.py index d44e6d3c4b..7c7bb71a74 100644 --- a/yt_dlp/extractor/generic.py +++ b/yt_dlp/extractor/generic.py @@ -821,13 +821,17 @@ class GenericIE(InfoExtractor): 'Referer': smuggled_data.get('referer'), }), impersonate=impersonate) except ExtractorError as e: - if not (isinstance(e.cause, HTTPError) and e.cause.status == 403 - and e.cause.response.get_header('cf-mitigated') == 'challenge' - and e.cause.response.extensions.get('impersonate') is None): + if not isinstance(e.cause, HTTPError) or e.cause.status != 403: + raise + res = e.cause.response + already_impersonating = res.extensions.get('impersonate') is not None + if already_impersonating or ( + res.get_header('cf-mitigated') != 'challenge' + and b'