zerodytrash / Simple-YouTube-Age-Restriction-Bypass

A simple browser extension to bypass YouTube's age verification, disable content warnings and watch age restricted videos without having to sign in!
MIT License
2.2k stars 96 forks source link

Any update on when this will be fixed? #263

Open jonny2369 opened 1 week ago

jonny2369 commented 1 week ago

What happened?

An ETA on when this will be fixed yet? Script has not been working now for over a month, and keep checking in every day just to see that it is still Sep 12 release. YouTube is censoring more and more (even comedy shows like this, https://www.youtube.com/watch?v=HwezhqnDZoo, now has age restriction), and if one doesn't want to give YT/Google all your personal data + credit card info, then a script like this is a must...

Edit: Just to make clear I am not complaining or ungrateful (in my book, the makers of this script are great guys), but since there's a lot of people depending on this, an update/ETA would be nice...

Platform

Userscript

Version

2.5.11

What browser are you on?

Chrome

Browser version

130.0.6723.59

Link to the video

https://www.youtube.com/watch?v=HwezhqnDZoo

Screenshots or Videos

image

About you

Loistar commented 1 week ago

Ditto, script stopped working.

ten4dinosaur commented 5 days ago

This script has 2 methods of "bypass". TV client and account proxy. TV client is died, now it require login for requesting any video (but it did not enforce EU age "verification", so you can use account without credit card). Account proxy method itself is working, but authors server seems offline. So for not to use this method you need to setup your own account proxy server as described in readme.

Vangelis66 commented 4 days ago

Account proxy method itself is working

... Well, hardly; even if the maintainers restore their age-verified-YT-account proxy instance, YT itself made it sure that, as of writing this, only the lowly fmt=18 format could be accessed, at best (360p25 standalone pre-muxed MP4, avc1+aac); with fmt=22 (720p25) having been axed recently, all adaptive bitrate formats (MPEG-DASH/HLS) in separate video/audio streams are being inaccessible due to them being protected by a POtoken (Point-of-Origin-Token) valid only for the original YT account holder/machine, not for the machines of people sharing the verified account via the proxy...

https://github.com/zerodytrash/Simple-YouTube-Age-Restriction-Bypass/commit/c64fa7e595faba141f80a135afc67470d32428d3

* Workaround: when we provide `adaptiveFormats` the client cannot playback the video.
*
* It seems the URLs we get here or the one the client constructs from these URLs are tied to the requesting account.
* The low quality `formats` URLs seem fine.

you need to setup your own account proxy server as described in readme.

https://github.com/zerodytrash/Simple-YouTube-Age-Restriction-Bypass/tree/main/account-proxy#installation

IIUC, this is for people who want to share their age-verified YT account with others, just like the maintainers here (used to) do; but existing userscript/extension installations only work with https://youtube-proxy.zerody.one/, don't they?

ten4dinosaur commented 4 days ago

POtoken (Point-of-Origin-Token) valid only for the original YT account

c64fa7e

* Workaround: when we provide `adaptiveFormats` the client cannot playback the video.
*
* It seems the URLs we get here or the one the client constructs from these URLs are tied to the requesting account.
* The low quality `formats` URLs seem fine.

POT for authorized accounts relay on datasyncId, it's present in unlockedPlayerResponse at responseContext.mainAppWebResponseContext.datasyncId.

Just apply it to POT generator, and than, all adaptive formats works. Here is example script.

https://www.youtube.com/watch?v=HwezhqnDZoo

drunkwinter commented 3 days ago

@ten4dinosaur That's a great find, if you want to make a pull request I'll be happy to review and merge it.

Yes, unfortunately the videos are now being protected by a POtoken (didn't previously know it had a name).

Unfortunately, the bigger problem here is that, we had a US based YT account that the proxy was using, which recently got banned and creating a new account now requires a phone number for verification. And with the decreasing number and effectiveness of client based bypasses I don't see how this project can be easily sustainable at this point.

Vangelis66 commented 3 days ago

we had a US based YT account that the proxy was using, which recently got banned

Thanks for your additional input :+1: ; from your previous communication, I got the impression that it was the proxy cloud instance itself that had expired (and/or got "banned" by its hoster); itself a problem that would take time to remedy; but did I now understand correctly that the age-verified YT account was actually banned by most evil Google, too?

Google had always fought against other projects helping users consume YouTube videos in ways not endorsed by Google, but, if I may say so, "they" are currently, and since mid-summer, conducting a holy war against ALL the other parties :rage: ; browser extensions, browser userscripts, invidious instances, standalone non-official YT clients and, above all, most of the YT downloaders have been affected, each to a variable degree, most put out of action :sob: ...

As for this project, which I had occasionally used over the past years (in my browsers and also as part of the AGB yt-dlp plugin), I have to thank the maintainers for past services, but its future looks uncertain/grim; perhaps some savvy members of the community can step up with new, un-banned, age-verified YT account(s) that the maintainers could use in a future iteration of the script (once proxy hosting issues, if any, have been dealt with) ? Sadly, not a programmer, so no "real" help to offer myself :wink: ...

rant mode, you've been warned What irks me the most is that Google have had their ways forced upon the web communities once more, with no practical workaround; Google are effectively the "owners" of the web: them writing new web specs (JS+CSS) and implementing them into their monopoly browser, Chrome; via Chrome's "popularity", they also dictate the OS and browser engine people must use to "surf the web" (make no mistake, Mozilla Firefox is just their lackey); they also own the most popular search engine, one of the most popular video platforms (YT) and own the dominant DRM module, Widevine; Chrome extension MV3 (so that adblockers become crippled)? Do you feel their tight grasp on you already? BTW, I'm not even going to mention Android, ChromeOS, smart "things", etc. So now Google have also appointed themselves as the ultimate "web police", age-blocking much YT content for "political correctness", in reality a ploy to take hold of users' (more) private details... Despite surfing the web since 2005, I have resisted selling my soul to Google by creating an account with them (no Android phone owned, either); whenever I had the ability to **unblock content with this fine project**, it was for me a sort of "FU Google" moment; and it's that feeling **I'll miss more** than the videos I won't be able to unblock from now on...

Great debt owed to the zerodytrash team ! :+1:

drunkwinter commented 3 days ago

Thanks for your additional input 👍 ; from your previous communication, I got the impression that it was the proxy cloud instance itself that had expired (and/or got "banned" by its hoster); itself a problem that would take time to remedy; but did I now understand correctly that the age-verified YT account was actually banned by most evil Google, too?

I have no idea who that is, but he is not a contributor in any way. You can find the list of contributors here: https://github.com/zerodytrash/Simple-YouTube-Age-Restriction-Bypass/graphs/contributors. @zerodytrash and me currently only have the access to the server.

But yes the account seems to be banned by Google, most likely automated by their systems. We get a This content isn't available. message on all videos. My concern now is that even if we somehow got a new account, the question is how long will it last? And how straight forward is it to get a new US number each time? What happens when at some point the server IP gets banned?

Anyway, about the rant, I think we're all on the same page regarding opinions about Google ;)

ten4dinosaur commented 3 days ago

We get a This content isn't available. message on all videos.

yt-dlp/yt-dlp#10108

What happens when at some point the server IP gets banned?

It's exactly seems like similar case. Try cloudflare warp maybe, hope they wouldn't ban cloudflare.

Vangelis66 commented 3 days ago

I have no idea who that is, but he is not a contributor in any way.

... Oh :confused: ; the way in which he commented in this tracker (see also his comment here) made me assume he was a member of your team :wink: ; it turns out he maintains a fork of this project:

https://github.com/joaquinito2070/Simple-YouTube-Age-Restriction-Bypass

(which doesn't make him a bad person, TBH, but he could've been more clear about this...)

the question is how long will it last?

Going by the yt-dlp issue tracker, one can see that YT accounts are being routinely blocked, possibly through AI infrastructure, when "unrealistic" (read: excessive for just one person) traffic (requests) is being observed originating from those accounts; same goes for age-verified accounts... This is just a guess of mine, but when the tv_embedded hack was patched by Google, the (many) users of your script were suddenly making use of the YT account on the proxy (whereas before the proxy was only used for non-embeddable age-gated content); this must've triggered some fuses and the account was then BLOCKED :cry: ...

Apparently @ten4dinosaur has already set up his proxy instance with a working age-verified YT account (plus his fix for bypassing poToken), everything works for him, but what if his proxy address became public? Ruthless Google would probably at some point block 1) the YT account 2) proxy's IP ... And what's the point of creating your own age-verified YT account proxy if NOT to share it publicly? Just so that you yourself can watch in browsers without logging in, when, at the same time, you already have an account with them?

