Detecting AdBlock: conflicts and collaboration
A long discussion started a couple of days back on the Greasemonkey mailinglist: should Greasemonkey let websites know that it is running (using some kind of special header)?
I was just exploring the DOM to try and write a script (FitSizeToTablet, more info at the end of the post). To my surprise, the javascript shell listed an _AdblockFiltered property on the window object. It not only makes AdBlock detectable to script running in the page, it actually lists all the urls that where blocked for this page.
I couldn't find any info about this on Google, but after asking on the AdBlock forums, it looks like it's not there on purpose. This property isn't the only way to detect adblocking, but the fact that this property is set shows that publishers haven't reacted to AdBlock yet. It's probably because AdBlock is only a percentage of Firefox users, which is only a small percentage of all users...
Anyways, the discussion on whether Greasemonkey should try to stay as invisible as possible is still going on.
Staying stealth doesn't avoid the problem, it only delays it. Having such a header (that would list the user scripts that will be applied to this page) does make it easier to block Greasemonkey users. But then sites that react that way would just end up not receiving this information anymore. They could still use obfuscation to try and systematically break user scripts, but the header is not going to change that.
The header only makes it easier for publishers to learn about how users view their websites. It's already possible for them to browse the user script repository to find out which scripts are available, but the header would make that feedback automatic and more accurate (which scripts are popular?).
It seems to come down to whether you're optimistic or pessimistic about publishers doing something positive about that information or instead abusing it to take action against Greasemonkey users.
I think that we should at least try and explore ways to bring publishers and users closer. Maybe it will fail. But will it obviously fail? Is it a failure if only one publisher creates something great because of Greasemonkey and the header facilitated it?
Publishers embracing advertising seemed like a rather unilateral move. AdBlock and Greasemonkey are just more unilateral moves, this time from the users. Those conflicts do create iterative advances, but they are coarse and bumpy. Can we find ways to smoothen this communication channel? This could create a virtuous cycle of feedback and accelerate the evolution of the web.
Numerous publishers and companies in general in the past have fought innovation coming from their consumers. There is no doubt this will happen again. But I think it's still worthwhile to explore how to collaborate and offer publishers a chance to participate in the wave of content customization and remixing. I may be too optimistic or even naive, but in the worst case, all we did is fast forward evolution by raising awareness.
Links:
- The Javascript shell, with Edward Lee's recent improvement to support multi-line input.
- Detecting blocked ads with bait banners.
PS: The FitSizeToTablet Greasemonkey user script attempts to fix pages that hardcode their width, so that they can display on a Tablet PC's screen (in slate mode: 768x1024) without overflowing horizontally.