reek / anti-adblock-killer

Anti-Adblock Killer helps you keep your Ad-Blocker active, when you visit a website and it asks you to disable.
http://reek.github.io/anti-adblock-killer/
Other
5.98k stars 761 forks source link

AAK script breaks tvrain.ru #2807

Open TheFinalCut83 opened 7 years ago

TheFinalCut83 commented 7 years ago

https://tvrain.ru/ With AAK script and without. Notes in the right frame are without pictures. Firefox 51.0.1 / Chrome 56, uBO 1.10.7rc4/1.10.4

uBO filters Adblock Warning Removal List Anti-Adblock Killer | Reek EasyList EasyPrivacy‎ Malvertising filter list by Disconnect‎ RUS: Adguard Russian Filter RUS: BitBlock List RUS: RU AdList

uBlock-user commented 7 years ago

Remove AAK and GreaseMonkey

TheFinalCut83 commented 7 years ago

And reinstall OS. Thanks for the "great" advice. Any constructive?

uBlock-user commented 7 years ago

AAK hasn't been updated in months and is no longer actively maintained, so basically a dead weight. You can carry on the dead weight if you like but my advice is the constructive advice. Your sarcasm is unwarranted. You won't get help from the man who wrote this script, so keep waiting for constructive advice which will never come.

If you don't want to remove GreaseMonkey, then don't, but remove AAK script though. You don't need it because all anti adblock scripts can be patched via uBO filters, so why bother running a java-script which is no longer maintained ? Think about it.

You already forked the repo. Why not fix the javascript yourself ? Otherwise, remove AAK. I ran AAK since mid 2015 and removed it in mid 2016 when reek ceased maintainence and releases and I found all anti adblock scripts can be patched via filters so I don't need it. Try and see for yourself. If you're still hell bent on keeping it, then you're in a for a long haul.

TheFinalCut83 commented 7 years ago

Why are you so strongly dislike GreaseMonkey? AAK - not the only userscript in the universe. GM is very helpful addon.

jspenguin2017 commented 7 years ago

Looks like the website's "main script" will try to assign FuckAdBlock and fails because it is set to read-only by AAK. So it didn't properly load other scripts. all.js has over 3000 lines after that, and it crashed when assigning FuckAdBlock because it is in strict mode. Maybe load all.js, remove strict mode, then eval it?

jspenguin2017 commented 7 years ago

I put it in my script, have a try: https://x01x012013.github.io/AdBlockProtector/ It may not work perfectly since the script is loaded in the wrong order. If this fix isn't acceptable, let me know, I have a way that will make it work properly, but will freeze the page when loading.

Update: I did fix support for Greasemonkey, but now the Greasemonkey version exposes privileged functions. If you care about security, please switch to Tampermonkey if you haven't already.

This is the code that I added:

            onEvent("load", function () {
                const source = $("script[src*='/static/app/build/all.js']").attr("src");
                GM_xmlhttpRequest({
                    method: "GET",
                    url: source,
                    onload: function (response) {
                        unsafeWindow.eval(response.responseText.replace(/\"use strict\";/g, ""));
                    }
                });
            });
TheFinalCut83 commented 7 years ago

@X01X012013 Thanks, your fix works! And thanks for mentioning Tampermonkey. I forgot that it has Firefox version.

jspenguin2017 commented 7 years ago

I have to say Greasemonkey makes developer's life a lot harder, it hides all errors and have weird security policies where you can't just write into unsafeWindow, you need to eval it. Their excuse is FireFox update bla bla bla, but why Tampermonkey works just fine? FireFox's decision is also weird, I don't see how is that safer, in fact, that is much more dangerous since if you didn't sanitize stuff properly, eval can execute things that is meant to be string literal. I know you can use cloneInto, exportFunction, and createObjectIn, but these break cross-browser compatibility, and I'm not sure if they will work for defining read-only variables.

If you are a normal user who uses Greasemoneky, please try out Tampermonkey. It's not much different and it helps us to develop Userscripts faster.