Repository: yt-dlp
Issue: [Youtube] Immediate HTTP Error 403 on download
Labels: site-bug,needs-investigating,site:youtube

### 🚨 [click here to see the current status of this issue](https://github.com/yt-dlp/yt-dlp/issues/11868#issuecomment-2560431566) 🚨

- [X] I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field

### Checklist

- [X] I'm reporting that yt-dlp is broken on a **supported** site
- [X] I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required

### Region

Germany

### Provide a description that is worded well enough to be understood

Downloading videos currently results in an 403 error. 
What I found out is, that the video gets played in browser when being logged in, when trying to start the videos in a private window without cookies, the video doesn't start without an error. However, the ads do play. 

### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [ ] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
yt-dlp -vU https://www.youtube.com/watch?v=l35ok-7n2IU
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=l35ok-7n2IU']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds [d298693b1] (win_exe)
[debug] Python 3.10.11 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg 2024-05-13-git-37db0454e4-essentials_build-www.gyan.dev (setts), ffprobe 2024-05-13-git-37db0454e4-essentials_build-www.gyan.dev, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.21.0, brotli-1.1.0, certifi-2024.12.14, curl_cffi-0.5.10, mutagen-1.47.0, requests-2.32.3, sqlite3-3.40.1, urllib3-2.2.3, websockets-14.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Loaded 1837 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2024.12.15.232913 from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=l35ok-7n2IU
[youtube] l35ok-7n2IU: Downloading webpage
[youtube] l35ok-7n2IU: Downloading ios player API JSON
[youtube] l35ok-7n2IU: Downloading mweb player API JSON
[debug] [youtube] Extracting signature function js_03dbdfab_107
[debug] Loading youtube-sigfuncs.js_03dbdfab_107 from cache
[debug] Loading youtube-nsig.03dbdfab from cache
[debug] [youtube] Decrypted nsig aV2SlxDn5CNaYgrXF => IlSumDx_jM-HcQ
[debug] Loading youtube-nsig.03dbdfab from cache
[debug] [youtube] Decrypted nsig DD96eHcKsL6Qq9E90 => hxviA3B9kS_9QA
[debug] [youtube] Extracting signature function js_03dbdfab_103
[debug] Loading youtube-sigfuncs.js_03dbdfab_103 from cache
[youtube] l35ok-7n2IU: Downloading m3u8 information
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec, channels, acodec, lang, proto, size, br, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] l35ok-7n2IU: Downloading 1 format(s): 313+251
[debug] Invoking http downloader on "https://rr3---sn-8vq54voxqx-cxgs.googlevideo.com/videoplayback?expire=1734837482&ei=ijBnZ5bkLN7t6dsPxZnjqA8&ip=2a02%3A8109%3A9d8f%3A3e00%3A693d%3A9ea1%3A7054%3A8015&id=o-AD-6zsiRz7FIC1te5s18LyYs5Y8ksIOFcZIi9DwV-4eZ&itag=313&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&met=1734815882%2C&mh=OR&mm=31%2C29&mn=sn-8vq54voxqx-cxgs%2Csn-i5h7lnll&ms=au%2Crdu&mv=m&mvi=3&pl=43&rms=au%2Cau&initcwndbps=3333750&bui=AfMhrI_ngaE8pa7Haos9jOTZ3q5auYyyVfDQXr5jsroWyEFRCr9GmkX8qUqEH8wbn8V2hlhS9c3-WuEV&spc=x-caUMh6H49vmv_2Nq1W3Z-hU6SkreEU_haD9Rl720YYO1YqHc5O&vprv=1&svpuc=1&mime=video%2Fwebm&rqh=1&gir=yes&clen=6804056254&dur=3879.720&lmt=1734697485233688&mt=1734815349&fvip=3&keepalive=yes&fexp=51326932%2C51335594%2C51371294&c=IOS&txp=4432434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAPI4tNsuKx7xFM9mNgrxyyp8hSGN0-5CbzTuHZVdC9jXAiEA8wF4h9cuQjRMIDaEFCRCiwLDkWelVq5pslq_8uHVYPg%3D&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=AGluJ3MwRgIhAJJ-X3tKgTINiH5L18EpIN5fb92EiSjLW5srWP1fl6CmAiEAncDu51bsexappSLmrSkwFZ4ZUfKzdhk4uOfkHq8jU8Q%3D"
ERROR: unable to download video data: HTTP Error 403: Forbidden
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 3461, in process_info
  File "yt_dlp\YoutubeDL.py", line 3199, in dl
  File "yt_dlp\downloader\common.py", line 464, in download
  File "yt_dlp\downloader\http.py", line 367, in real_download
  File "yt_dlp\downloader\http.py", line 118, in establish_connection
  File "yt_dlp\YoutubeDL.py", line 4162, in urlopen
  File "yt_dlp\networking\common.py", line 117, in send
  File "yt_dlp\networking\_helper.py", line 208, in wrapper
  File "yt_dlp\networking\common.py", line 340, in send
  File "yt_dlp\networking\_requests.py", line 365, in _send
yt_dlp.networking.exceptions.HTTPError: HTTP Error 403: Forbidden
```