Anti adblock warning is displayed on https://www.meta-chart.com. They are using Admiral's (https://getadmiral.com) anti adblock technology.
Error URL: https://www.meta-chart.com
Arrived at this domain from https://github.com/easylist/easylist/commit/a4d380ad1a3b33a0fab679a1a8c5a791321622b3#commitcomment-23587399
@ryanbr There removed an Admiral ad domain from EasyList citing a DMCA request which has not been posted publicly till now. The filter that has been removed is:
||functionalclam.com^$third-party
This ad domain is being used on this website (meta-chart.com) among others to display the anti adblock warning.
_Note: Using uBO 1.13.8 with the default filters and settings._
Copyright law does not protect domain names, so how can this result in a valid DMCA request?
Anyway
meta-chart.com##script:inject(setTimeout-defuser.js, "ubo", 300)
meta-chart.com##script:inject(setTimeout-defuser.js, [native code], 15000)
fixes your issue.
DMCA has nothing to do with filters and filterlists and can't be used to compel someone to remove a filter from filterlist. This is laughable and bogus use of DMCA at best.
Solution does not seem to work for Nightly + uBO 1.13.9b8. I wonder whether this is a Nightly bug causing scriptlets to not be injected, but I can defuse properly with bab-defuser.js on blockadblock.com.
I got it to work with meta-chart.com##script:inject(setTimeout-defuser.js, setTimeout).
Anybody else can reproduce the issue with Nightly?
I created a new generic scriptlet to make it easier to abort according to current inline script rather than arguments passed to specific function calls.
For example, in the current case, this works without the need for setTimeout-defuser.js:
meta-chart.com##script:inject(abort-current-inline-script.js, Promise)
Promise is the entry point, inside which the scriptlet will look at the current inline script to find out if it matches the 3rd argument. No 3rd argument means always matches. In plain English words, the filter above means: "If window.Promise is accessed directly from within any inline script, then abort execution of that inline script". A 3rd argument would be used to further narrow by requiring a match with the text content of the current inline script.
If I understood this right, what DMCA does is forcing websites like Easylist to delete some others so they can have ads. So, when we use adblocks like ublock origin, it doesn't download "website X" from Easylist, therefore, it allows this ad. Am I right? then, why not allowing the user to export our current list of websites and just add more with the time so "website X" is in our filters and can be blocked?
The DMCA-complaint states that:
The code in question attempts to circumvent copyright access controls to copyrighted content on the site listed in the title of this commit.
So in essence Admiral is arguing that ||functionalclam.com^$third-party violates the right of the website
mathwarehouse.com, to only allow access to their copyrighted content if you also connect to functionalclam.com.
I do not know what you mean by
why not allowing the user to export our current list of websites and just add more with the time so "website X" is in our filters and can be blocked?
you can already import any list you like to your uBO setup and add any website to your own filter list.
@SMed79 @okiehsch @gorhill I think this might be the right place to ask. So, what came out of the DMCA controversy? I haven't been able to follow it after the initial day.
@gotitbro Easylist caved in and removed the filter which was what Admiral wanted after all, however this action caused Streisand_effect on a widespread on Github and in other places and functionalclam.com was blocked on multiple repositories, on top of that, BarbBlock, an extension built to fight DMCA came into existence.
it seems meta-chart.com##script:inject(abort-current-inline-script.js, Promise) does not work anymore
The filter still works for me on that site. If I un-check "uBlock filters", I get the anti-blocker warning. If I enable "uBlock filters", no warning.
I tested chrome 61, 62 + uBo 1.14.8 + default filters (included updated ublock filters), firefox 57 (uBo 1.14.11rc8). I get always the warning msg.
With Chrome 61, Firefox 56 and uBO 1.14.8, or 1.14.11rc8, all works fine on my end.
I used 4 different browsers, same setup in uBo, still getting the warning. No idea what's happening.
Tested also in opera, uBo 1.13.8, same behaviour.
I tried with two different machines with different OSes, Windows 10 and Linux (Manjaro), works with both
setups on my end.
Does
meta-chart.com##script:inject(setTimeout-defuser.js, "ubo", 300)
meta-chart.com##script:inject(setTimeout-defuser.js, [native code], 15000)
work for you?
Your filters are working in chrome 61, 62, opera 48.
Don't work in FF 57 + uBo 1.4.11rc8 (probably because uBo does not read anymore resources.txt ? )
No, Firefox needs another setTimeout-call defused, seems new to me, anyway
meta-chart.com##script:inject(setTimeout-defuser.js, "ubo", 300)
meta-chart.com##script:inject(setTimeout-defuser.js, [native code], 15000)
meta-chart.com##script:inject(setTimeout-defuser.js, [native code], 0)
works for me and I will have to add
example.com##script:inject(setTimeout-defuser.js, [native code], 0) to uBO-filters, because they do not work, using Firefox, right now on my end, example link:
http://www.post-gazette.com/business/money/2017/09/29/More-parents-are-finding-ways-to-save-money-for-college/stories/201709250142
yes, the above 3 filters are working for me too in FF.
There is still the question why
meta-chart.com##script:inject(abort-current-inline-script.js, Promise) does not work for you.
Does meta-chart.com##script:inject(abort-current-inline-script.js, setTimeout) work for you?
If not can you look at the source-code of meta-chart.com to check if we both get served the
same document.
Search for window.promise, you should get two hits.
yes I see window.promise twice, see the inline script here:
https://mega.nz/#!WcwkADha!EBXXj3CLeMvAE4SD1MhkzrAbFGqf6ZFqt1S7z3qBM3c
and this filter
meta-chart.com##script:inject(abort-current-inline-script.js, setTimeout)
does not work for me (in chrome)
Well, then I don't know why it does not work for you, they both work on my end, sorry.
I suppose meta-calculator.com also does not work on your end, uBO also uses
##script:inject(abort-current-inline-script.js, Promise) for that domain.
meta-calculator.com ...is working fine.
Well, now I am officially without a clue what the problem is on your end 馃槙 .
well, no big deal from my part, I arrived here from the other issue (receive-a-sms.com) and I wanted to test it ..
And I realized that I have to add another filter for Firefox users, so it was a productive confusion.
@mapx- Can you put somewhere the raw content of view-source:https://www.meta-chart.com/? It's as if you are not served the same thing as us.
@okiehsch @gorhill So filters not needed for Chromium users will be served to them as well? I believe there should be a different list for such issues specific to the workings of Firefox and enabled for default for the users of Firefox.
Just as was the need for uBO Extra for Chromium users.
@gorhill here the raw content:
https://mega.nz/#!mUgWwAyY!9wtTaRbWaOKtX1C4d2h1pcA5AQRLAWxx5XuxnqMKVXY
@mapx- do you have Peter Lowe鈥檚 list enabled?
If you have, is the connection to functionalclam.com blocked or not?
No, I don't use Peter Lowe's list.
However, with / without that list the same result.
I tested chrome 61, 62 + uBo 1.14.8 + default filters
Well, without that list, which is part of the default setup, I can reproduce your issue and it also explains why meta-calculator.com does work on your end, because there is no connection to limpingline.com via functionalclam.com at that site.
right. Now meta-chart is working fine, but ... my test page (axistrivia) still does not (even if functionalclam and limpingline are blocked). However, does not matter.
No, your testpage also works if I block limpingline on my end.
If you go to meta-chart.com with functionalclam blocked, there should not be any
limpingline-request anyway.
yes, (again) my fault (I've commented the promise filter for axistrivia).
On meta I can see only functionalclam, on axistrivia I see both of them:
We finally have identical results :)
well, now I will enable peter lowe's list in all my browsers.
@okiehsch , 1 more thing: could you explain how did you find the necessary parameters for setTimeout-defuser.js (300, 15000) in these filters ?
meta-chart.com##script:inject(setTimeout-defuser.js, "ubo", 300)
meta-chart.com##script:inject(setTimeout-defuser.js, [native code], 15000)
thank you
Well, meta-chart.com is a rather difficult example because of the sheer amount of setTimeout-calls.
meta-chart.com##script:inject(setTimeout-logger.js)script:inject(abort-current-inline-script.js, Promise), because that filter disablessetTimeout-calls.meta-chart.comHow you find the right parameter can be rather tricky.
And just fyi example.com##script:inject(setTimeout-defuser.js) defuses all setTimeout calls of that site.
Most helpful comment
I created a new generic scriptlet to make it easier to abort according to current inline script rather than arguments passed to specific function calls.
For example, in the current case, this works without the need for
setTimeout-defuser.js:Promiseis the entry point, inside which the scriptlet will look at the current inline script to find out if it matches the 3rd argument. No 3rd argument means always matches. In plain English words, the filter above means: "Ifwindow.Promiseis accessed directly from within any inline script, then abort execution of that inline script". A 3rd argument would be used to further narrow by requiring a match with the text content of the current inline script.