Not being optimistic myself...

ten4dinosaur commented 3 days ago

Apparently @ten4dinosaur has already set up his proxy instance And what's the point of creating your own age-verified YT account proxy if NOT to share it publicly?

No, I have no proxy instance. I use custom script. So sharing it = sharing account.

Just so that you yourself can watch in browsers without logging in, when, at the same time, you already have an account with them?

Yeah, exactly for this. I wouldn't like to use google account on my main browser, but I have no problem to register one in portable browser and never use it except for grabbing cookies

Genuline commented 3 days ago

mine was fucked but then I disabled & re-enabled it and it worked :D

jonny2369 commented 2 days ago

Lots of info now in this thread (and many thanks to everyone contributing for their help), so just to get things straight:

1) The main script is dead, and no ETA on when it will be fixed (and unsure even IF it can be fixed). Obligatory Google can go fsck itself. 2) The account proxy (https://github.com/zerodytrash/Simple-YouTube-Age-Restriction-Bypass/tree/main/account-proxy) is still technically working, but a) the account it connects to is down (probably permanently), and b) it is not a script one can simply put into Tampermonkey either (to add to/replace main script). 3) A possible workaround, provided curtesy of @ten4dinosaur and requiring the account proxy (does it?), seems to be working for now, and can be found here: https://gist.github.com/ten4dinosaur/6fdba5ae41d4190d1d0022c8ead108ce. No other requirements or prerequisites?

Have I understood it correctly and this is where things stand right now?

Also, in case the 'main' script cannot be resurrected, does someone with real programming skill think it might be possible to combine everything required to get it to currently work (including the account proxy) into a single script, so it's possible to just 'plug and play'? Then possibly upload it onto the main page (in a sub-folder)?

ten4dinosaur commented 1 day ago

3. A possible workaround, provided curtesy of @ten4dinosaur and requiring the account proxy (does it?), seems to be working for now, and can be found here: https://gist.github.com/ten4dinosaur/6fdba5ae41d4190d1d0022c8ead108ce. No other requirements or prerequisites?

You still need this script, YoutubeVideoInfoAdapter can fetch video info/change poToken, not "unlock" video. So, to make it work for now you can: 1) Install YoutubeVideoInfoAdapter.js userscript + add account cookies to it 2) Patch Simple-YouTube-Age-Restriction-Bypass to make it use YoutubeVideoInfoAdapter

