yt-dlp icon indicating copy to clipboard operation
yt-dlp copied to clipboard

[youtube] `web` only has SABR formats

Open coletdjnz opened this issue 1 year ago • 44 comments

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)
  • [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
  • [x] I've searched known issues, the FAQ, and the bugtracker for similar issues including closed ones. DO NOT post duplicates
  • [ ] I've read about sharing account credentials and I'm willing to share it if required

Region

Any

Provide a description that is worded well enough to be understood

It appears there has been a rollout for the WEB client where YouTube has removed the playback links for adaptiveFormats in the player response. This leaves only the SABR streaming URL for playback (which is what YouTube has been using for a while now)

SABR is a custom streaming protocol built by YouTube.

Provide verbose output that clearly demonstrates the problem

  • [x] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
  • [x] 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

(Example log from user, redacted)

yt-dlp --cookies-from-browser firefox -S vcodec:h264,res,acodec:m4a "https://www.youtube.com/watch?v=aqz-KE-bpKQ" -vU
[debug] Command-line config: ['--cookies-from-browser', 'firefox', '-S', 'vcodec:h264,res,acodec:m4a', 'https://www.youtube.com/watch?v=aqz-KE-bpKQ', '-vU']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] from yt-dlp/yt-dlp-nightly-builds [4985a4041] (win_exe)
[debug] Python 3.10.11 (CPython AMD64 64bit) - Windows-10-10.0.22631-SP0 (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg (setts), ffprobe N
[debug] Optional libraries: Cryptodome-3.21.0, brotli-1.1.0, certifi-2025.01.31, curl_cffi-0.5.10, mutagen-1.47.0, requests-2.32.3, sqlite3-3.40.1, urllib3-2.3.0, websockets-15.0
[debug] Proxy map: {}
Extracting cookies from firefox
[debug] Extracting cookies from: "C:\Users\PC\AppData\Roaming\Mozilla\Firefox\Profiles\XXX.default-release\cookies.sqlite"
Extracted 2074 cookies from firefox
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Loaded 1841 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: [email protected] from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date ([email protected] from yt-dlp/yt-dlp-nightly-builds)
[debug] [youtube] Found YouTube account cookies
[youtube] Extracting URL: https://www.youtube.com/watch?v=aqz-KE-bpKQ
[youtube] aqz-KE-bpKQ: Downloading webpage
[youtube] aqz-KE-bpKQ: Downloading tv client config
[youtube] aqz-KE-bpKQ: Downloading player d50f54ef
[youtube] aqz-KE-bpKQ: Downloading tv player API JSON
[debug] Loading youtube-nsig.d50f54ef from cache
[debug] [youtube] Decrypted nsig XXX => XXX
[debug] Loading youtube-nsig.d50f54ef from cache
[debug] [youtube] Decrypted nsig XXX-2c => XXX
[debug] [youtube] aqz-KE-bpKQ: web client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=web.gvs+XXX". For more information, refer to  https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot"
[debug] Sort order given by user: vcodec:h264, res, acodec:m4a
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, vcodec:h264(7), res, acodec:m4a(9), quality, fps, hdr:12(7), source, channels, lang, proto, size, br, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] aqz-KE-bpKQ: Downloading 1 format(s): 18
[debug] Invoking http downloader on "https://rr5---sn-ab5sznzy.googlevideo.com/videoplayback?REDACTED"
[debug] File locking is not supported. Proceeding without locking
[download] Destination: Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [aqz-KE-bpKQ].mp4

Another example: https://old.reddit.com/r/youtubedl/comments/1iwg2fj/ytdl_not_seeing_full_quality_of_videos/

coletdjnz avatar Feb 26 '25 06:02 coletdjnz

Update as there will be a warning in yt-dlp for users of the web client pointing to this issue - as of past 24 hours the web client has removed all https formats (adaptiveFormats) and only has SABR protocol streaming url. Currently the tv client is not impacted.

(~~This is not SSAP related and we will update the warning pointing to a new issue~~ migrating this one since the code already points to it)

coletdjnz avatar Apr 29 '25 05:04 coletdjnz

