August 20, 2017

Can Facebook really make ads unblockable?

[This is a joint post with Grant Storey, a Princeton undergraduate who is working with me on a tool to help users understand Facebook’s targeted advertising.]

Facebook announced two days ago that it would make its ads indistinguishable from regular posts, and hence impossible to block. But within hours, the developers of Adblock Plus released an update which enabled the tool to continue blocking Facebook ads. The ball is now back in Facebook’s court. So far, all it’s done is issue a rather petulant statement. The burning question is this: can Facebook really make ads indistinguishable from content? Who ultimately has the upper hand in the ad blocking wars?

There are two reasons — one technical, one legal — why we don’t think Facebook will succeed in making its ads unblockable, if a user really wants to block them.

The technical reason is that the web is an open platform. When you visit facebook.com, Facebook’s server sends your browser the page content along with instructions on how to render them on the screen, but it is entirely up to your browser to follow those instructions. The browser ultimately acts on behalf of the user, and gives you — through extensions — an extraordinary degree of control over its behavior, and in particular, over what gets displayed on the screen. This is what enables the ecosystem of ad-blocking and tracker-blocking extensions to exist, along with extensions for customizing web pages in various other interesting ways.

Indeed, the change that Adblock Plus made in order to block the new, supposedly unblockable ads is just a single line in the tool’s default blocklist:

facebook.com##div[id^="substream_"] div[id^="hyperfeed_story_id_"][data-xt]

What’s happening here is that Facebook’s HTML code for ads has slight differences from the code for regular posts, so that Facebook can keep things straight for its own internal purposes. But because of the open nature of the web, Facebook is forced to expose these differences to the browser and to extensions such as Adblock Plus. The line of code above allows Adblock Plus to distinguish the two categories by exploiting those differences.

Facebook engineers could try harder to obfuscate the differences. For example, they could use non-human-readable element IDs to make it harder to figure out what’s going on, or even randomize the IDs on every page load. We’re surprised they’re not already doing this, given the grandiose announcement of the company’s intent to bypass ad blockers. But there’s a limit to what Facebook can do. Ultimately, Facebook’s human users have to be able to tell ads apart, because failure to clearly distinguish ads from regular posts would run headlong into the Federal Trade Commission’s rules against misleading advertising — rules that the commission enforces vigorously. [1, 2] And that’s the second reason why we think Facebook is barking up the wrong tree.

Facebook does allow human users to easily recognize ads: currently, ads say “Sponsored” and have a drop-down with various ad-related functions, including a link to the Ad Preferences page. And that means someone could create an ad-blocking tool that looks at exactly the information that a human user would look at. Such a tool would be mostly immune to Facebook’s attempts to make the HTML code of ads and non-ads indistinguishable. Again, the open nature of the web means that blocking tools will always have the ability to scan posts for text suggestive of ads, links to Ad Preferences pages, and other markers.

But don’t take our word for it: take our code for it instead. We’ve created a prototype tool that detects Facebook ads without relying on hidden HTML code to distinguish them. [Update: the source code is here.] The extension examines each post in the user’s news feed and marks those with the “Sponsored” link as ads. This is a simple proof of concept, but the detection method could easily be made much more robust without incurring a performance penalty. Since our tool is for demonstration purposes, it doesn’t block ads but instead marks them as shown in the image below.  

All of this must be utterly obvious to the smart engineers at Facebook, so the whole “unblockable ads” PR push seems likely to be a big bluff. But why? One possibility is that it’s part of a plan to make ad blockers look like the bad guys. Hand in hand, the company seems to be making a good-faith effort to make ads more relevant and give users more control over them. Facebook also points out, correctly, that its ads don’t contain active code and aren’t delivered from third-party servers, and therefore aren’t as susceptible to malware.

Facebook does deserve kudos for trying to clean up and improve the ad experience. If there is any hope for a peaceful resolution to the ad blocking wars, it is that ads won’t be so annoying as to push people to install ad blockers, and will be actually useful at least some of the time. If anyone can pull this off, it is Facebook, with the depth of data it has about its users. But is Facebook’s move too little, too late? On most of the rest of the web, ads continue to be creepy malware-ridden performance hogs, which means people will continue to install ad blockers, and as long as it is technically feasible for ad blockers to block Facebook ads, they’re going to continue to do so. Let’s hope there’s a way out of this spiral.

[1] Obligatory disclaimer: we’re not lawyers.

[2] Facebook claims that Adblock Plus’s updates “don’t just block ads but also posts from friends and Pages”. What they’re most likely referring to that Adblock Plus blocks ads that are triggered by one of your friends Liking the advertiser’s page. But these are still ads: somebody paid for them to appear in your feed. Facebook is trying to blur the distinction in its press statement, but it can’t do that in its user interface, because that is exactly what the FTC prohibits.

