Could be ABP invisible to sites ? NO. See why.

Everything about using Adblock Plus on Mozilla Firefox, Thunderbird and SeaMonkey
Locked
kukla
Posts: 38
Joined: Wed May 25, 2011 8:40 pm

Could be ABP invisible to sites ? NO. See why.

Post by kukla »

To begin with, I don't know how they can tell that an adblocker is being used, but would it be possible for ABP (or any other adblocker, for that matter), to be written in such a way as to be invisible to sites or services objecting to its use?

If it can't be made invisible, then, similar to the way a user agent can be spoofed, some way of tricking a site into thinking all ads are being accepted.
User avatar
mapx
Posts: 21940
Joined: Thu Jan 06, 2011 2:01 pm

Re: Re. Sites/Services disabled when using ABP

Post by mapx »

no, there is no possibility to make it invisible.
the adblockers can't be detected directly, but by testing some elements that should be in the page (and ABP blocks or hides). If the elements aren't found, well, they push out some detecting message.
kukla
Posts: 38
Joined: Wed May 25, 2011 8:40 pm

Re: Re. Sites/Services disabled when using ABP

Post by kukla »

mapx wrote:no, there is no possibility to make it invisible.
the adblockers can't be detected directly, but by testing some elements that should be in the page (and ABP blocks or hides). If the elements aren't found, well, they push out some detecting message.
If possible, without getting into the very technical details, can you please explain how a site can see what elements of an ad are being hidden or blocked locally? In other words, how can they see what I'm allowing or not on my computer? How is it possible for a site to get this kind of outgoing feedback about what's being hidden, and why can't that kind of feedback be blocked in some manner?
lewisje
Posts: 2743
Joined: Mon Jun 14, 2010 12:07 pm

Re: Re. Sites/Services disabled when using ABP

Post by lewisje »

For example, Javascript can detect something like

Code: Select all

document.getElementById('ad_1').clientHeight > 0 //if false, it was hidden
or

Code: Select all

typeof variableSetByTrackingScript === 'undefined' //if true, the tracking script failed to load
Stuff like this runs on your browser and is able to check the current state of the page, as rendered in your browser, and it's part of how the modern Web works; the anti-Adblock scripts don't even need to report back home about suspected ad-blockers, although they may try.

This is why sometimes UserScripts are used, on a case-by-case basis, to cancel particular anti-Adblock scripts; even this approach isn't perfect, but it's another tool in our arsenal.

A harsher tactic that is useful for primarily text- and image-based pages with little interaction or rich content is to block inline scripts altogether, something that NoScript and uBlock Origin can do; it's what I did for liberallogic101.com (a fun place to learn how the Right misunderstands the Left in the USA) when i couldn't figure out how else to foil its anti-Adblock system (I use a Hosts file to block a certain tracking domain, so the usual ABP-style exceptions didn't work).
There's a buzzin' in my brain I really can't explain; I think about it before they make me go to bed.
User avatar
mapx
Posts: 21940
Joined: Thu Jan 06, 2011 2:01 pm

Re: Re. Sites/Services disabled when using ABP

Post by mapx »

example:

- go to http://www.videoweed.es/file/407d0ac834987
- click play ==> you'll get an anti adblock message
- why ?

the element (script) http://www.videoweed.es/banner.php?id=4212&size=728x90
is blocked by this filter: /banner.php

the content of that script:
var v728x90=1;

see the page source, this piece of code:

Code: Select all

            var flashvars = {};
			flashvars.width=600;
			flashvars.height=450;

			flashvars.domain="http://www.videoweed.es";
			flashvars.file="407d0ac834987";
			flashvars.filekey="95.233.189.29-52cb354f9d09152002e546d06d721838";
			flashvars.advURL="0";
			flashvars.autoplay="false";
			if (typeof v728x90 !== 'undefined') {
flashvars.cid="1";
} else {
flashvars.cid="104";
}
it's the point where the player will be called with parameters (flashvars)
if the variable v728x90 isnt defined (and due to that blocked script the variable does not exist) ==> the player will be called to display the anti adblock message
(this post was redacted due to legal policy reasons)

and ...they (site owners / webmasters) will search for a new trick ...
Locked