They do this by adding a ton of useless markup and splitting words like "ad" into single-letter spans with random class names and 8-layer deep nests of `<div>` so it's very hard to write selectors against. One has to wonder how that div soup affects accessibility as I find it very unlikely that this content is presented nicely to assistive tools. I hope they get all the ADA suits they deserve for this.
I recently found this out the hard way. Instagram’s web app has a super annoying popup. To click the comments button for a post, your cursor has to pass over the username, which just happens to launch a profile preview with the “follow” button exactly where the comments button was, causing you to unintentionally follow the account.
I tried to block this popup with uBlock Origin to no avail. No matter what element I selected, it was still there. Finally fixed the problem by deleting my Instagram account.
A counter example: I got caught out by the deprecation/sunsetting of anonymous "old.reddit.com" yesterday but it turns out uBlock can filter out the ads, boilerplate, sidebars, join/login buttons etc on the main site. It's actually faster and more usable than the old site now.
Last I tried writing custom rules for Facebook was years ago, but they did have proper aria attributes, and uBlock origin does have selectors for text content. These are from 2020:
facebook.com##span:has-text(Suggested for You):xpath(../../../../../../../../../../../../../../../../../..)
facebook.com##div[aria-label="Sponsored"] span[aria-label="Sponsored"]:xpath(../../../../../../../../../../../../../../../../../../../../..)
facebook.com##div[aria-label="Sponsored"]:xpath(../../../../../../../../../../../../../../../../../../../..)
But can't they just use an xpath expression to test the computed text content of a node, like `/path/to/ad/div[contains(., 'sponsored')]`? In that expression, there could be any number of nested elements inside the terminal `<div>` and it wouldn't matter. (And you'd probably have to use a regex test to account for tricky white space.)
Worth a white paper to see which costs less energy, using Apple's built in LLM, or downloading and displaying all the FB ads using radio, playback, and screen animation energy.
Apple Intelligence? I mean, you're only processing for the time your "AI|browser|agent" is acting as a firewall between you and Meta. Cache locally after processing and filtering. Use alongside the accessibility API. LLMs can, in many cases, reliably solve CAPTCHAs. I find it difficult to imagine they cannot defeat Meta ad blocking countermeasures.
I've tried to write a tampermonkey script to at least block the Reels, but even that's hella difficult.
The solution is truly to just never be on Facebook, but - our local PTA only distributes news via Facebook. (There may be a Whatsapp group I don't know about, which isn't better.) So does the local library. If the township publishes things elsewhere, I don't know about it.
I use a service to convert some pages' feeds to RSS, which is semi-reliable, but doesn't work well and is a paid service if you want more than two feeds - I wish I could hand-roll something myself.
The approach they should have taken is to start whitelisting the components that are not ads.
Think of how the structure of Meta is gonna work, there's some team in charge of ads who has a sub team now in charge of messing with the ads to stop them being blocked.
If you start whitelisting everything that isn't an ad you move the problem into an area the team in charge of blocking the ads don't have control over.
Highly unlikely the team in charge of stopping ad blocking has swing to then start changing the code of every other element on the page to break your non-ad white listing.
Over a decade ago, web framework and web site generation tooling had already ruined any kind of automated anything, as the frameworks and tools started using what amount to GUIDs for identifiers. I suppose the charitable take on why is as only machines needed to read it, and css styles and div IDs had become token gibberish anyway, so semantics were irrelevant.
Whether selecting for ads or content, one had to figure different ways of getting after it, whitelisting was already off the table.
We'd found "structure" could work, but had to be fuzzy and adaptive as marketing shuffles pages around constantly, not just on the whole, but for A/B runs and personalized "experiences".
So that seems back to, hey, models could help.
(Though none of them, to date, attain as high success as latest hand coded "reader" tools, worth inspecting for how this could be generalized.)
Facebook is trying so hard to defeat adblockers that the actual website is borderilne unusable. I have found in the past year or so that pages just get hung on "loading" transitional screens way more often, even in normal circumstances.
They need to surrender this whole anti-adblocker crusade because it will kill them in the long run (along with the billion other problems FB has)
Most activity on Facebook is via phone. I bet Facebook would prefer to get rid of the website entirely; the age of adding Facebook like buttons and comment sections to websites is long past. I can't think of anything that works on the website better than the phone app.
Same. FBP has been effectively perfect for over a decade now. I don't understand how uBlock Origin can't just take what FBP is doing and apply it there.
Once LLMs get fast enough at processing real-time images Apple (or anybody really) can just roll out a browser rendering engine that just masks all ads. It will take a few years but the browser ad-business is in it's terminal phase.
It's amazing how people think Apple has a clean reputation because they've added a thin layer of indirection to their participation in the surveillance ecosystem.
The race of ending personal computing is there. I am sure big players want to control entire stack and users just sitting in front of dumb monitors consuming their ads.
If we're just talking about image based ads it would be easier to simply denylist every image on a page and only render alt-text until the user clicks to reveal it.
Worth noting though that Apple injects ads into the News app, which is just a webview, so it's certainly not them that will do this.
Such naïveté. The much more likely scenario is that AI is used to add or replace ads in a website in a way that's now impossible to remove. Running your own AI on the browser will be disallowed to "ensure a safe browsing experience".
Cost issues aside yeah image embedding tech is really good and can already do tasks like this, LLMs with native image understanding are even better at it.
Reasons this wouldn't work are you'd really need to get it to a good enough and small enough model to run low energy use and very fast to not impact browsing. The other issue is it'll be a fixed target for a period of time so the ads could be tweaked to find how to get them through it.
Yes, it's a near-universal legal requirement that humans be able to tell if something is an ad or not. So once they sabotage that, they're in hot water.
Is there any enforcement of this? Like at all? All the review bots and bots promoting random crap on reddit say otherwise. Traditional media still pays lip-service to this, but only barely.
Very simple: just block all Meta domains at your local DNS. Nobody needs Meta. And if there is something you desperately need to see on one of their platforms temporarily switch your DNS.
If anybody want to take a crack at fixing and maintaining the issue, while the team has been worn out to the treads, they are still open to pull requests [0], here is the statement about that is alluded to in the article:
>paintboth1234 uBO Team wrote:
>The project is FOSS. Anyone else who wants to deal with this disgusting site is free to make pull requests with working solutions themselves.
I have to admit that I never got to visit facebook in all my life, since my browser add-ons made it so the site would never properly load. I'm not sure whether I've been missing out or dodging a bullet.
It would be fun to train a small vision neural network to recognize ads instead of relying on HTML or network requests. I don't know if anyone has done this yet.
Facebook has made itself indispensable in a number of areas that are in the public interest and should be treated as a public good for these purposes.
Ads are pollution, and Facebook is forcing people to choose between ingesting pollution and using facebook marketplace, or throwing their used but functional goods in the garbage.
> IMO you shouldn't get to be in charge of a company just because it became successful.
In a macro sense, the prerogative there is really up to the public. Companies only exist in the first place because the public has granted them the legal and social framework to exist, and the public can adjust that framework as they so choose.
In a more specific sense, the math there changes once a company makes itself indispensable to the public good. There are any number of analogies I could run with, but I'll go with the analogy of a landfill. Suppose all the landfills in your city have been privatized, have a habit of burning garbage, and employ armed thugs to prevent any visitors to the landfill from wearing masks. If you've got a truckload of garbage to dispose of, you can either ingest burning garbage fumes, or dump it on the side of the road somewhere. It's absolutely in the public's interest to regulate the landfills' behaviour to prevent them from either burning garbage or from stopping people from wearing masks when they visit the landfill.
Assuming you insist on using facebook you can proxy it, using a simple script that removes all ads prior to serving. The problem of course is that this is not cheap. Easier to just not use facebook.
Because the ad ecosystem has two sides. I used to think my ISP could just magically support IPv6 and didn't need routing protocols or peering agreements, too. (They support it now)
Websites with ads need to satisfy the ad buyers. This means running a bunch of JavaScript that's adversarial to the website and fingerprints both the website and the browser to determine where and to whom the ad is actually shown. It's like a cloudflare bot challenge is happening behind the scenes. Of course all this stuff doesn't happen on the website's own domain, or the website could manipulate it.
And the ad that's originally delivered might not actually be the ad, but might be a script that fetches the real ad from a different server, if the incentives line up that way. Imagine you have a contract to advertise on a site, but someone else wants to advertise on the same site and pays you to forward their ad. Ad margins are razor thin, you'll do this for $0.00001 profit per impression. And your buyer might be doing the same thing to their customer. It's all a huge mess.
I think that just goes to prove that content providers and ad providers could defeat ad blockers if they worked together. (And perhaps made the ads less offensive so people don't have motivation to block them.)
uBlock filter list authors are however also not going to spend as much effort as they have been spending on Facebook on every random site that is currently covered by generic rules that catch entire ad networks.
In ye old days, you had newspapers who sold ads, and had to at least satisfy their customers. What the newspaper advertised reflected on the newspaper, and where the advertiser advertised, reflected on the advertiser. Now we have a situation where no one is accountable. Spammy ad sites are a thing, because there isn't that direct relationship between advertiser and website.
Advertisers don't trust websites to display their ads. If a site takes full control of their ads experience and hosts everything first-party I agree it's hard to block (site can keep changing things to thwart the ad blocker), but then it's also hard for the advertisers to see whether they're being ripped off. Which means most won't advertise on the site, and the site makes much less money than if they remain in the current ad ecosystem (even counting that some ads will be blocked).
(I used to work in this area, but my knowledge is ~4y out of date)
Most sites are not in business of running ad marketplace. They are in content production and SEO(as in pulling views). I don't think at scale they could operate it would be worth to be ad marketplace. Or would they get the customers(advertisers).
Content based ads work fine for this. If you have a site about some topic, advertisers for that audience can just pay you some amount to put their ad in your posts or embed an image.
Networks are only necessary if you want to run new ads for every year or tie into their browsing history or other algorithmic stuff. But if someone wants to pay you 3k to run a banner ad for a few weeks that would be pretty easy to just embed.
> Most sites are not in business of running ad marketplace.
You don't have to run a marketplace. Back then, people were calling via phone to put an ad into the newspaper. The same concept can still apply today.
You can just place an ad _where you actually want it_ instead of having a shitty decision engine decide it for you. Marketing budgets are messed up all over the place since social media, because they're really inefficient in finding the customers that actually wants to buy their stuff.
If you don't believe me, just take a look at facebook, they're trying to shove ads up your feed 99% of the time. It's a feed of ads, not a feed of "friends" anymore. Good luck trying to catch the 1% of posts that were actually the reason why you used the platform in the first place.
I tried to block this popup with uBlock Origin to no avail. No matter what element I selected, it was still there. Finally fixed the problem by deleting my Instagram account.
Small win.
This sounds perfectly matched for an on-device LLM?
EFF: Adversarial Interoperability - https://www.eff.org/deeplinks/2019/10/adversarial-interopera...
The solution is truly to just never be on Facebook, but - our local PTA only distributes news via Facebook. (There may be a Whatsapp group I don't know about, which isn't better.) So does the local library. If the township publishes things elsewhere, I don't know about it.
I use a service to convert some pages' feeds to RSS, which is semi-reliable, but doesn't work well and is a paid service if you want more than two feeds - I wish I could hand-roll something myself.
Think of how the structure of Meta is gonna work, there's some team in charge of ads who has a sub team now in charge of messing with the ads to stop them being blocked.
If you start whitelisting everything that isn't an ad you move the problem into an area the team in charge of blocking the ads don't have control over.
Highly unlikely the team in charge of stopping ad blocking has swing to then start changing the code of every other element on the page to break your non-ad white listing.
Whether selecting for ads or content, one had to figure different ways of getting after it, whitelisting was already off the table.
We'd found "structure" could work, but had to be fuzzy and adaptive as marketing shuffles pages around constantly, not just on the whole, but for A/B runs and personalized "experiences".
So that seems back to, hey, models could help.
(Though none of them, to date, attain as high success as latest hand coded "reader" tools, worth inspecting for how this could be generalized.)
They need to surrender this whole anti-adblocker crusade because it will kill them in the long run (along with the billion other problems FB has)
https://www.fbpurity.com/
Such a move would also presumably be incompatible with Apple's highly lucrative search engine deal with Google.
Worth noting though that Apple injects ads into the News app, which is just a webview, so it's certainly not them that will do this.
Ignoring that users care deeply about images so a browser that did this would be considered broken from the get go.
Reasons this wouldn't work are you'd really need to get it to a good enough and small enough model to run low energy use and very fast to not impact browsing. The other issue is it'll be a fixed target for a period of time so the ads could be tweaked to find how to get them through it.
>paintboth1234 uBO Team wrote:
>The project is FOSS. Anyone else who wants to deal with this disgusting site is free to make pull requests with working solutions themselves.
[0] https://www.reddit.com/r/uBlockOrigin/comments/1vgcjg5/about...
Not perfect, but it works.
Facebook has made itself indispensable in a number of areas that are in the public interest and should be treated as a public good for these purposes.
Ads are pollution, and Facebook is forcing people to choose between ingesting pollution and using facebook marketplace, or throwing their used but functional goods in the garbage.
Facebook is allowed to make ads show on their own product.
I hate their product, but it's theirs.
In a macro sense, the prerogative there is really up to the public. Companies only exist in the first place because the public has granted them the legal and social framework to exist, and the public can adjust that framework as they so choose.
In a more specific sense, the math there changes once a company makes itself indispensable to the public good. There are any number of analogies I could run with, but I'll go with the analogy of a landfill. Suppose all the landfills in your city have been privatized, have a habit of burning garbage, and employ armed thugs to prevent any visitors to the landfill from wearing masks. If you've got a truckload of garbage to dispose of, you can either ingest burning garbage fumes, or dump it on the side of the road somewhere. It's absolutely in the public's interest to regulate the landfills' behaviour to prevent them from either burning garbage or from stopping people from wearing masks when they visit the landfill.
Though evidently someone's cut a deal because Facebook groups is all over Google search results these days.
Websites with ads need to satisfy the ad buyers. This means running a bunch of JavaScript that's adversarial to the website and fingerprints both the website and the browser to determine where and to whom the ad is actually shown. It's like a cloudflare bot challenge is happening behind the scenes. Of course all this stuff doesn't happen on the website's own domain, or the website could manipulate it.
And the ad that's originally delivered might not actually be the ad, but might be a script that fetches the real ad from a different server, if the incentives line up that way. Imagine you have a contract to advertise on a site, but someone else wants to advertise on the same site and pays you to forward their ad. Ad margins are razor thin, you'll do this for $0.00001 profit per impression. And your buyer might be doing the same thing to their customer. It's all a huge mess.
In ye old days, you had newspapers who sold ads, and had to at least satisfy their customers. What the newspaper advertised reflected on the newspaper, and where the advertiser advertised, reflected on the advertiser. Now we have a situation where no one is accountable. Spammy ad sites are a thing, because there isn't that direct relationship between advertiser and website.
(I used to work in this area, but my knowledge is ~4y out of date)
Networks are only necessary if you want to run new ads for every year or tie into their browsing history or other algorithmic stuff. But if someone wants to pay you 3k to run a banner ad for a few weeks that would be pretty easy to just embed.
You don't have to run a marketplace. Back then, people were calling via phone to put an ad into the newspaper. The same concept can still apply today.
You can just place an ad _where you actually want it_ instead of having a shitty decision engine decide it for you. Marketing budgets are messed up all over the place since social media, because they're really inefficient in finding the customers that actually wants to buy their stuff.
If you don't believe me, just take a look at facebook, they're trying to shove ads up your feed 99% of the time. It's a feed of ads, not a feed of "friends" anymore. Good luck trying to catch the 1% of posts that were actually the reason why you used the platform in the first place.