Zhenyi Tan And a Dinosaur

Youtube’s Anti-adblock and uBlock Origin

Recently, YouTube has been ramping up its anti-adblock effort, and I’ve been watching this closely. This blog post is where I write down what I know.


Some Background

Here’s how adblockers (used to) block YouTube ads. Before playing a video, YouTube would check its API, and the server would send back something like this:

{
  "video": "something.mp4",
  "ads": [ad1, ad2, ad3],
  "etc": { ... }
}

And the adblockers would override JSON.parse and Response.json to make it return this instead:

{
  "video": "something.mp4",
  "ads": [],
  "etc": { ... }
}

This trick worked for a few years. But earlier this year, YouTube started making fake requests to see if the responses were changed. If the responses were changed, it meant the user was using an adblocker.

Most adblockers stopped working, but a few like uBlock Origin and AdGuard updated their filters to avoid these fake requests. Then YouTube would update their fake requests so the adblockers would fall for them. It’s been a game of cat and mouse between YouTube and the adblockers ever since.


The Tech Support Hell

YouTube isn’t rolling out the anti-adblock to everyone. It seems to depend on things like your account, browser, and IP address. And if you’re not logged in or you’re in a private window, you’re safe. As a result, there are a bunch of people saying, “I use XYZ and I haven’t seen an anti-adblock popup yet,” unknowingly spreading misinformation.

But here’s the thing: YouTube isn’t just targeting adblockers. Use Privacy Badger? You’ll get flagged. Use Malwarebytes? You’ll get flagged. Set your Edge browser’s tracking protection to “strict”? Yep, you’ll get flagged. So a lot of people think their extensions are safe to use, but actually they’re not.

And contrary to what you might think, using multiple adblockers can actually make things worse. That’s because all your adblockers need to be up-to-date to dodge YouTube’s detection.

As you can imagine, this is creating a tech support nightmare if you’re part of an adblocker team.


The Redditors

On Reddit, the uBO team put up a detailed post on how to handle YouTube’s anti-adblock. But many people don’t actually follow it. You’d see people saying, “I did what the post said but I’m still having issues.” But when they’re asked to share their system info for troubleshooting, it turns out they didn’t really follow the post.

Then there are non-tech-savvy users looking at the post and saying, “This is too complex. I give up.”

Then there are tech-savvy users who say, “Your filter has CODE in it. That’s risky. Can you explain what it does? I don’t want to run anything I don’t understand.”

And of course, there’s always the classic “IVE TRIED EVERYTHING AND NOTHING WORKS HELP!!!!

All this noise makes it hard to find any useful info.


The Stupid Filters

Some people have been sharing custom filters that use CSS to hide the popups. But that’s like sticking your head in the sand. Because the popups don’t stop there: first, it’s just a friendly warning, then you can only close the popup after a delay, then you get a “three strikes and you’re out” popup. And finally, no more popups are shown, but at this point, you can’t play videos anymore.

Recently, someone shared a filter on Twitter that literally had code to set adBlocksFound to 0. It’s as if they think YouTube’s anti-adblock works like this:

if (adBlocksFound > 0) {
  blockUser(); //!!!!!
}

That tweet got super popular. And it probably led a lot of people to add those filters to their adblockers. This has really piled on the work for the troubleshooting team. Did the person who shared it not realize it was harmful? Or did they just care about getting likes?


The Script ID

Every time YouTube tweaks their script, part of the URL changes. This part is what uBO calls the ID, and they have a webpage that keeps track of the latest one.

But here’s where things get messy. Some people think this ID is what they need to block. Some even suggest ways to automate the process (like, “Why don’t you just block that with REGULAR EXPRESSION?”)

Another issue is that sometimes YouTube pushes out an update that has nothing to do with adblock. But it still changes the ID. Then you get people saying, “The ID changed, why hasn’t this post updated yet???”


The Moderator Who Quit Reddit

All this resulted in a ton of pressure on the uBO team members who were trying to help out in the thread. One by one, I saw them say they’d had enough of the comments and weren’t going to reply in these threads anymore.

And then one of the moderators actually deleted their Reddit account. “The ID in the post wasn’t updated because my mother was hospitalized,” they said.

It’s sad to see them leave because of some drive-by comments — new users who sign up for Reddit, leave their comments, and then delete their accounts without facing any consequences.

Sure, there are people who appreciate what the uBO team is doing. But the hurtful comments leave a bigger mark than the good ones.


The War of Attrition

Since May, uBO has been in a cat-and-mouse game with YouTube. And they’ve shown incredible resilience, especially when you consider that there are only two people on the uBO team dealing with YouTube.

The uBO team members are all volunteers. They’ve gone above and beyond to meet every little request from their users. But there’s a limit to how much they can take. At some point, the constant demands become too much, and they will leave uBO for good. It’s one thing to play cat and mouse with YouTube. It’s quite another to deal with a wave of angry users.

Maybe that’s how YouTube will win this war of attrition.