pixeltris / TwitchAdSolutions

7.57k stars 441 forks source link

Not working as of the last hour? #114

Closed ghost closed 1 year ago

ghost commented 1 year ago

Not sure what has changed within the last hour but I am getting the "commercial break in progress screen"
QIygmNs Also seems to be an issue with dedicated extensions as well.

toddjames commented 1 year ago

vaft via uBlock Origin just stopped working for me, too. I am getting pre-roll and mid-roll ads; I am not getting the "Commercial break in progress" like OP.

knakamura8 commented 1 year ago

Same issue. Things started getting wonky several days ago (cf. #112), but now I am also receiving the screen as depicted above.

rwbonesy commented 1 year ago

Yeah, I've tried TTV LOL, TTV LOL Plus, and the VAFT plugin and all of them are working spotty if they even do work right now. Generally getting things like the screenshot above.

pixeltris commented 1 year ago

TTV LOL looks fine to me. As for vaft there probably isn't much room for improvement. I'll update the solutions list sometime this weekend when I have time to have a proper look at things.

StevensND commented 1 year ago

Having the same problem with vaft.

Hotwire75 commented 1 year ago

Best guess is twitch is doing something to detect adblockers and is switching things to a different format sometimes... Maybe a cookie gets set? Not sure. For me, it will work fine on one computer, but sometimes going to the same version browser under same synced profile on a different computer will do this. Or vice versa. Change to a different browser profile and all works again. Usually.

Using vaft userscript in Tampermonkey on Chrome.

ghost commented 1 year ago

TTV LOL looks fine to me. As for vaft there probably isn't much room for improvement. I'll update the solutions list sometime this weekend when I have time to have a proper look at things.

I had TTV LOL works for a bit, then just stops working out of nowhere. Within the same hour of testing it. Thank you for this either way.

Suprcheese commented 1 year ago

Was working ok for me yesterday but just died on me today, now ads are coming through.

Using uBlock script on Firefox.

jaggrnaut commented 1 year ago

I'm using a different vaft permalink and it seems to be working right now for me—

Using—

[https://github.com/pixeltris/TwitchAdSolutions/raw/e80025cbd1eef78f3c609eaff8d5f934abcc9cf8/vaft/vaft-ublock-origin.js]

in ublock on microsoft edge

You have to pause and play sometimes when the ad comes and it buffers (or refresh), but it's working

GoombaCake commented 1 year ago

It seems Twitch would rather people just not watch if using an ad blocker now. Must be desperate for some ad revenue throughout the holiday season.

berkant commented 1 year ago

I has something to do with thunderdome or embed player types. I tried this (https://github.com/cleanlock/VideoAdBlockForTwitch) today, it was not only broken but also was repeatedly switching between these player types to get a lower quality but ad-free stream. But obviously, these player types now started to show this "Commercial break in progress" screen instead of providing a lower quality ad-free stream.

Later, I went on to install the original TTV.LOL extension and it works wonders for me despite issues recently reported on its GitHub repo.

ghost commented 1 year ago

I has something to do with thunderdome or embed player types. I tried this (https://github.com/cleanlock/VideoAdBlockForTwitch) today, it was not only broken but also was repeatedly switching between these player types to get a lower quality but ad-free stream. But obviously, these player types now started to show this "Commercial break in progress" screen instead of providing a lower quality ad-free stream.

Later, I went on to install the original TTV.LOL extension and it works wonders for me despite issues recently reported on its GitHub repo.

TV.LOL is also spotty. Works for a bit then will quit. Does this with the original and pro version.

berkant commented 1 year ago

Does this with the original and pro version.

Original extension.

Works for a bit then will quit.

Do you mean it stops working completely or starts leaking ads?

jamesdrudolph commented 1 year ago

This json looks awfully non-json :'(

image

crestcere commented 1 year ago

Looks like AdguardExtra works fine. https://github.com/AdguardTeam/AdGuardExtra/ Tested with chrome beta extension.

ara303 commented 1 year ago

Looks like AdguardExtra works fine.

Adguard Extra requires the premium product Adguard to work properly. I don't have the Adguard "base" product but I did try Adguard Extra Beta on its own just to see. It not only wasn't blocking ads for me but I got a lot of buffering issues and still the purple screen when ads would've otherwise played. It might work if you have the premium Adguard produt, but given that has a price tag I deeply hope that's not the only solution moving forward.

Kathxc commented 1 year ago

After having issues with vaft as described in this post I added TTV LOL with vaft and the issue went away, at least for me anyway.

crestcere commented 1 year ago

Looks like AdguardExtra works fine.

Adguard Extra requires the premium product Adguard to work properly. I don't have the Adguard "base" product but I did try Adguard Extra Beta on its own just to see. It not only wasn't blocking ads for me but I got a lot of buffering issues and still the purple screen when ads would've otherwise played. It might work if you have the premium Adguard produt, but given that has a price tag I deeply hope that's not the only solution moving forward.

You don't have to buy or install adguard product to use that. Just install extension

AeonFX commented 1 year ago

After having issues with vaft as described in this post I added TTV LOL with vaft and the issue went away, at least for me anyway.

It's very easy to verify that pre-roll ads are actually still successfully blocked (at least in my country) via TTV LOL. It doesn't matter that you have both vaft and TTV LOL installed as the latter one just has priority over the script apparently. If you only use vaft you will currently get the "commercial break in progress" sign as OP provided. This test stream always gives you pre-roll ads and I could verify the behavior mentioned above with it: https://www.twitch.tv/twitchmedia39 This is probably because to do with the playertype currently being used by vaft and changes to that type by the Twitch team as @berkant mentioned above.

Edit: Mid-rolls can currently not be blocked via TTV LOL as I just saw in an ad heavy real stream.

You have to keep in mind that those changes not roll out at the same time everywhere in the world and that just like last time when a Twitch team was actively battling ad blocking they very frequently do releases and just within few hours the behavior of ad blocking might change.

Infinitay commented 1 year ago

Vaft uBlock Origin script provided in this repo

It's a shame this stopped working as I do not like relying on someone else's proxy server. That being said, it seems like it's hit or miss.

In smaller streamers I get ad-looped where I see the commercial screen with the ad timer always freezing at 22 seconds left, then the stream starts playing again for no more than 2 seconds, and finally I get looped all over again.

In some larger streams like Tyler1's, I had no issues of looping and I could watch just fine.

iamN7L commented 1 year ago

TTV.LOL is working with me just fine.

BarryThrill commented 1 year ago

Perhaps any idea for ios users? 🥲

scorpion81 commented 1 year ago

Just by looking into chromes developer tools, it seems that there is a js service worker and a wasm worker doing a sequence of requests to cryptically-long named m3u8 urls. I think this wasm binary is the actual video player. You can see some banner / log message in the console denoting it as "Amazon IVS version 1.15" or something along the lines. Unfortunately those are minified and assembled versions, so just pretty printing them wouldnt yield useful variable names and stuff like that. Obfuscation is the keyword here, and it makes understanding whats going on there very hard to nearly impossible.

Looking inside those m3u8 responses, the hostnames of those transport stream (ts) urls contain "video-weaver", and inside the m3u8 there are some infos about "stitched" ads, triggers and whatnot.

The ts urls define a set of video sources in different resolutions and frame rates. Shortly after start watching a stream for about ~30 seconds there we have some "standard-ad" info if the blocker is active (and real ad urls if the blocker is inactive) and i guess the the server "weaves" or "stitches" ads retrieved from those sources into the ts chunks so you cannot effectively intercept those by mere DNS since its all via the same domain / url.

You can also see durations and sequence numbers inside those M3U8s. I am assuming now that in order to skip the 30s of purple screen video chunks you might need to add up some timestamps and durations and "tell" the worker (which in fact is already executing parts of the user script) to move the play head beyond those duration or chunks which contain those "standard-ad" info.

It seems (i can only guess now) that the previous approach of retrieving a lower res alternative player source like embed, proxy or thunderdome player types doesnt work out of the box any more because the according m3u8s contained "real" stream chunk data. Instead of that 30sec dummy ad.

Because after when the 30s are elapsed, the stream would continue normally (last time i tested) even with vaft enabled. This is about preroll ads. Not sure how midroll ads are being handled tho.

Just my 2 cents from my own observation and debugging the userscript / using the chrome/brave developer tools :)

But there is more complexity in the script and the stream chunk stitching process i think, so this is only a partial understanding of things which I have, i guess.

arthurbolsoni commented 1 year ago

Looking inside those m3u8 responses, the hostnames of those transport stream (ts) urls contain "video-weaver", and inside the m3u8 there are some infos about "stitched" ads, triggers and whatnot.

The ts urls define a set of video sources in different resolutions and frame rates. Shortly after start watching a stream for about ~30 seconds there we have some "standard-ad" info if the blocker is active (and real ad urls if the blocker is inactive) and i guess the the server "weaves" or "stitches" ads retrieved from those sources into the ts chunks so you cannot effectively intercept those by mere DNS since its all via the same domain / url.

You can also see durations and sequence numbers inside those M3U8s. I am assuming now that in order to skip the 30s of purple screen video chunks you might need to add up some timestamps and durations and "tell" the worker (which in fact is already executing parts of the user script) to move the play head beyond those duration or chunks which contain those "standard-ad" info.

It seems (i can only guess now) that the previous approach of retrieving a lower res alternative player source like embed, proxy or thunderdome player types doesnt work out of the box any more because the according m3u8s contained "real" stream chunk data. Instead of that 30sec dummy ad.

Because after when the 30s are elapsed, the stream would continue normally (last time i tested) even with vaft enabled. This is about preroll ads. Not sure how midroll ads are being handled tho.

Just my 2 cents from my own observation and debugging the userscript / using the chrome/brave developer tools :)

But there is more complexity in the script and the stream chunk stitching process i think, so this is only a partial understanding of things which I have, i guess.

This same idea of ​​using the .TS file forward is used in the blocking scripts, but it looks like this latest update has added a layer that adds default ads to all streams.

scorpion81 commented 1 year ago

This same idea of ​​using the .TS file forward is used in the blocking scripts, but it looks like this latest update has added a layer that adds default ads to all streams.

But how does the player "know" when to redirect the m3u8 requests to the proper urls ? There must be some mechanism to signal the m3u8 endpoint that you finished watching the ad, aka the timer elapsed.

When you start watching a stream there is also a "channelname".m3u8 url being accessed with a big bunch of parameters in the query string.

Hmm. Some kind of "beacon" or so must be stored in a cookie or local storage or so to signal that I, the client have just connected to channel X and are about to watch an ad (or that i finished watching that ad).

Just trying to understand whats going on there. And what is the purpose of the "trigger" url info in the m3u8 files ? Questions over questions.

juliocoliveira commented 1 year ago

None but Adguard Extra beta is working for me, Tested cleanlock's, TTV LOL, and others. None are working.

GoombaCake commented 1 year ago

I'm using a different vaft permalink and it seems to be working right now for me—

Using—

[https://github.com/pixeltris/TwitchAdSolutions/raw/e80025cbd1eef78f3c609eaff8d5f934abcc9cf8/vaft/vaft-ublock-origin.js]

in ublock on microsoft edge

You have to pause and play sometimes when the ad comes and it buffers (or refresh), but it's working

This works for me pretty well. It's not 100% as he said but better than nothing.

arthurbolsoni commented 1 year ago

But how does the player "know" when to redirect the m3u8 requests to the proper urls ? There must be some mechanism to signal the m3u8 endpoint that you finished watching the ad, aka the timer elapsed.

When you start watching a stream there is also a "channelname".m3u8 url being accessed with a big bunch of parameters in the query string.

Hmm. Some kind of "beacon" or so must be stored in a cookie or local storage or so to signal that I, the client have just connected to channel X and are about to watch an ad (or that i finished watching that ad).

Just trying to understand whats going on there. And what is the purpose of the "trigger" url info in the m3u8 files ? Questions over questions.

to be able to notify the server that the ads ended, they use a request on gql.twitch.tv, but it is not possible to notify the server until X time. (For example, it's possible to cut an ad's running time in half using this idea. But I don't know how it goes lately) about "how the player changes" I like to think that the player just takes everything coming from M3U8 and manages it.

Who controls what M3U8 will receive and how it will be built would be the server, maybe the server will be able to separate the logged in user, the non logged user, the requests of the same stream and the same ip in X times. and put an ad on who has ads to "pay" or put a purple screen in case there are many requests

Who knows? we need to test the scripts several times to find a way

this is my idea of ​​how it works.

ghost commented 1 year ago

VAFT is working. TTVLOL just started hitting error 2000s.

arthurbolsoni commented 1 year ago

When you start watching a stream there is also a "channelname".m3u8 url being accessed with a big bunch of parameters in the query string.

Hmm. Some kind of "beacon" or so must be stored in a cookie or local storage or so to signal that I, the client have just connected to channel X and are about to watch an ad (or that i finished watching that ad).

the purple adblock a external server to do the requests. the twitch don't know nothing about the user and get purple ads. may ip black list?

arthurbolsoni commented 1 year ago

it seems that this only happens with "pre-ads" I had no problems with mid-ads

juliocoliveira commented 1 year ago

image Vaft (user script) is not working, I'm getting banners.

arthurbolsoni commented 1 year ago

image Vaft (user script) is not working, I'm getting banners.

use vaft and ublock origin (normal adblock)

juliocoliveira commented 1 year ago

I enabled ublock origin, but still getting purple commercial: image

TheEnhas commented 1 year ago

The vaft extension (Twitch Adblock) hardly works either, it buffers or tends to freeze entirely during ads, pops up the resolution selector at random and sometimes doesn't work at all.

Adguard Extra beta Tampermonkey script is working for me though, at least for now. It's the only thing that's working reliably, actually.

arthurbolsoni commented 1 year ago

The vaft extension (Twitch Adblock) hardly works either, it buffers or tends to freeze entirely during ads, pops up the resolution selector at random and sometimes doesn't work at all.

Adguard Extra beta Tampermonkey script is working for me though, at least for now. It's the only thing that's working reliably, actually.

try purple adblock

juliocoliveira commented 1 year ago

I used Adguard Extra beta, it works great, but my audio keeps getting unsynced.

juliocoliveira commented 1 year ago

The vaft extension (Twitch Adblock) hardly works either, it buffers or tends to freeze entirely during ads, pops up the resolution selector at random and sometimes doesn't work at all. Adguard Extra beta Tampermonkey script is working for me though, at least for now. It's the only thing that's working reliably, actually.

try purple adblock

purple used to work, it does not anymore.

TheEnhas commented 1 year ago

I used Adguard Extra beta, it works great, but my audio keeps getting unsynced.

Yeah, just got that too. Changing my recommendation to no for this as well, unfortunately, so right now there's literally nothing that works.

And yeah, I've tried vaft (both the script and the extension), Purple (both the script and the extension) and this and none of them work well or at all.

juliocoliveira commented 1 year ago

The only thing that works for sure is "Alternate Player for Twitch.tv".

juliocoliveira commented 1 year ago

The Problem with Alternate Player is the downtime, You don't see the ads but don't see the stream either on an ad.

StevensND commented 1 year ago

I'm using a different vaft permalink and it seems to be working right now for me— Using— [https://github.com/pixeltris/TwitchAdSolutions/raw/e80025cbd1eef78f3c609eaff8d5f934abcc9cf8/vaft/vaft-ublock-origin.js] in ublock on microsoft edge You have to pause and play sometimes when the ad comes and it buffers (or refresh), but it's working

This works for me pretty well. It's not 100% as he said but better than nothing.

It works but really slow at stream loading.

TheEnhas commented 1 year ago

notify-swap-new seems to be the best non-proxy solution for now, less overall ad downtime versus viewing the actual ads and seems to work fairly well. TTV-LOL PRO does work fine most of the time though aside from the occasional downtime / buffering.

juliocoliveira commented 1 year ago

notify swap new is not working for me #115

ara303 commented 1 year ago

notify swap new is not working for me #115

@juliocoliveira - #115 (yours) was closed because you described the expected behaviour of notify-swap-new. Please read what is written on Scripts:

Uses the embed player during ads. Full screen ad message displayed during ads. Read the twitch announcement You may notice a seemingly random player reload some time after the ad message is gone.

This is the best solution that @pixeltris is able to come up with right now. In time, perhaps other circumvention methods may arise. (As an aside, it's rather poor etiquette to flee to another issue when yours gets closed.)

pixeltris commented 1 year ago

RE: the vaft permalink. That would be when I made it point to the proxy TTV LOL. You can see the diff here. You'd probably be better of using TTV LOL (though there are some minor benefits of that script in that it will at least attempt locally first). Or use the extension which lets you choose the proxy settings.

I've made a "new" script video-swap-new. I haven't done any testing on midrolls so it might fail there. It will use the embed player and display the ad message and switch back to the regular stream when there are no ad segments. You may experience a seemingly random player reload with it as the embed player does give you a clean stream fairly quickly.

I know some people had issues with video-swap under Firefox in terms of playback. I haven't noticed any so far but I'll keep an eye out. Feel free to make a new issue if these kinds of problems occur.

I'm closing this issue as I don't have any plans of taking vaft further and the ad message is here to stay. TTV LOL remains the best solution (albeit it does have fairly frequent downtime) and I've bumped Alternate Player for Twitch.tv to the top of the alternative list as its always been consistent in the way that it blocks ads (hides them). I've also added the AdGuard Extra (Beta) to the list of solutions as suggested.

berkant commented 1 year ago

And what is the purpose of the "trigger" url info in the m3u8 files ?

I just experimented with this URL, and can confirm it is meant to trigger server midrolls from client side. Upon curl'ing one, I can see ads popping on to my face after a few seconds.