jspenguin2017 / uBlockProtector

An anti-adblock defuser for Nano Adblocker and uBlock Origin
GNU General Public License v3.0
748 stars 83 forks source link

pro-adblock site being treated as anti-adblock? #1097

Closed fivefilters closed 4 years ago

fivefilters commented 4 years ago

Hi there, I run blockads.fivefilters.org and am a little confused why it's listed here. I see these lines related to the site:

||blockads.fivefilters.org$inline-script
blockads.fivefilters.org###no-blocking:style(display: block !important;)

Nano Defender is described as an "anti-adblock defuser". So I expect to see filters targetting sites that are "anti-adblock": sites that are detecting ad-blocking to circumvent the ad-blocker or to pressure the user to disable the ad-blocker.

But blockads.fivefilters.org is a PRO-adblock page. We detect ad-blocking but only to congratulate the visitor for having it enabled or warn them to enable it if they haven't. There's really nothing sinister to "defuse" here. Instead, users running Nano Defender or subscribed to its list visiting our site are left confused thinking that they're not protected when in fact they are.

There's a post here on Reddit for example:

https://www.reddit.com/r/pihole/comments/e704jb/diagnosis_sometimes_it_isnt_pihole/

One reader on there running Nano Adblocker told me they had to disable "Nano Defender Integration" before blockads.fivefilters.org would report ad-blocking correctly.

Seeing as the site isn't anti-adblock but in fact pro-adblock, and seeing as it's causing some confusion amongst ad-block users, could you please remove it from this list?

jspenguin2017 commented 4 years ago

Anti-adblock is defined as any attempt to detect the presence of adblocker. I will clarify this in the readme.

jspenguin2017 commented 4 years ago

I just updated the readme, hopefully it's clearer now.

Note that the reason your domain is in the filter list is because someone reported it. The rule was added a while back, and back then I wasn't following the best practice of recording related issues. So unfortunately I'm not sure which issue it is.

ND (and its integration filter) require explicit user action to install, so I consider this issue an isolated case. I'll consider other actions if there are evidence that more users are confused about what ND does.

fivefilters commented 4 years ago

Thank you for the response.

I hope you get other input on this too, but personally, as a huge advocate of ad-blocking (one reason for creating the Block Ads! site), I don't agree with the description of anti-adblock as "any attempt to detect the presence of an adblocker."

It's true that most sites which use ad-block detection do so to thwart the ad-blocker, but it's the thwarting that makes it anti-adblock, not the detection. The Block Ads! site does adblock detection, but it is pro-adblock, not anti-.

You say you added the rules because someone reported it. I think part of the problem is that some people assume that by enabling a feature to neutralise anti-adblock sites, they are magically evading all adblock detection. Or feel that they should be. So I can see why someone might think that their ad-blocker is malfunctioning if a site can still detect they are running an ad-blocker after enabling such a feature. But as I'm sure you know, detecting ad-blocking is trivial. Isn't it better to inform users about the limitations of adblock detection and use the filters to actually stop sites that are using it in a user-hostile way?

At the moment, I think your current approach is giving some users a false sense of safety. I'm not suggesting you're doing that deliberately, but to demonstrate my point, here's another Reddit thread where Nano Defender and our Block Ads! site comes up (perhaps this is what resulted in the report):

Here there's concern that your Nano Defender isn't working on the Block Ads! site:

If it says Ad blocking enabled! then that's not a good news. I'm using ublock origin and nano defender for anti-adblock diffuser in firefox quantum but that site can still detect it.

The top-voted comment tries to reassure the user and makes the point I have tried to make above:

Honestly, detecting adblockers is trivial. There are many ways to do it, and the only way to make it undetectable is to disable it. We fix it for sites that detect anti-adblock as soon as they're shown to us, but there's no reason to be worried about a demo.

But at some point after this the rules targetting blockads.fivefilters.org must have been added to Nano Defender, so later in the thread a user comments:

I use uBlock Origin and Nano Defender. I tried the site OP mentioned and it detected that I was using an adblocker. Re-did the steps to integrate Nano Defender with uBlock and realized that I missed a step. After that, the site was no longer detecting my blocking.

Yes, now Nano Defender is explicitly targeting our site. The user feels a false sense of safety, unaware that any number of sites can still easily detect their ad-blocker.

