pixeltris / TwitchAdSolutions

7.96k stars 456 forks source link

Any solutions for iOS? #48

Open Proaxel opened 3 years ago

Proaxel commented 3 years ago

I just want to start with giving a ton of thanks for this list, it has saved me a lot of sanity since they started their anti-Adblock efforts last year.

However I also watch a lot of Twitch on my jailbroken iOS device. Twitch has also implemented their Adblock bypass on iOS, which defeated the TwitchNoAds jailbreak tweak, the only working solution at the time. I also tried downgrading the app to a version way before then but even that didn’t work. The developer pushed one update for the tweak that attempted to fix the issue but it didn’t work, and they seem to have abandoned it afterwards. No one has came forward with a new Adblock solution ever since.

Does anyone here know of any working solutions for iOS? Or is it there a possibility that one can perhaps port one of the solutions on this list to work on iOS?

Edit 5/5/22: After what felt like ages, we finally have solutions. TwitchAdBlock by level3tjg or TwitchToolbox by HearseDev

revunix commented 3 years ago

I'm using NextDNS with their default AdBlock Filter. I never see ads in the Twitch iOS App.

Proaxel commented 3 years ago

I'm using NextDNS with their default AdBlock Filter. I never see ads in the Twitch iOS App.

I took a look at it… and I have no idea how to set it up… I followed what it said here but nothing on the internet loads when I have the NextDNS selected in the DNS settings. https://www.reddit.com/r/nextdns/comments/j4y72o/nextdns_setup_on_ios_14/

Could you provide steps on how you set it up for adblocking?

pixeltris commented 3 years ago

If you're using a web browser userscript solutions might work. AdGuard for iOS might also work (but I'm not sure if it bundles AdGuard Extra which is the thing which blocks Twitch ads).

Proaxel commented 3 years ago

If you're using a web browser userscript solutions might work. AdGuard for iOS might also work (but I'm not sure if it bundles AdGuard Extra which is the thing which blocks Twitch ads).

I didn't know that userscripts work on iOS, how does one set them up? My devices are jailbroken on iOS 14 if that helps anything

revunix commented 3 years ago

Okay, i'm also getting ads again.

pixeltris commented 3 years ago

It depends on the browser you're on. You'd need a browser which supports Tampermonkey or Greasemonkey. If these aren't supported on any iOS browsers then you could use uBlock Origin and use one of the scripts in the README. Though I've never actually tested this so maybe some modifications would be required to the scripts.

Proaxel commented 3 years ago

It depends on the browser you're on. You'd need a browser which supports Tampermonkey or Greasemonkey. If these aren't supported on any iOS browsers then you could use uBlock Origin and use one of the scripts in the README. Though I've never actually tested this so maybe some modifications would be required to the scripts.

I don't think ANY sort of userscripts can work on iOS, at least not easily... I did a bit of looking around and it seems theoretically possible, but it seems like a ton of hoops will need to be jumped through, and even then there's still some nasty trade off for each. https://apple.stackexchange.com/questions/31562/is-there-something-similar-to-the-greasemonkey-script-system-for-a-browser-in-io/408352#408352

I presume you're not familiar with how iOS works; While Firefox and Chrome do exist on iOS, extensions are not supported on them. That means that you can't just go to Tampermonkey or Greasemonkey's respective extension store pages and tap install and they work, it just simply doesn't let you.

Only Safari supports extensions, and it literally just got it with iOS 15. Could it be possible to put together an Twitch adblock extension for it?

I have no clue, but besides all this, Twitch on mobile web browsers has become somewhat unintuitive to say the least... I would prefer sticking to the app itself whenever possible.