Update as there will be a warning in yt-dlp for users of the web client pointing to this issue - as of past 24 hours the web client has removed all https formats (adaptiveFormats) and only has SABR protocol streaming url. Currently the tv client is not impacted.

(This is not SSAP related and we will update the warning pointing to a new issue)

Will YTdlp not support SABR? How do we download videos?

Figim avatar Apr 29 '25 05:04 Figim

Update as there will be a warning in yt-dlp for users of the web client pointing to this issue - as of past 24 hours the web client has removed all https formats (adaptiveFormats) and only has SABR protocol streaming url. Currently the tv client is not impacted.

(This is not SSAP related and we will update the warning pointing to a new issue)

Will YTdlp not support SABR? How do we download videos?

We plan to, a SABR downloader is in development but still quite a bit of work to do

coletdjnz avatar Apr 29 '25 05:04 coletdjnz

is in development but still quite a bit of work to do

Is there any way to address this problem at the moment to keep being able to download videos?

quasa0 avatar Apr 29 '25 08:04 quasa0

is in development but still quite a bit of work to do

Is there any way to address this problem at the moment to keep being able to download videos?

You can try use mweb instead of web if you can't use the default tv or ios (--extractor-args "youtube:player-client=default,mweb")

Note you'll also need to supply a PO Token - If retrieving manually as on the wiki, I think it should be the same process as web (yet to confirm). --extractor-args "youtube:player-client=default,mweb;po_token=mweb.gvs+XXX"

coletdjnz avatar Apr 29 '25 09:04 coletdjnz

is in development but still quite a bit of work to do

Is there any way to address this problem at the moment to keep being able to download videos?

You can try use mweb instead of web if you can't use the default tv or ios (--extractor-args "youtube:player-client=default,mweb")

Note you'll also need to supply a PO Token - If retrieving manually as on the wiki, I think it should be the same process as web (yet to confirm). --extractor-args "youtube:player-client=default,mweb;po_token=mweb.gvs+XXX"

Hello! Thank you for your time and support. It seems to work the same when using --extractor-args "youtube:player-client=tv_embedded", but sometimes this error happens: "Playback on other websites has been disabled by the video owner". Is there any way to get around it when using yt-dlp with cookies?

eymonk avatar Apr 29 '25 12:04 eymonk

Is there any way to get around it when using yt-dlp with cookies?

Try mweb with PO token, as cole said above

Or you could try web_creator (with a PO token as well)

bashonly avatar Apr 29 '25 17:04 bashonly

Is there any way to get around it when using yt-dlp with cookies?

Try mweb with PO token, as cole said above

Or you could try web_creator, which didn't need a PO token last time I checked. It will only work with logged-in cookies though

Tried change client to "web_creator" - got only 18 format available.

Actually, sometimes problem can be solved by setting "right" cookie, because using same ip i tried to set cookie from different accounts - with some of them everything worked good (all accounts were checked manually to have access and play youtube videos). Don't know, maybe this helps somehow to someone...

Ok, tomorrow will try to wrap my head around how to use PO token (because I use yt-dlp on remote ubuntu server).

Thank you very much for your suggestions and replies anyway.

eymonk avatar Apr 29 '25 19:04 eymonk

Could a solution be possible for SSAP? 😟

Figim avatar Apr 30 '25 04:04 Figim

Tried change client to "web_creator" - got only 18 format available.

Can you send a --verbose log please?

gamer191 avatar Apr 30 '25 05:04 gamer191

Tried change client to "web_creator" - got only 18 format available.

Can you send a --verbose log please?

