odensc / ttv-ublock

Blocking ads on that certain streaming website
MIT License
895 stars 61 forks source link

Purple warning screen showing up when using extension #21

Open ShaNam69 opened 3 years ago

ShaNam69 commented 3 years ago

https://i.imgur.com/TtSqjGa.png this is what's happening

Morten79 commented 3 years ago

I can confirm that, had to disable the extension to allow one pre-roll ad to be able to watch for more than 10 minutes without interruptions. Hopefully it's an easy fix.

Roddi48 commented 3 years ago

Hi @Morten79 , i have the same Problem but i just need to wait a bit Time and then i get back to the stream. I start to hate Twitch and thinking to leave the shit....

You guys do an amazing work and i hope you will finde a new solution to get away this content blocking ads. <3

hi098123 commented 3 years ago

GQL change parameter in embeded player "playerType" : "embed" -> "popout"

PureFallen commented 3 years ago

Issue 11 got revived for that issue already, not sure if we need 2 issues for the same problem. Edit: Nvm, got moved to #20 at some point or am i confused?

serenadezzz commented 3 years ago

Same issue here on firefox, no matter if you disable Ublock, it still detects the extension when the streamer hits the ads button.

gorcbj commented 3 years ago

It happens at regular intervals as well for streams that aren't partnered, get it roughly every 10 minutes for about 15 seconds before it returns to the normal stream. The purple screen also appears on partnered streams even if you're subscribed to them.

mystyq commented 3 years ago

Wasn't using the extension but I was using the embedly iframe script and getting the same issue

Have no extensions or scripts installed - watching vanilla twitch and haven't got a pre-roll/mid-roll on any stream for many hours

mmattbtw commented 3 years ago

Doing fine now, I just reinstalled it through the Chrome webstore, might be just me.

edit: just kidding lol, still getting it now

caerulius commented 3 years ago

Can +1 this issue. Getting the purple screen and duplicated in the small player on regular intervals in chrome.

Awesome3475 commented 3 years ago

Doing fine now, I just reinstalled it through the Chrome webstore, might be just me.

Just tried it, didn't work for me.

Really hate how predatory Twitch is on its advertisements now.

Dexy2811 commented 3 years ago

