diff --git a/yt_dlp/extractor/youtube/_base.py b/yt_dlp/extractor/youtube/_base.py index fbf6f6d09a..c68996eeca 100644 --- a/yt_dlp/extractor/youtube/_base.py +++ b/yt_dlp/extractor/youtube/_base.py @@ -225,6 +225,7 @@ INNERTUBE_CLIENTS = { # "Made for kids" videos aren't available with this client # Using a clientVersion>1.65 may return SABR streams only # Since 2026.07, intermittent/selective POT enforcement has been observed for non-HLS formats + # Since 2026.08.17, ALL formats (including live HLS and itag 18) are 403'd with version 1.65.10 'android_vr': { 'INNERTUBE_CONTEXT': { 'client': { diff --git a/yt_dlp/extractor/youtube/_video.py b/yt_dlp/extractor/youtube/_video.py index dc3da4eeaf..b6db2e99b8 100644 --- a/yt_dlp/extractor/youtube/_video.py +++ b/yt_dlp/extractor/youtube/_video.py @@ -140,8 +140,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor): _RETURN_TYPE = 'video' # XXX: How to handle multifeed? _SUBTITLE_FORMATS = ('json3', 'srv1', 'srv2', 'srv3', 'ttml', 'srt', 'vtt') - _DEFAULT_CLIENTS = ('visionos', 'android_vr', 'web') - _DEFAULT_JSLESS_CLIENTS = ('visionos', 'android_vr') + _DEFAULT_CLIENTS = ('visionos', 'web') + _DEFAULT_JSLESS_CLIENTS = ('visionos',) _DEFAULT_AUTHED_CLIENTS = ('tv_downgraded', 'web') # Premium does not require POT (except for subtitles) _DEFAULT_PREMIUM_CLIENTS = ('tv_downgraded', 'web_creator', 'web')