(I forgot to mention, someone is actively working on getting userscripts working here: https://github.com/quoid/userscripts/issues/135)

pixeltris commented 3 years ago

If you want to avoid ads on the native app you'll need to mod it somehow, or modify the network traffic and do something similar to notify-strip. Probably modifying traffic would be the easier of the two. But I'm not familiar with iOS so I'm not much help.

b5mith commented 3 years ago

In my case the solution was to use SteamLink app to RDP to a PC.

  1. setup a PC with decent specs
  2. start Steam in Big Picture mode (important, otherwise low framerate)
  3. minimise Big Picture
  4. use SteamLink on your iPad to connect to it
  5. open your browser configured with notify-strip

SteamLink is clunky, especially for things such as mouse scrolling. But you do get somewhat used to it. I prefer Moonlight iOS, but it suffers from a bug that causes stuttering.

chowder commented 3 years ago

I don't think ANY sort of userscripts can work on iOS, at least not easily... I did a bit of looking around and it seems theoretically possible, but it seems like a ton of hoops will need to be jumped through, and even then there's still some nasty trade off for each. https://apple.stackexchange.com/questions/31562/is-there-something-similar-to-the-greasemonkey-script-system-for-a-browser-in-io/408352#408352

There's Hyperweb which allows you to use custom userscripts with Safari.

Proaxel commented 3 years ago

It's a shame no one here has found anything that works on the app itself but I'll be keeping an eye out.

If anyone out there has found any solution for the iOS Twitch app, whether you found this issue through Google or whatnot, please don't hesitate to share it here, it doesn't matter how old this issue is. I'll still have reply notifications for this enabled.

JmStyx commented 2 years ago

Orion browser : https://testflight.apple.com/join/DeC8ZDnu
This browser allows you to install Firefox or chrome extensions on IOS. You can install either video ad block for twitch or AdGuard extra through the browser, then restart the browser after you install the extension.

Proaxel commented 2 years ago

Orion browser : https://testflight.apple.com/join/DeC8ZDnu This browser allows you to install Firefox or chrome extensions on IOS. You can install either video ad block for twitch or AdGuard extra through the browser, then restart the browser after you install the extension.

I don’t seem to be getting prerolls anymore, but if I do something that pauses the stream, like go to the Home Screen or a different app without putting the stream in Picture and Picture first, I get served an ad that doesn’t go away until it plays out in full.

0A80C419-C051-4773-83B2-668A6DD0714D

I’m guessing that this may be because of the mobile site and thus the mobile player being forced. I imagine the extension doesn’t work very well on the mobile player. Is there a way to force the desktop version of the site? “Request Desktop Site” doesn’t seem to work

JmStyx commented 2 years ago

No, I don't think there's any other way to request the desktop version. I can't reproduce the issue you're having with ads when you go to another app, it might be because I'm using an iPad. Are you using video ad block? Give AdGuard extra a try and pair it with uBlock Origin to see if that fixes your problem.

Proaxel commented 2 years ago

I installed uBlock Origin and Adguard Extra and it still happens... in fact I still need to do some testing to see if any of these ads are affected at all. So far I only seem to get an ad if the stream is stopped and started again, I don't seem to get prerolls unless an ad was spawned in the aformentioned way and interrupted. I still need to check automatic and manually triggered midrolls. It doesn't 100% work but in the meantime I guess this will do for now. I just hope someone at some point develops a new app or some modified version of the Twitch app that implements one of the solutions used in this list... I'm jailbroken so it doesn't need to be approved for the appstore.

Side note, this is the first time I'm using the mobile site in a while and they seemed to have removed the ability to login and chat, was it always like this or did they do this to encourage you to use the app? Not to mention you can't change the quality at all, it seems to be locked on automatic.

Another side note how did you first find out about this Orion browser? This seems like the iOS browser I've always wanted, and yet it flew completely under my radar...

JmStyx commented 2 years ago

I found this browser on r/freemediaheckyeah just randomly and gave it a try.

revunix commented 2 years ago

Maybe try this app here: https://apps.apple.com/de/app/macaque/id1595306197?l=en

Proaxel commented 2 years ago

Maybe try this app here: https://apps.apple.com/de/app/macaque/id1595306197?l=en

That’s a paid app, so I’d like actual confirmation that it works on an iPhone before considering it. A “Maybe” isn’t sufficient.

revunix commented 2 years ago

That’s a paid app, so I’d like actual confirmation that it works on an iPhone before considering it. A “Maybe” isn’t sufficient.

You can refund if not working.

JmStyx commented 2 years ago

I sideloaded a twitch ipa through AltStore and I was seeing ads ever since I downloaded it , but yesterday I stopped seeing ads for some reason. This ipa also enables low latency player and freemote.

https://mega.nz/file/42x0RTyb#eQGn1ZDnzr90TPbkuqvTihMFdYPSZo3jW9iSmgr0oik

Proaxel commented 2 years ago

Sooo yeah, my lazy ass never got around to reporting back until now. The short answer is, Orion does not work at all, even with the extensions. Back to square one, iOS still has no working solution as of this comment.

If you think you’re not getting ads, double check by pulling up a stream that you know for certain you do not have a subscription for and does ad breaks and/or runs ads manually. Saltybet manually runs ads during “Changing game mode” breaks, and iirc TwitchPlaysPokémon does an hourly ad break whenever they’re playing Battle Revolution. XPlay takes a lot of ad breaks when they’re live, that one day they were doing ad breaks every 10 minutes.

You must go through the entire break without an ad, if you get served an ad during those breaks then you haven’t blocked ads, something else is making you think otherwise. Maybe you were gifted a subscription for the streamer you watch and you failed to notice. Or maybe you live in a country where the ad system isn’t as prominent.

JmStyx commented 2 years ago

I just recently found out about this user scripts app and it seems to be working well so far. You just have to download the app and as well as the notify strip userscript of this GitHub. Anyway here is the app https://apps.apple.com/us/app/userscripts/id1463298887. One last thing To run Userscripts on iOS you should be on iOS 15.1 or higher.

Proaxel commented 2 years ago

I just recently found out about this user scripts app and it seems to be working well so far. You just have to download the app and as well as the notify strip userscript of this GitHub. Anyway here is the app https://apps.apple.com/us/app/userscripts/id1463298887. One last thing To run Userscripts on iOS you should be on iOS 15.1 or higher.

Well that’s a bummer for me, because as of this writing iOS 15.x does not have any jailbreak right now. I’m on iOS 14.5 and I’d rather keep my jailbreak as long as possible. Do you by any chance know of a way to get this to work on iOS 14.x?

In the meantime can someone else with an iOS 15 device try this and see if it works?

JmStyx commented 2 years ago

Sorry, I don't know a workaround to get this to work on IOS 14. You can try asking the developer to see if he can help you with a solution. https://github.com/quoid/userscripts

level3tjg commented 2 years ago

I've updated and open-sourced my solution for the iOS app, It should work on version 11.2 up to the latest (12.8.1 as of now.) Sideloading should also work if you're on iOS 15

https://github.com/level3tjg/TwitchAdBlock

Proaxel commented 2 years ago

I've updated and open-sourced my solution for the iOS app, It should work on version 11.2 up to the latest (12.8.1 as of now.) Sideloading should also work if you're on iOS 15

https://github.com/level3tjg/TwitchAdBlock

I presume this is where a jailbroken user is supposed to download it right?

What about sideloading it, where does one find the download for that?

level3tjg commented 2 years ago

I presume this is where a jailbroken user is supposed to download it right?

Correct

What about sideloading it, where does one find the download for that?

You can download the deb or compile it yourself and inject it with a tool like Sideloadly or Azule. I'll try to add IPAs to the github releases later so you can just download and install it without any tools (other than whatever you're using to install it ofc)