I use yt-dlp on nodejs server via "youtube-dl-exec" wrapper, tried to set "verbose: true" in api params (usually if params are wrong wrapper throws error: "yt-dlp: error: no such option", I did't got such error), but got just casual response with video info, formats etc. Still on web_creator got several storyboard? formats only and 18 format only. Thus, sorry, don't know how to provide verbose log in my case, tried several times.

eymonk avatar Apr 30 '25 06:04 eymonk

I was mistaken above; web_creator requires a PO token, so if you didn't pass one that is why you could only get format 18

bashonly avatar Apr 30 '25 06:04 bashonly

I would like to know which method I should choose when I have to provide cookies:

  1. web.gvs potoken + tv client
  2. mweb potoken + mweb
    Or are there other options available? Which potoken should I obtain, and which client should I use?

assassinliujie avatar Apr 30 '25 15:04 assassinliujie

I have to say, this PO Token stuff is ridiculous. I tried following the PO Token Guide, and it simply doesn't reflect what I'm seeing in the Network tab of the Developer Console.

I see stuff like this: https://play.google.com/log?hasfast=true&auth=SAPISIDHASH+REDACTED+SAPISID1PHASH+REDACTEDe+SAPISID3PHASH+REDACTED&authuser=0&format=json

And this: https://rr1---sn-o097znzk.googlevideo.com/videoplayback?expire=1746083975&ei=JswSaL32PMmLsfIPh5OBqAI&ip=2601%3A645%3A8900%3Aef90%3A%3A5583&id=o-AOEBzdNd7CR-0Kb-Ibk0rdoslu83EHxkGN9G-u0JdQ_f&itag=243&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&met=1746062375%2C&mh=zE&mm=31%2C29&mn=sn-o097znzk%2Csn-n4v7snly&ms=au%2Crdu&mv=m&mvi=1&pl=34&rms=au%2Cau&pcm2=yes&initcwndbps=4690000&siu=1&bui=AecWEAbaXnc0aUwn_WgCcTQPVeDeJeK5RAYKpiaONQO6VFeCQrmruiWZEImsd36g72UW5L_4Yg&spc=wk1kZugSRw5-aVQ6koIvt__wLnErmEkBCfWJC7TNJnnut7do9MNv-uJmw56dqAsYs_ADVNYn-48pLcrp&vprv=1&svpuc=1&mime=video%2Fwebm&ns=y3ceGNjQN1_PEtkWgFq73ScQ&rqh=1&gir=yes&clen=5702544&dur=173.080&lmt=1706174139928439&mt=1746061985&fvip=3&keepalive=yes&fexp=51466698&c=WEB_REMIX&sefc=1&txp=4437434&n=CkD7HmTFqAH0SQ&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cpcm2%2Csiu%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=met%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=ACuhMU0wRQIgH2n6rmeETFRBfJZ20-fkNBhBAWe8IJGWmCLHwqS8V1oCIQDYAaXw8FLqTw5oQfCgwJWkCzjg3PEhAIsTXQ-cohWg2w%3D%3D&alr=yes&sig=AJfQdSswRQIhAMRvzivHIn_Xrcvqe_C1cD7sfMOe0vk6yNXKT-iLsjaIAiBC6Zq2tku9NUyhhHsFoZu3_OUbutGC9TCAilgYpCOkmQ%3D%3D&cpn=tJZ7oJ-avFUddeEf&cver=1.20250428.03.00&range=4854593-5702543&rn=14&rbuf=113007&pot=MluKwLxJHsKSaYr4gTs4s4VZ1fYg8S2mBuA4tQjHSjaxB2Jj8x35fD2-b9V-21FTWHdxZyRfVgi5FdX0xrV0Nv6P_Iz9iAqvbhIB6KZajrQlOw4P6zHBMA5J_Xf5&ump=1&srfvp=1

Where the hell is the PO token in that mess? Is it this thing: pot=MluKwLxJHsKSaYr4gTs4s4VZ1fYg8S2mBuA4tQjHSjaxB2Jj8x35fD2-b9V-21FTWHdxZyRfVgi5FdX0xrV0Nv6P_Iz9iAqvbhIB6KZajrQlOw4P6zHBMA5J_Xf5

Do we have to pass that for every individual video? That's utterly non-workable.

I looked at the PO token providers and token plugins, but it seems to me a very technical matter. Is there a How To somewhere that goes step b step on how to deal with this situation?

richardstevenhack avatar May 01 '25 01:05 richardstevenhack

Well, this is weird. Just updated to the latest [today] version - and suddenly the video that was giving me 403 is downloading...

Did you guys just fix this?

richardstevenhack avatar May 01 '25 01:05 richardstevenhack

I see stuff like this:

@richardstevenhack Be careful what you publicly share. The play.google.com URL you posted may have contained sensitive cookie data. I've since redacted it, but it still exists in email/webhook notifications, etc. I would suggest signing out of all current Youtube sessions ASAP.

Where the hell is the PO token in that mess? Is it this thing: pot=MluKwLxJHsKSaYr4gTs4s4VZ1fYg8S2mBuA4tQjHSjaxB2Jj8x35fD2-b9V-21FTWHdxZyRfVgi5FdX0xrV0Nv6P_Iz9iAqvbhIB6KZajrQlOw4P6zHBMA5J_Xf5

Yes

Do we have to pass that for every individual video? That's utterly non-workable.

If you've grabbed the correct PO token, it should stay alive for approximately 12 hours and work with any video. You will need to pass it with every invocation of yt-dlp, though.

I looked at the PO token providers and token plugins, but it seems to me a very technical matter. Is there a How To somewhere that goes step b step on how to deal with this situation?

https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide for manual PO token extraction (though it needs to be updated), or see the documentation for the PO token provider you want to use. yt-dlp does not develop, maintain, or provide support for any PO token providers currently.

Did you guys just fix this?

No, but keep in mind that YT is a moving target. They are constantly rolling out and rolling back new experiments, restrictions, A/B testing, etc. They treat the users like lab rats. Without seeing a verbose log of your exact problem I can't really tell you anything about what is or isn't happening for you.


And please, let's try to keep the comments on-topic in this issue. If you aren't providing new information about forced SABR on the web client, then find a more appropriate channel to ask for help or air your grievances (such as the yt-dlp discord server, where there are several maintainers, developers and helpful folks who can give you realtime answers)

bashonly avatar May 01 '25 04:05 bashonly

is in development but still quite a bit of work to do

Is there any way to address this problem at the moment to keep being able to download videos?

You can try use mweb instead of web if you can't use the default tv or ios (--extractor-args "youtube:player-client=default,mweb")

Note you'll also need to supply a PO Token - If retrieving manually as on the wiki, I think it should be the same process as web (yet to confirm). --extractor-args "youtube:player-client=default,mweb;po_token=mweb.gvs+XXX"

So I made this account to say this...I decided to copy that quoted extractor_args directly into a batch script me and ChatGPT were making that was to originally to circumvent 4K Video Downloader+ not ordering playlists properly and somehow that invadid PO Token argument has caused YT-DLP to duck/weave past the DRM and SABR and download the video format I wanted instead of the 360p fallback (299+140 or closests possible H.264 + AAC match)

Extracting cookies from firefox Extracted 1712 cookies from firefox [youtube+GetPOT] Extracting URL: https://www.youtube.com/watch?v=ergADTfYmP0 [youtube+GetPOT] ergADTfYmP0: Downloading webpage [youtube+GetPOT] ergADTfYmP0: Downloading tv client config [GetPOT] BgUtilScript: Generating POT via script: C:\Users<USER>\bgutil-ytdlp-pot-provider\server\build\generate_once.js [GetPOT] BgUtilScript: Generating POT via script: C:\Users<USER>\bgutil-ytdlp-pot-provider\server\build\generate_once.js [youtube+GetPOT] ergADTfYmP0: Downloading tv player API JSON [GetPOT] BgUtilScript: Generating POT via script: C:\Users<USER>\bgutil-ytdlp-pot-provider\server\build\generate_once.js [GetPOT] BgUtilScript: Generating POT via script: C:\Users<USER>\bgutil-ytdlp-pot-provider\server\build\generate_once.js [GetPOT] BgUtilScript: Generating POT via script: C:\Users<USER>\bgutil-ytdlp-pot-provider\server\build\generate_once.js WARNING: [youtube+GetPOT] Invalid po_token configuration for mweb client: gvs PO Token should be a base64url-encoded string. [GetPOT] BgUtilScript: Generating POT via script: C:\Users<USER>l\bgutil-ytdlp-pot-provider\server\build\generate_once.js [youtube+GetPOT] ergADTfYmP0: Downloading mweb player API JSON WARNING: [youtube+GetPOT] ergADTfYmP0: Some tv client https formats have been skipped as they are DRM protected. Your account may have an experiment that applies DRM to all videos on the tv client. See https://github.com/yt-dlp/yt-dlp/issues/12563 for more details. WARNING: [youtube+GetPOT] ergADTfYmP0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details [info] ergADTfYmP0: Downloading 1 format(s): 299+140

No idea how this worked...but it's working so I'm going to leave as is and hopefully I can finish my MASS archiving of YouTube content before YT pulls another DRM related stunt...figures I'd go on a huge online archiving crusade just a few weeks before YT decides to go on it's own polar opposite crusade...

Oh and looking at this...do I even need that node.js server running for the POT Provider? Eh I'll keep it running anyway...

ghost avatar May 01 '25 12:05 ghost

@MichBrit I like your optimism but unfortunately it’s actually just ignoring the invalid PoToken you provided and generating its own PoToken using your POT provider

gamer191 avatar May 01 '25 13:05 gamer191

@MichBrit I like your optimism but unfortunately it’s actually just ignoring the invalid PoToken you provided and generating its own PoToken using your POT provider

I figured something else was going on 😅

Yet somehow it was failing before and just grabbing 360p without the extractor arguments. Maybe because I'm too laser focused on the extraction method I'm failing to see the bigger picture such as that POT Providor server...but it was working two days ago then suddenly didn't.

TLDR: Disregard my mad inane ramblings, thought I came across something but turns out I just don't need the server running...I think...

ghost avatar May 01 '25 13:05 ghost

I'm going to operate on the assumption that YouTube will shortly be no longer usable for my purposes.

I'm not going to be running various "servers" just to get a "token" that allows me to continue downloading - especially when so far 99 percent of the videos I download are still downloading. It's just every other day that I get "403 forbidden" on a couple videos. And five minutes later, that video downloads anyway... YouTube seems to be doing all this at utter random.

Lately I've taken to simply taking the video URL over to NoteBookLM and giving Gemini a prompt to summarize it. This doesn't work for videos where I need to SEE what's going on, but a lot of my videos are "informational", so it helps to deal with the odd video that doesn't download. Let's see YouTube refuse their parent company access...

I assume YouTube will eventually break yt-dlp for good. No matter how good you guys are (and you've been very good so far), YouTube controls those videos. The fact that you have to toss off support for this issue to a bunch of "POT servers" maintained by other people pretty much proves that.

Eventually, AI video models are going to be able to view YouTube Videos directly and reproduce them - possibly even locally - and then we won't need yt-dlp. The amusing thing is that it will likely be a Google Gemini model (or a Chinese one) that does this.

richardstevenhack avatar May 01 '25 18:05 richardstevenhack

Hello, I was able to download some videos till yesterday but now suddenly i couldn't download and get these following errors

WARNING: [youtube] 1rmZLKHNk94: Some tv client https formats have been skipped as they are DRM protected. Your account may have an experiment that applies DRM to all videos on the tv client. See https://github.com/yt-dlp/yt-dlp/issues/12563 for more details. WARNING: [youtube] 1rmZLKHNk94: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details ERROR: [youtube] 1rmZLKHNk94: Requested format is not available. Use --list-formats for a list of available formats

I have attached the code that i was using below, yt-dlp --cookies "D:\Python programs\Youtube downloader\cookies.txt" -f "bestvideo[height<=1080]+bestaudio" --merge-output-format mp4 --add-metadata --output "D:\Python programs\Youtube downloader%(title)s-%(id)s.%(ext)s" --batch-file "D:\Python programs\Youtube downloader\video_urls.txt"

Are there any resolutions for this at the moment? Thanks in advance.

Ramkkrish avatar May 03 '25 04:05 Ramkkrish

The workaround is found in this above comment: https://github.com/yt-dlp/yt-dlp/issues/12482#issuecomment-2838060005

Follow https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide except use the PO token with the mweb client instead of the web client

bashonly avatar May 03 '25 05:05 bashonly

The workaround is found in this above comment: #12482 (comment)

Follow https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide except use the PO token with the mweb client instead of the web client

Should we use cookies when extracting via mweb+POtoken?

eymonk avatar May 03 '25 13:05 eymonk

By the way, I tried to use yt-dlp with PO token. What changed - I succesfully get all formats (not only SABR). But when I try to download I always get "ChildProcessError: ERROR: unable to download video data: HTTP Error 403: Forbidden".

Tried "mweb" with and without cookies, tried android. Tried to use same token, tried to generate new token every time - 403 anyway... Can get all formats (without pot I couldn't), but 403 on downloads.

Any thoughts?

eymonk avatar May 03 '25 13:05 eymonk

By the way, I tried to use yt-dlp with PO token. What changed - I succesfully get all formats (not only SABR). But when I try to download I always get "ChildProcessError: ERROR: unable to download video data: HTTP Error 403: Forbidden".

Tried "mweb" with and without cookies, tried android. Tried to use same token, tried to generate new token every time - 403 anyway... Can get all formats (without pot I couldn't), but 403 on downloads.

Any thoughts?

PoToken works with Visitordata (without account and data sync id), if any IP has been previously blacklisted by yt, http 403 (instead of bot error) error occurs. Wait until the ISP obtains a new IP address. use web clients. Also do not use vpn

Figim avatar May 03 '25 14:05 Figim

PoToken works with Visitordata (without account and data sync id), if any IP has been previously blacklisted by yt, http 403 (instead of bot error) error occurs. Wait until the ISP obtains a new IP address. use web clients. Also do not use vpn

Thank you! Don't know how I didn't notice it earlier while reading (several times) po token guide...

Changed ip, used config: mweb, po_token+ visitior_data and now able not only get all formats, but also download. Only one downside: age-restricted videos are not available with this config.

eymonk avatar May 03 '25 16:05 eymonk

Only one downside: age-restricted videos are not available with this config.

You can use a PO token with logged-in account cookies, too: https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide#with-an-account

bashonly avatar May 03 '25 16:05 bashonly

Re not using a VPN. I got 403:Forbidden the other day. Connected to my mullvad VPN, switched mullvad servers, was able to download everything (albeit somewhat more slowly.)

Update: Just did it again just now. Got a temporary DNS issue with the mullvad server, but a second try downloaded a Youtube video fine after getting the 403 earlier.

Youtube VPN blocking appears to be erratic, and under specific circumstances. I wouldn't dismiss using one out of hand.

richardstevenhack avatar May 03 '25 22:05 richardstevenhack

I tried following the workaround, doing the open Youtube Music, and hit F12, and click on the request, and go to network tab, etc.

I simply do not see a "pot" anywhere in the responses.

What does the POT even look like?

I'm thrashing around in the utter dark in console app I don't understand. We need better documentation on how this actually works with screenshots and everything.

UPDATE: OK, I figured out how to get the POT using a non-logged-in account Youtube music playback, as per the documentation - or more precisely, not like the documentation, but poking around in the F12 console found it.

So I logged back in to Youtube and now it seems I can download again by passing the POT and the cookies.

So this works - for now. Now I have to figure out how to get it to work with Media Downloader which is the front end I usually use with yt-dlp. I think I can modify MD's default configuration to pass in the POT - I've already modified it to pass cookies.

We'll see if this works to enable downloading another 50 videos without using the Mullvad VPN today.

richardstevenhack avatar May 03 '25 23:05 richardstevenhack

@richardstevenhack YT is making all of our lives harder, not just yours. PO token is relatively new and it's a moving target. Most of the reliable information we have about it is already in the wiki. Some of it may already be outdated. If you want better documentation you are welcome to contribute.

What does the POT even look like?

Asked and answered above: https://github.com/yt-dlp/yt-dlp/issues/12482#issuecomment-2844067372

bashonly avatar May 03 '25 23:05 bashonly