can confirm that it isnt blocking twitch ads anymore :(

ItsBluey commented 3 years ago

sometimes its blocking them other times not i got this https://i.imgur.com/TtSqjGa.png on greeks stream and it wont go away lol

RandomNerd1 commented 3 years ago

Are all of you using Chrome? I'm on Firefox, using the extension, and have yet to have any problems.

mmattbtw commented 3 years ago

Are all of you using Chrome? I'm on Firefox, using the extension, and have yet to have any problems.

I am on chrome experiencing this issue sometimes.

strong-code commented 3 years ago

Looks like they are rolling it out gradually to streams. I poked around with Firefox's network inspector and I can see it making graphql queries during the purple screen.

It first makes a GET to their edge server. In my case it was:

https://video-edge-7e9f0c.sea01.abs.hls.ttvnw.net/v1/segment/CqIFWjpO84NYY472hVqVKlF9ThYOePpK9KZC3t9sVCkoE81VkGAzjmXMOsSYQfEFCxeMobE2rUvVVI_Wmt-spznu923BzIEVUlqfwK8V3kROVgXyuUfdduB990g5cqeTiqFb1_aGOTzTXbSgQlr_IGAByqu520YzZL4WM8N8fdvawht74Z5_tIHR5iSfzE2rLahcztumnZaiMHJPWy7cyJD-QJPRS3UgIyL8HGd5VxviZXet0VgylTlUmsHjBawchmitY2o5Tv7cSEIxB3xEe3C_v6C8TjHT3vkcGy2k1OlvcXxAZMHP8byNtU1P5jIw2oOAVCKHb6n7pFfVUmCw0xCNNd9aDHEOPLPG-mEw53nMk0l4lAl40dmRoHu0q9TaC0-0yVvs1u7dU7St0QPFHkUgWnXkOy0PKSFaovi_UtcXFXKMAdQziMycdNfGEFYvd987_WbG06KqkPX_QKl3us_eDryCjGdomMPwJiIx9mDZLTBWyIsniv5yBRqGnl_3YcoolPWsgDmkmYCK8r0LbmjXlS_uOYt5Q04IckSmSHU69FBMFa3m-3sV7VP9x_yVblJwRu5CCNddlo_-APktQZPpVk8mtWReX2p4qmb2T_AiPUdVraU4xapkN4NGjze5QdV6gWcHFJ5-HAqWdutmVxrt6BTmkQdYFDzpk6D_awW0_ZoK3nfkC5C6hMOb2IK9GzdF8glcWCdmZId2o6BiklJpyI4GTXDqGXSo5a3WL30I_3o94Gz12s6xop_bbfWWJEZb2FwcdZ4aaY7Ing23cFYQMkHP5NMMugIEVpO8fuj3wlPs8jRlFm0iGI_OWSBWF-MeFonL0pIPBoPnWsMF5pL3PswVzsb7WB-2DvXh-1qaTmMbHRzq2WAnoApWdDEVwF_iL-sSEAN__S0r6kLLVN2WA3WRYHEaDGQRH-H5mjCYYTIqAQ.ts

This .ts file is the purple screen we are getting. You can actually download it and play it in VLC or something. It's not a typescript file but just a segment/chunk for HLS.

Then while the purple screen is active, we get 4 more "heartbeat" gql POST requests for ClientSideAdEventHandling_RecordAdEvent. It send a JSON payload every 25% of the ad:

{"player_mute":true,"player_volume":0.1600000113,"visible":true,"ad_id":"","ad_position":1,"duration":29,"creative_id":"2474283100403","total_ads":1,"order_id":"","line_item_id":"2379251610203","roll_type":"midroll","stitched":true}

Until it's finished, then it finally POSTs this gql request:

{ 
    "operationName": "ClientSideAdEventHandling_RecordAdEvent",
    "variables": {
      "input": {
        "eventName": "video_ad_pod_complete",
        "eventPayload": "{\"stitched\":true,\"roll_type\":\"midroll\",\"player_mute\":true,\"player_volume\":0.1600000113,\"visible\":true}", 
      }
    }

So I wonder if we can either block the initial GET or spoof the video_ad_pod_complete event. I'm not familiar with gql so this is more of a braindump with observations I was able to make at first glance. Hopefully this can help others, or at least point in the right direction. I will sleep on it and poke around more tomorrow 😬

mmattbtw commented 3 years ago

I think I know why this is happening, it seems like Twitch is indeed rolling out their new "Multiplayer" ad experience.

This is just a guess, but I am pretty sure this is why it's happening.

Learn more about Multiplayer ads ==> https://help.twitch.tv/s/article/multiplayer-ads

Twitch Dashbaord (above is from my Affiliate dashboard, where you can see my channel has the option to enable/disable Multiplayer ads for subscribers)

FeaReDGlock commented 3 years ago

I am on Edge and I also have the message on the screen.

csrapr commented 3 years ago

Twitch Dashbaord

So on top of an ad we're also gonna get the stream blocked by an annoying popup to participate in a poll. I don't even asnswer polls for $5 giftcards

luffydev commented 3 years ago

I also have third party message on Twitch since today, Twitch has allowed new developper's ressource to block this extension :(

RibShark commented 3 years ago

So the third party message only seems to show after watching the stream for a few minutes. Would it be possible to first send a request for the "normal" stream feed with ads, then immediately request the "embed" stream, start playing that one, then 30 seconds later switch back to the "normal" stream feed? This would at the very least block pre-roll ads.

Morten79 commented 3 years ago

Main Reddit link on the topic: https://www.reddit.com/r/Adblock/ - but be very careful regarding suspicious Java scripts / Extensions!

https://www.reddit.com/r/Adblock/comments/kc2bc7/ttv_aderaser_new_twitchtv_ad_blocker_that_also/ It not working any more but the author says he's doing all he can to find a new solution just as here. Ads on Twitch isn't the end of the world, but it's damn annoying, especially when you're gotten used to watch Twitch for over 30 days without ads :P . People both here and other places are working on new solutions, just be little patient and it'll be better soon I'm pretty sure :D

ItsBluey commented 3 years ago

any updates ?

deviant14 commented 3 years ago

Looks like the creation of that other extension posted to /r/adblock might have spurred this along. That's unfortunate.

strong-code commented 3 years ago

After bouncing around streams all morning, I haven't received a single purple screen. I kept an eye on the network inspector and found this gql POST fired off:

{ 
  "reason_channeladfree": false,
  "reason_channelsub": false,
  "reason_vod_ads_disabled": false,
  "reason_bounty": false,
  "reason_vod_midroll": false,
  "reason_stream_broadcaster": false,
  "reason_embed_promo": false, 
  "reason_p4m": false,
  "reason_lt": false,
  "reason_raid": false,
  "reason_midroll_during_preroll": false,
  "reason_ratelimit": false,
  "reason_short_vod": false,
  "reason_turbo": false, 
  "reason_vod_creator": false,
  "reason_wp": false,
  "reason_zagd": false,
  "reason_zagu": false,
  "reason_midlimit": false,
  "reason_amazon_product_page": false,
  "reason_animated_thumbnails": false,
  "reason_creative_player": false, 
  "reason_dashboard": false,
  "reason_facebook": false,
  "reason_frontpage": false,
  "reason_highlighter": false,
  "reason_onboarding": false,
  "reason_pbyp": false,
  "reason_squad_stream_secondary_player": false,
  "reason_thunderdome": false,
  "reason_embed": true, 
  "twitch_correlator": "knsTswudR9gAAPVof6BwX2VYmwHu23HI",
  "ad_session_id": "aaiWcx2WvYKuhK0ofe9NjQyJAYKwYC",
  "roll_type": "preroll",
  "time_break": 30
}

It looks like this fires when an ad roll is initiated, but the viewer is exempt (for any one of the reasons returned from the gql request). So in my case, I wasn't shown a preroll ad because reason_embed returned true. Of course this only evaluates to true because I'm using this addon to make it seem like it's an embedded player.

My theory is that they accidentally turned this on for all player types, and rolled it back some time late last night/this morning.

My question for other people reading this thread: Are you still receiving the purple screen with ttv-ublock running after 12/20? If nothing else, at least we are provided a list of targets from Twitch itself. But for the time being, I haven't had any purple screens today. Let's hope it stays that way 🤞

ghost commented 3 years ago

I'm still receiving the purple screen using Google Chrome. I completely restarted Chrome to make sure, and it's still showing me the purple screen.

bottleblue commented 3 years ago

My question for other people reading this thread: Are you still receiving the purple screen with ttv-ublock running after 12/20?

What do you mean after 12/20? I just noticed this behavior today which is 12/20. I was using Twitch last night and the night before and never ran into the issue.

ImperatorStorm commented 3 years ago

still receiving it, firefox

abondpark commented 3 years ago

still getting it on brave (chromium)

Insan1ty0ne commented 3 years ago

I am getting the purple screen very aggressively today (12/20) on the Google Chrome dev branch with the latest version of this extension. It made it impossible for me to watch Twitch so I hope this is resolved soon.

Kline- commented 3 years ago

My question for other people reading this thread: Are you still receiving the purple screen with ttv-ublock running after 12/20?

12/20 was the first time I've had this issue. Looks like a slow rollout.

pixeltris commented 3 years ago

@strong-code nice find. There are a couple of values there which don't give ads (e.g. pbyp), though embed definitely does. EDIT: Well pbyp gives ads now also.

r3ndd commented 3 years ago

Due to Chrome's API limitations on modifying request bodies a proxy desktop application may be the way to go.

thekillgfx commented 3 years ago

I don't know if that can help or not, but I was watching a stream and https://imgur.com/TtSqjGa popped up, then I've tried moving to other streams but I was getting that purple screen everywhere. Then I went to the stream I was initially watching and after a few the purple screen disappeared. It seems like Twitch is running ads on the whole platform at the same time and after it's finished the purple screen go away.

r3ndd commented 3 years ago

@revzim What's your technique for circumventing the purple warning screen? Are you using a custom video player that could potentially be integrated into an extension to replace the default Twitch player?

andreipro1002 commented 3 years ago

@revzim I tried your app and I'm getting infinite loading ("loading ttv-viewer..."), any idea what could cause it?

Thunderbolt8 commented 3 years ago

getting purple screen warning with opera.

Setekh79 commented 3 years ago

21/12 14:00UT purple screens abound, hope we have a fix soon.

SakhJack commented 3 years ago

haven't seen this yet even on popular streams like cohhcarnage and xqc my setup is Firefox + uBO + uMatrix + Privacy Badger + this app can people affected reply with channels where you've seen this banner?

also nothing from channels in reply directly below, at least during prerolls

MathPlayer commented 3 years ago

Fresh, encountered the purple screen right now: https://www.twitch.tv/beatportofficial https://www.twitch.tv/simplynick https://www.twitch.tv/annamaja

omgitsmoe commented 3 years ago

I tried sending a video_ad_pod_complete event as soon as we get an operationName of ClientSideAdEventHandling_RecordAdEvent but that didn't work. It seems to completely ignore any of the heartbeats (video_ad_quartile_complete) sent by the client, since intercepting all of those requests had no influence on the duration of the placeholder screen.

Next I tried sending a video_ad_request_declined that gets normally sent (among others) if you already watched a pre-roll ad recently and are within the cooldown period. I tried several different reason_* values that get sent as booleans in the eventPayload, but it had no effect. Maybe it just didn't work since I wasn't able to figure out how to find the correct values for ad_session_id and twitch_correlator in the eventPayload and instead just used null or old values.

P.S.: Could you please refrain from posting if you don't have more information than "I get the purple screen too."

jprochazk commented 3 years ago

I haven't gotten a purple screen in more than a day (EU region) - latest chrome, UBO and ttv-adblock

RoyRiv3r commented 3 years ago

I didn't get any purple screen since this morning(EU)? Might be a sort of quota per day or something like that... i keep investigating

P.S.: Could you please refrain from posting if you don't have more information than "I get the purple screen too."

Why ? This could be a way to understand when, how, where this happen....

omgitsmoe commented 3 years ago

Why ? This could be a way to understand when, how, where this happen....

Well most people don't include any information other than that they're getting the placeholder screen, which really isn't useful beyond the first few postings.

Additionally Twitch is rolling out their changes in waves like they always do, so knowing where and when this happens is not all that interesting after it has been established that it is happening.

The how is important but most people probably can't post information on that and that is completely fine. It's just hard to collect information if the important information is drowned out by redundant information.

The proper way to try reproduce it is (it can be hard to reproduce it every time though):

  1. Make sure ttv-adlbock it the only extension that is allowed to run in private browsing mode.
  2. Open a new private browsing window (to exclude your active session stopping you from getting an ad etc.)
  3. Open the stream of a partnered? streamer
  4. It will (for me it worked almost every time) show the placeholder screen instead of a pre-roll ad.
  5. Following that you get the placeholder screen every 15 minutes (even if the streamer is not actually running a mid-roll ad) for roughly the duration of a typical ad (30s). The mini player usually returns to the normal feed a few seconds earlier.

Even if you didn't get the placeholder screen using that method it just might be due to Twitch rolling out the changes in waves and your region is still on an older version.

mbrigdan commented 3 years ago

Have we determined if twitch actually took the nuclear option and sends this screen to legitimate embedded players, vs somehow detecting the extension & only sending it to that? Are there "legitimate" embeds anywhere that appear to be ad exempt, that we could spoof?

thekillgfx commented 3 years ago

Seems like the purple screen appears only when the commercial breaks are lunched and then go away after them ends.

strong-code commented 3 years ago

Have we determined if twitch actually took the nuclear option and sends this screen to legitimate embedded players, vs somehow detecting the extension & only sending it to that? Are there "legitimate" embeds anywhere that appear to be ad exempt, that we could spoof?

I'm pretty sure they went nuclear, as I heard people complaining of purple screen on sites like twitchls and even @revzim said people are getting purple screen with his electron embedded player.

RightToBearArmsLOL commented 3 years ago

Don't have much to add in terms of stopping this problem, but just wanted to correct the above information that this popup shows on all streams. This will only show up on partnered/affiliate streams on twitch, the trouble is almost any streamer falls into that category so people falsely think it applies to all 3rd party embeds (with or without some form of adblocking software).

Confirmed this by watching a non-partner/non-affiliate stream for 8 hours total, alongside a partnered stream. Both via a 3rd party embed site. If anyone wants to test this they can use Destiny as a reference, he was recently unpartnered/unaffiliated by Twitch for TOS violations. Or you can use any small streamer that isn't a partner or affiliate if you prefer to test on your own. It baffles me that if Twitch is using this method to serve 3rd party embed sites with this screen, when they could serve the same embeds paid ads, prior to this change 3rd party embeds provided an ad-free experience even without adblocking, so its quite strange tbh. But Twitch regularly does things that make no sense so who knows...

r3ndd commented 3 years ago

@omgitsmoe Just because spoofing requests to the server did not work does not necessarily mean that it can't be circumvented in that way. I'm pretty sure the client scripts are keeping track of how long to display the purple screen for, so we'll have to modify them to fix it.

Geczy commented 3 years ago

When the purple ad gets displayed

<div data-test-selector="sad-overlay" class="tw-absolute tw-bottom-0 tw-left-0 tw-right-0 tw-top-0"></div>
t.prototype.render = function() {
    return this.props.stitchedAdUrl ? r.createElement(Bt.a, {
        attachTop: !0,
        attachLeft: !0,
        attachBottom: !0,
        attachRight: !0,
        position: Ht.o.Absolute
    }, r.createElement("div", {
        "data-test-selector": "sad-overlay",
        onClick: this.onClick
    })) : null
}

@omgitsmoe

twitch_correlator: t.twitchCorrelator,
ad_session_id: t.sessionID,
roll_type: t.roll,
time_break: t.duration,
brian6932 commented 3 years ago

This script is working under my userResourcesLocation in uBO (I use dev, but it's prob not necessary): https://raw.githubusercontent.com/Drizzlefrizzle/twitch/main/twitch4.js you might also need ffz