One of Firefox’s more popular extensions is AdBlock Plus, an add-on that can stop ads from showing as you browse the web. There are two ways to use it. You can selectively kill ads that are so annoying that you can’t stand them (e.g. the ones that float over content or play audio), or you can install a filter subscription that will automatically block any ads that fit the extensive criteria.
Now I like AdBlock, don’t get me wrong. I use it selectively, to remove ads that I find offensive or that hinder my use of a site too much. However, I don’t blanket-block ads like many people do. Why? Because the ads pay for the sites that produce free content for my consumption. I don’t like the flashing “Click here for a free iPod” ads any more than anyone else, but not all ads are like them. There are some ads that just sit there quietly, promoting a product that I don’t mind being shown. Those ads, the reasonable ones, are the way ads should be. They benefit the site, the advertiser, and ideally the reader. AdBlock only came into existence because of the annoying ads, the ones that give online advertising a bad name.
Imagine my indignation when I realized that the “EasyList + EasyElement” filter for AdBlock (one of the most popular filter subscriptions) was automatically blocking the 125×125 ads in my sidebar. I go through a lot to put those ads there. I work hard to make sure that they are unobtrusive, and I spend a fair bit of time communicating with companies to make ad deals. Not only does blocking them cheat the advertisers out of what they are paying for, it hurts my chances of them continuing to advertise.
I don’t mind AdBlock being used to zap less than pleasant ads…in fact, if you run obnoxious advertisements on your site, you’re asking to have them blocked. What are you thinking? If you would only run ads that don’t try your users’ patience, maybe you wouldn’t have to worry about people blocking them so much?
Now, I wasn’t going to let my ads be blocked so easily. No, I had to find a way to prevent them from being blocked.
So, I found the URL for the subscription, by opening up AdBlock, right-clicking the subscription, and choosing “Edit subscription.” I found the URL in the resulting dialog.
I found it at this URL. Now I had a text file containing a very long list of filter rules. Anything matching the criteria would generally be blocked.
Many of the rules were specific to certain websites and ad servers. There were certain ones that interested me, the ones that check for keywords in the page source, such as classes, ids, and image paths. The file was a bit terse, but not too hard to read.
The logical thing to do was to skim through it and make a list of words that I wanted to avoid having in my image URLs or in the ad elements’ ids and classes. Essentially, I wanted to avoid anything along the lines of ad, ad1, ad2, sponsors, affiliate, bannerad, or really anything that could be associated with advertising.
So I made some tweaks to the location of the ad images on my server, and I also switched over to my WP125 plugin to handle my ad management. Apparently it’s immune to the EasyList right out of the box, as long as you don’t make the mistake of having “/ads/” in the images’ paths. There’s no rule in the filter that will trip when it comes across a div with one of the classes used in WP125. (Even if there were, I could simply change the WP125 classes, since I develop the plugin…)
This would work potentially with any ad format. You just need to look at the filters carefully to see what might trigger them. There’s generally a workaround for most of them. Fortunately there aren’t any filter rules that respond to “any image with x width and y height,” as that would often block images that wouldn’t be considered advertisements. You just need to look through the list of rules, find out what to avoid, and optimize your ads accordingly.
The trick probably won’t work with ad networks though, since the ads are generally called by a bit of JavaScript pulled from a certain domain. If that ad server goes into the filter, you’re in for a bit more work than simple optimization. You’re going to have to use some JavaScript trickery to actually block AdBlock. You would want to wait until the page loads, then check to see if a specific DOM element is being displayed, then respond accordingly. You could write the ads back in, or you could simply reprimand the ad-blocking user. There’s a tutorial on how to do the check and display an alert() message, but if you want to use it to reinstate the ads, you’re going to have to figure that out for yourself. Personally, I would stick with creatively guilting the users into disabling AdBlock for my site, as there are some ramifications from actually putting the ads back in. (See the tutorial linked above.)
I’ve provided you with the tools to prevent your ads from being blocked, but please use them responsibly. I encourage you to carefully assess your ads before employing the techniques discussed above, and only use them if your ads truly are benign.
Pingback: Weekend Links - Jan 1, 2009 « OMNINOGGIN
Pingback: How to Discourage Visitors from Using AdBlock « OMNINOGGIN