Comments

  1. Zubair Shafiq says:

    Excellent analysis. I agree with your technical + legal arguments. As long as a human can distinguish between ads and native content, ad blockers should be able to programmatically identify and block ads.

    Several content publishers have started to aggressively prompt users to either pause their adblocker or whitelist their domains. What are your thoughts about Facebook pushing/forcing users to turn-off their adblocker to view content on Facebook? Will Facebook go this far? If they do, will there be a mass boycott?

    • That’s an interesting question! I see two separate issues (1) is it technically feasible to detect ad blockers and force users to disable them in order to view content (2) how will users react if Facebook did this?

      I’m not sure of the technical feasibility. I do realize that Wired and other publishers are currently successful at blocking content for ABP users, but ad blockers could try harder.

      Will users quit Facebook en masse? I’d say it’s unlikely (due to network effects), but engagement might go down considerably, so I suspect Facebook will treat that as a last resort.

  2. Jeff NoName says:

    What about ads that look exactly like posts, except for the image inside them. If facebook served ads that only say they are ads inside of the rendered image, it would be much harder to detect from an adblocker (i.e. forcing the image blocker to do some type of image analysis). However, it would still clearly mark itself as an ad in the image, thus not running a foul of the FTC. A possible downside to this, is it would require more processing on the server’s side, as the ad images would need to have the word “Sponsored” rendered on top of them, on the server.

  3. Would you consider open souring the code so that we could it past the prototyping stage?

  4. How can I update my Adblocker Plus on Chrome? I’ve been trying to update, to no avail. I’ve been buried in ads on Facebook for the last two days. Thank you.

  5. Mitch Golden says:

    As you point out, the end goal for Facebook (and everyone else) has to be to focus not on the fact of ads, but on the overall experience. I personally don’t block ads, but I am pretty vociferous about blocking tracking. I do understand the need of these sites to make money, but not at the expense of a grievous invasion of my privacy. If ads aren’t obnoxious, most people won’t block them.

  6. Helga Cary says:

    I agree with Mitch

  7. One way Facebook can get around this is by showing ads based on your friends likes. Lets say T of your friends like a brand B. Facebook can then create a post, like a normal post in your news feed, which feels like your friend has shared it. Your friend may have just technically interacted with the page – one way or the other.

    This would just be like native advertising except that this would be native news feed posts.

  8. The answer is no. the free browser addon “ublock origin” prevents facebook ads from showing.

    This is a hostile action against their users and I trust it will blow up in their face. Obviously if someone installed an ad blocker they don’t want to see ads, so using sneaky methods to force them to see ads anyway will foster resentment.

  9. This is actually a fight between Facebook and Consumers, not between Facebook and Adblock Plus or ad blockers in general. The Internet is a public infrastructure and the browser screen ‘belongs’ to the individual, so consumers demand control and don’t want to be forced by Facebook.

    Adblock Plus is rather unique from other ad blockers in that they offer to whitelist ads that are deemed “acceptable” by the community — which acts as an incentive for advertisers to make better ads. There are many ‘blunt’ ad blocking alternatives that just block everything,

  10. Good comment, kudos to you for writing this up.

    This is also not “just” Facebook alone. In Germany, whole news sites are blocked depending on whether they detect that you have an adblocker or not.

    In my opinion, this is not “just” about ads – this is about censorship issues as well. They dictate onto you whether you may be able to see content.

    Paywalls will continue to increase.

    • So you think maybe this is more trial balloon than strategy? My first thought on hearing the news was more along the lines of “publicity stunt”

  11. Frank Lee says:

    You’ve done a fine job touching on the legal and technical issues here, but have completely punted on the ethical and economic aspects.

    You concede that FB has, in good faith, empowered its users to fine-tune the type of ads they receive AND has an ad platform that is safe (no malware, etc.). What more could or should they do to keep their revenue stream from drying up?

    1) Charge users? Wouldn’t that be biased against users in less affluent countries?
    2) Ask people nicely not to use ad blockers?

    And from an ethical standpoint… I’m torn.
    On one hand, with broadcast TV for instance, no one would suggest that people are being jerks turning down the volume or leaving the room when commercials come on.
    And yet, it somehow seems disrespectful and counterproductive for people who enjoy using FB to basically give FB the finger by blocking all FB ads.

    Where do you draw the line on these things?
    And by pushing the envelope yourself by perhaps encouraging more people to block FB ads, what’s your role and responsibility in all of this?

  12. Since probably nobody computer literate believes the future of advertising, ad blocking, ad blocker blocking ad nauseam can be anything other than either an arms race or a cat-and-mouse game, could it be that the aperiodic, short, but almost certainly non-zero-length intervals of time between Facebook upping the ad-blocking-blocking ante and (say) ABP upping the reverse engineering ante, are themselves a central feature of the monetization model, or will be at some point going forward? Like maybe someone somewhere’s running a net present value on the sequence of such windows of opportunity extending into the future basically forever?

  13. It would be great if the tool would add IPv6 support – which in facebook terms is to just add references to (www.)v6.facebook.com vs (www.)facebook.com.