So the question for me comes down to: is the goal of this project to stop any instance (out of limitless possibilities) of ad-block detection, good or bad, that someone submits to it? Because if it is, I think it may be doing more harm than good.

I do see a point in detecting and defusing anti-adblock measures, as stated on the Nano Defender web page, but as I explained above, I don't see how this can be described as that.

jspenguin2017 commented 4 years ago

NA and ND will fix non-sticky demos, this haven't changed for years. I understand some people have different definitions for terms, but I don't agree that my definition is wrong. Detection methods are exploiting side channels of adblockers, for good intentions or not, it's exploitation. So far there's no easy universal fix, so the community have been fixing them case by case.

You use a demo to tell users whether they have a good, bad ("Only partial blocking detected"), or no adblocker; I use the same demo to signal the presence and proper installation of ND. If you think doing so, ND is doing more harm than good, then I ask you: does testing the network connection to 2 domains properly evaluate whether an adblocker is good or bad? EasyList alone contains over 80 thousand rules, how can 2 tests suffice? Furthermore, just because an adblocker passed your tests does not mean it is able to block all ads, if you claim ND is giving out a false sense of safety, isn't your demo doing the same?

fivefilters commented 4 years ago

Hi again,

Detection methods are exploiting side channels of adblockers, for good intentions or not, it's exploitation.

I guess we really do disagree about the definition of anti-adblock then. I've never thought of ad-block detection as exploiting a weakness of ad-blockers.

You use a demo to tell users whether they have a good, bad ("Only partial blocking detected"), or no adblocker; I use the same demo to signal the presence and proper installation of ND.

The problem here is that most pages that use ad-block detection do so either to evade ad-blocking or to annoy the user about the presence of an ad-blocker (e.g. "no content for you", "please disable your ad-blocker", "please subscribe/donate/etc."). When you defuse such an anti-adblock measure, the user is not left feeling that their ad-blocker has failed them, they get to see/do what they came to the site to see/do. Most people who visit our Block Ads! page come to install an ad-blocker or test if their ad blocker is working. If they see "No ad-blocking detected!" because of such a filter, they will think that their ad-blocker has failed them. Only the more technical user will know that a specific filter/addon is responsible.

If you think doing so, ND is doing more harm than good, then I ask you: does testing the network connection to 2 domains properly evaluate whether an adblocker is good or bad?

Reading my reply again, I regret saying ND may be doing more harm than good. I don't think there are very many sites like ours that use ad-block detection to promote ad-blocking, so it's unlikely you'll end up with that many on your list. What I should have said is that I think it's creating a little more confusion than necessary. :)

But as to your question about the Block Ads! site, no, the goal wasn't to exhaustively evaluate an ad-blocker. The page was created as an easy way to get people who aren't using an ad-blocker to install one. When I made it uBlock Origin didn't have a particularly user-friendly website, just a Github page. I wanted a page people could share easily with friends and family and have the page detect their browser and suggest a suitable ad-block extension for their browser. It was never intended to be an exhaustive test (although there is a specific test aimed at detecting if the Acceptable Ads whitelist is enabled, to encourage users to switch away from Adblock Plus). But I don't see that as a flaw, although I am quite open to suggestions for improving it, it's long due an update.

jspenguin2017 commented 4 years ago

People who don't have an adblocker installed pretty much certainly don't have ND installed. I doubt many people will be confused by this. You did bring up one or two cases where someone was confused, however, I still consider those isolated cases.

NA and ND fix demos the way real cases are fixed, I see this as a proper representation and demonstration of the capabilities of NA and ND. Sticky real cases are not fixed just like sticky demos are not fixed. Just like people who install adblockers expect them to trigger simple demos, I think it's reasonable to believe that people who install ND would expect it to be able to fix simple demos. Therefore, I don't agree that this is causing confusion.

I get around 6 or 7 reports every day through Quick Issue Reporter, so I believe that the vast majority of people understand that NA and ND fix anti-adblock mostly on a case-by-case basis. I don't see evidence that many people believe ND is an universal fix and are confused when it failed. Also, it's stated on the homepage that ND is not magical and a lot of websites need to be fixed on a case-by-case basis.

Poopooracoocoo commented 4 years ago

https://blockads.fivefilters.org/ is great for testing my ad blocker and for testing nano defender! :D thank you jspenguin and fivefilters