Proaxel commented 2 years ago

Thank you!!! Finally, after... however long it took, something that actually 100% works! At least as far as I can tell.

I tested rapidly switching between different channels, that, at least in my experience, tends to trigger a preroll ad the most often. Not a single ad no matter how many times I switched. I also tested manual rolls by watching Saltybet during gamemode change intermissions, the channel always seems to manually run an ad during those. Didn't get an ad there either.

Now the question is how long it takes until it gets broken again. By either Twitch, or an iOS update, or whatever...

Just one question, @level3tjg does the method you use similar at all to the latest version of TwitchToolbox which also just got an update to block ads? Is it okay to install both? I would like the features that tweak adds.

(Also someone mentioned your tweak doesn't work in one of the comments, you may want to go set that straight yourself)

level3tjg commented 2 years ago

is method you use similar at all to the latest version of TwitchToolbox which also just got an update to block ads?

Looks like TwitchToolbox switched to my method at some point. If you want to use it instead that's fine, it should work exactly the same

ghost commented 2 years ago

I think Adblock Luna helped block ads in the Twitch app however there were some concerns shared about privacy and it...

Proaxel commented 2 years ago

Not sure why you'd bring that up when we already have a working solution, especially if it's something that you are not sure yourself.

I guess I should provide a status update myself, been running TwitchToolbox since the last comment and it's still 100% ad-free! I think I should still keep this issue open so that it's easier to find for others that may be searching, or in the case that something breaks again. Someone could also update the Readme.md to include these two methods.

Proaxel commented 2 years ago

Sooo, bad news. Just when I thought they backed down, the bastards at Twitch changed something over the last couple days, and whatever they did is now causing preroll ads to sneak past Twitch Toolbox. I got slapped with a 5 second followed immediately by a 30 second ad. Glad to see that they're responding by making even longer.

I took a look inside the dev of Twitch Toolbox's discord server and Hearse said that they are aware. According to their chat messages they don't seem to be stumped on another solution, but rather the problem is that they haven't had the time to really work on it. They did mention that they are a college student so yeah, that's pretty understandable.

So yeah, we could be back at square one again. @level3tjg since you mentioned your solutions are similar, perhaps you can get into touch with them and provide assistance?

level3tjg commented 2 years ago

Server sided "stitched" ads are starting to pop up for some accounts, they're embedded into the stream itself so there's no way to block them with traditional methods. Hearse mentioned that their method of adblocking using a proxy is still viable but needs more work done. I'll be doing some research on how Twitch servers decide who gets stitched ads or not and see if there's a way to disable it.

level3tjg commented 2 years ago

Looks like the only way to really get around the new ad system being enforced on iOS is porting the existing userscripts to the app... not impossible but it will take some time.

Proaxel commented 2 years ago

Something I'm wondering is, why did Twitch roll out these new embedded ads to only mobile while but not to the desktop browser? Unless the new ads on mobile are the same thing the desktop browser had been using for a while now

berkant commented 2 years ago

how Twitch servers decide who gets stitched ads or not

By default, Twitch logs you (or, your device ID) as an ad block-enabled device and returns server_ads: true in your Usher token. Nevertheless, the Twitch client (at least some of them, e.g. Web) still tries to request and run client side ads, and sends Spade events (usually a POST to pdx01) with the results. Then, they run a periodic task and query an aggregation of these events (per user?) to check if your device ID ever successfully ran client side ads (which obviously means you don't have ad blocker because otherwise the media files and tracking URLs in VAES response would be blocked and a failure event would instead be sent to Spade), and assign your device ID as either ad block-enabled or -disabled depending on the results. Having been deemed an ad block-disabled device, you would see server_ads: false in Usher responses.

Proaxel commented 1 year ago

@level3tjg Looks like Twitch engineers are on the offensive again. Getting a 15 second "preparing your stream" preroll through the Twitch Toolbox proxy.

image

level3tjg commented 1 year ago

@level3tjg Looks like Twitch engineers are on the offensive again. Getting a 15 second "preparing your stream" preroll through the Twitch Toolbox proxy.

Yep, looks like they just want to waste ad blockers' time now. I'm working on rewriting vaft to use in the app instead of proxies, nothing works yet but it looks doable. If it does end up working it'll only work with "Low latency player" enabled, when disabled it's not possible to intercept certain web requests without a jailbreak.

BarryThrill commented 1 year ago

Newbie here! Starting to recently see ads when using Blokada and its been working fine for months until last week. I been trying to search and search and here I am finding this thread. I really wonder whats the process and what do I need to do to be able to skip the ads from here on? :)

krystian3w commented 1 year ago

Monitor new domains to block at hosts/dns level if these still exist - ads can by moved to catalog/folder from subdomains.

BarryThrill commented 1 year ago

Monitor new domains to block at hosts/dns level if these still exist - ads can by moved to catalog/folder from subdomains.

The problem is that I been trying do that but nothing the specific one for the ads :/ I managed to even block so I cant watch 1080, cant see thumbnails and even not see followrs hah! So if you know any specific dns/domains, LMK

BarryThrill commented 1 year ago

Is it possible to use this: https://raw.githubusercontent.com/pixeltris/TwitchAdSolutions/master/video-swap-new/video-swap-new.user.js using Safari? Tried to use userscript but all im getting is:

03B409DF-522E-448A-968E-C58BEB1E8CA7

Any suggestions?

krystian3w commented 1 year ago

Maybe by this, but many functions may need rewrite or no possible add support:

https://apps.apple.com/us/app/userscripts/id1463298887?platform=iphone

BarryThrill commented 1 year ago

Maybe by this, but many functions may need rewrite or no possible add support:

https://apps.apple.com/us/app/userscripts/id1463298887?platform=iphone

Yupp thats the one I am using. Thats what i get error when trying to import @pixeltris script to userscript

panwato commented 1 year ago

Is it possible to use this: https://raw.githubusercontent.com/pixeltris/TwitchAdSolutions/master/video-swap-new/video-swap-new.user.js using Safari? Tried to use userscript but all im getting is:

03B409DF-522E-448A-968E-C58BEB1E8CA7

Any suggestions?

Don’t open the link, long press and download. Now in Userscripts app add the folder “downloads”. Voilà

F1C7F3D6-F1FF-47E2-9BC0-FF25BA4F7212

panwato commented 1 year ago

New update in level3tjg. It seems is working. I don’t have pre-roll ads.

https://github.com/level3tjg/TwitchAdBlock/releases

Proaxel commented 11 months ago

Thought I'd report with an update. Since my last comment in this issue thread, I've been sideloading a release of TwitchToolbox I got off appDB, and a few months ago I switched back to just using level3tjg's TwitchAdBlock. The Twitch Toolbox tweak has been abandoned by the dev and has fallen into disrepair with custom emotes not showing up correctly or at all 90% of the time, and the app crashing when you tap on your profile picture thus rendering the settings menu completely inaccessible. I think it just straight up crashes shortly after launching to the following page now, unless you use a specific version on appDB. Hence why I've just decided to give up on it entirely and go back to using just level3tjg TwitchAdBlock. Unfortunately TwitchToolbox seemed to be the only way to have working custom emotes in the official Twitch app, and I don't think anything else is going to be showing up soon.

But the important thing here is I don't recall any prerolls, midrolls, or even manual rolls getting through in both apps at all this year. I guess Twitch's priorities have been placed elsewhere this past year? Either way, thank you level3tjg for keeping the Twitch app usable!

But there is still a problem. At some point recently, I don't know when exactly but I guess I first noticed it sometime in July, the Low Latency option has completely disappeared from the video player options menu in both of these modded apps. It appears just fine in the stock app. But both TwitchToolbox and TwitchAdblock no longer have the option, even though I swear that the option has been available for at least a couple years now. Something is now preventing it from showing up. Something to look into?

Another thing. A new open source Twitch app called Frosty has taken to the iOS store earlier this year. https://github.com/tommyxchow/frosty It has custom emote support, but no ad blocking. @level3tjg, if you haven't already, since it is open source can you look into seeing if you can implement ad blocking into it? It seems to use the iOS web browser player which seems to be a whole different beast to work with compared to the first party Twitch app... but I thought I would try asking anyway.

level3tjg commented 11 months ago

Been a while since I've worked on anything Twitch related but I had already attempted to load the adblock userscripts into frosty with no success, I suspect it was something to do with webkit's userscript api being unpolished on iOS 14. I have a jailbroken device on iOS 16 now so I can go back and check to see if it works now that userscript apis are public since iOS 15.

The low latency option only shows when the bundle id is tv.twitch. TwitchAdBlock contains code that spoofs the bundle id, it's possible that's broken with an iOS update.

I've spoken with the dev of TwitchToolbox and have access to the source code and permission to update it but haven't had the time to look over it until now. Still deciding whether I want to update it or start from scratch, I think there are better ways to add custom emotes to the app (TT emotes are a fork of Freemote)

I'm also puzzled as to why they haven't decided to patch the ad blocking method I'm using. I have no idea why it works, it only works on iOS for unknown reasons and would be extremely easy to fix. (Don't tell the engineers @ Twitch)

Proaxel commented 8 months ago

Whelp, everything was nice for quite a while there, but as of some point in the last 24 hours Twitch has apparently updated something and now both preroll and random midroll ads are back on mobile once more.

I have recently started dual wielding an Android phone earlier last month and PurpleTV, the app that I was using there, was also ad-free up until today, so this was definitely something new on Twitch's end. The modified Twitch app scene is a lot more active on Android so I'll be keeping an eye on those and if one of them comes up with a solution I'll point it out and hopefully it can maybe be brought over to iOS as well.

level3tjg commented 8 months ago

as of some point in the last 24 hours Twitch has apparently updated something and now both preroll and random midroll ads are back on mobile once more.

I'm not able to reproduce at all, PurpleTV and the iOS tweak both work for me. Have you tried with a different account?