Provided patch for Simple-YouTube-Age-Restriction-Bypass works, video can be watched. But it's not perfect, and it use window.location.refresh, because this script relays on synchronous JSON.parse hook and synchronous request, but YoutubeVideoInfoAdapter can't work in synchronous mode. It's Tampermonkey's GM_xmlhttpRequest implementation limitation.

Vangelis66 commented 1 day ago

@jonny2369

The gist of it is:

Install YoutubeVideoInfoAdapter.js userscript + add account cookies to it

which is below part:

    // set cookies
    const account = {
        sid: '...',
        hsid: '...',
        ssid: '...',
        apisid: '...',
        sapisid: '...',
        psidts: '...'
    }

That means that you need someone else to provide you with YT cookies of an age-verified YT account in order to ublock the age-gated videos IF YOU YOURSELF DON'T CURRENTLY HAVE (OR WANT TO REGISTER) AN AGE-VERIFIED YT ACCOUNT; which was the main reason to begin with I and the overwhelming majority of users were using this project (evade Google's mandatory sign-in); if that other party does provide you the necessary cookies, the age-verified account is at high risk of being ultimately BLOCKED/BANNED by Google's automated security systems :rage: ...

The use case scenario by @ten4dinosaur (thanks for your coding efforts :+1: ) boils down to:

Just so that you yourself can watch in browsers without logging in, when, at the same time, you already have an account with them?

Yeah, exactly for this. I wouldn't like to use google account on my main browser, but I have no problem to register one in portable browser and never use it except for grabbing cookies

ten4dinosaur commented 1 day ago

IF YOU YOURSELF DON'T CURRENTLY HAVE (OR WANT TO REGISTER) AN AGE-VERIFIED YT ACCOUNT

You can register non verified account in portable browser, and use getYoutubeVideoInfo(videoId, 'tv'). It will work not for all age-restricted video, but for embeddable at least.

ten4dinosaur commented 1 day ago

Also, main reason why YoutubeVideoInfoAdapter was originally created is ios endpoint, it returns hls manifest, so, I can play video in vlc player, Other clients/PoToken bypass is additional features I added letter. So, sorry if it not what you exactly need

GitAlasGo commented 16 hours ago

NewPipe can bypass the restriction, i don't see why should this script use a proxy, that's violating our privacy and security.

ten4dinosaur commented 1 minute ago

NewPipe can bypass the restriction

TeamNewPipe/NewPipe#11382

It doesn't matter now, as YouTube removed all known ways to bypass age-restrictions without login.