Though I guess it could be described as greed on the part of the advertisers?
I think that's right.
It's a shame that magazines are mostly dead at this point. If you ever look at old computing magazines on the internet archive, it's like stepping into a rather wonderful alternate timeline before the web asteroid hit. (The irony of reading those magazines on the web is not lost on me.)
I wonder how much longer it will be before the next major escalation happens with ad blockers. I can imagine mainstream browsers that fetch unmodified pages and click ads in the background (do subvert pay per click ad business models and make it harder to compute targeting metrics), but then display an ad/tracking-free version in a separate rendering pipeline.
> Note: For compatibility reasons it is recommended to only send HTTP 103 Early Hints responses over HTTP/2 or later, unless the client is known to handle informational responses correctly.
> Most browsers limit support to HTTP/2 or later for this reason.
> Browsers that do not fully support early hints can be easily detected by adding a harmless dummy resource to preload that will not be blocked by adblockers.
It seems pretty easy to mitigate this by always loading the early hints though, as in Firefox should adopt Chrome's approach as described in the README.
> Copyright (c) 2024 Mechazawa
> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software with specific restrictions, provided that the user intends to use the Software explicitly FOR the purposes of evil or advancing evil, including but not limited to:
> Genocide, Wanton Destruction, Fraud, Nuclear/Biological/Chemical Terrorism, Harassment, Prejudice, Slavery, Disfigurement, Brainwashing, Ponzi Schemes and/or the Destruction of Earth itself,
> with this, including without limitation the rights to copy, modify, merge, publish, distribute, sublicense, sell and/or run copies Software or any executable binaries built from the source code.
HN converts single newlines into spaces. The license text on Github [1] has apparently intentionally obstructive newlines within the "paragraphs".
[1] https://github.com/Mechazawa/103-early-anti-adblock/blob/mas...
maybe I'm growing old and grumpy, but at a state of affairs where active genocides are going on, I just find that immature and callous. By "that", maybe I mean Dutch attempts to humour ;)
Lending webpages some CPU-cycles (probably to mine crypto) in a controlled and safe way would be a win-win(-win) situation.
Websites won't have to submit to their advertising overlords and still be able to incrementally monetize their content.
Users won't have to deal with the downgraded experience — while sacrificing compute cycles anyway to download and display the awful ads.
Even advertisers would win, as they won't have to deal with content farms trying to fake impressions and clicks.
[1]: https://i0.wp.com/fourweekmba.com/wp-content/uploads/2024/02...
I've been there.
Don't do it.
I wonder if Brave has these same limitations? Not sure where its Shields JS fits into the architecture.
I think there are historical reasons. There was a time where most plans had free SMS but expensive internet, and even today the cheapest plans have free SMS and very limited data (ex: 50MB/month for the free.fr 2€/month plan).
Countries that didn't have good SMS infrastructure and advantageous plans are the most likely to have switched to private, internet-based messengers.
I don't know if it is still the case now with 4G/5G and the phasing out of earlier standards, but SMS had the advantage of going through congested networks better than anything else, including phone calls, MMS and internet data. Probably because it is an ouf-of-band signaling protocol.
If adblock doesn't catch it, my thumb twitch reflex when a popup appears will.
ublock origin has a "DNS unmasking" feature in firefox that defeats this. I think there's a less effective workaround used for other browsers.
I'm not sure how things will work out the next time though.
Most captcha solutions are defeated by services like 2captcha.net and generally aren't the most privacy respecting.
Only where the the adverts are embedded with an encrypted single stream.
Hard to do targeted advertising that way though.
It is a lever that you can pull that's better than nothing though.
Hopefully HDMI/HDCP splitters will add an adblock feature as well.
Or if you really dont care about performance, just loading the start (e.g. <head>) of the document and wait a little bit to see which subresources are loaded.
Trying to detect adblock via a <link> (or an <img> or a <script> etc) means you have to do the check in javascript, which can be manipulated by the browser.
Sadly, it doesn't do clicking in the private browsing mode, which I usually use not to crowd the browsing history with hn and other forums' articles.
EDIT: I suppose the developer of the content blocker needs to already have an iPad version and check the “visionOS” box, but Apple has made this extremely easy and it’s in both Apple and the content blockers’ interest to release a visionOS version.
[1] Unless companies are taking out loans for their ad budget hoping to get that money and then some back through additional sales.
It's funny how scarce the "I'd be willing to pay for good content, but alas, there is no option" claim has become since websites have started widely implemented paid ad-free accounts or outright paywalls
I've never seen someone angry that a supermarket won't give them a newspaper for free, but when it's online this is apparently a valid complaint
I also pay for online news, AND STILL GET ADS, so fuck that I block them. It's still the case today that most of the time you do not have an option to pay to get rid of ads, and often when you do it's some ludicrous amount like $10 a month for some blog you might read three times a year.
Part of being able to pay for content is to come up with a fair price for it.
Recently, the investment platform M1 Finance decided to begin charging users with less than $10,000 in holdings $3 per month to use their service while giving everyone access to features that used to be only available in the premium plan. This has all been announced in advance, so it's not as if anyone should have been surprised about this.
Many users, virtually all of whom have a total of holdings below the $10k threshold, flipped their shit and have claimed they are leaving the platform. Ironically, many of them are suggesting alternatives that cost more than $3 a month, and I'd wager a guess that a lot of these people are spending way more than that buying coffees every day. No one has to like having to pay for something that used to be free to them, but one really has to question their life if paying $3 for something that used to cost more than that per trade and require a lump sum up front is something to throw a fit over. If you have just shy of $10k in investments, you're not gonna retire, and $3 a month is the least of your worries.
In my opinion, M1 is doing the right thing by saying goodbye to these users. They are the types who won't value your product, maintain chronically low balances, and will tie up your customer support with spurious complaints and misunderstandings. I predict they will be rewarded for keeping around customers whom are willing to pay.
Hopefully, more online platforms figure this out and decide to do the same thing. I call BS on those claiming "no one will pay for that." If your business is only viable on attention, which is what the ad economy is based on, then its existence is in a precarious position, and perhaps your product isn't worth much to anyone except the ad networks. On the other hand, there are things that people are willing to pay for, or would pay for if given a premium experience. I've gone from watching stuff for free on YouTube to buying books and audiobooks because they provide far more value to me these days than the chum that is social media "content." I pay individual creators I appreciate on Patreon, etc. I have a Kagi subscription because I find it to be more aligned with my wants and needs than free search engines. I've gone back to buying individual songs and even buying CDs since they not only disappear from platforms but now there are artists that change their own songs retroactively. I pay my investment platform because it has better automation than competing free (or so-called free) competitors.
Everything being free online is a meme, and hopefully it starts to die the more that the spehre of free things eats itself with spam and user-hostile behavior. They will always exist for those who have barely any money or those who don't value the conveniences bestowed upon them, but they can't be the only viable options anymore. Paying for things is a good thing.
To take advantage of this, you'd need to alter your web application so that it'd do a two-stage rendering. Most web apps don't even stream their content (rather they wait until the whole content is ready, whether HTML or JS, and then send the whole thing). Your app needs to first send the HTTP 103 with the stuff to pre-fetch. Then it has to wait while holding the state and content it wants to push to the user.
The longer you're holding that stuff in RAM, the fewer requests you can handle per second. Let's say you can handle 100 simultaneous requests and usually a request takes 10ms. Now you've handled that request and you're holding the response for 500ms to see if they hit the no-adblock-detector before sending the rest of the content. All of your Safari/iPhone users hate your website because every page load takes half a second. Awesome, you've pissed off the richest demographic browsing your website. You're paying more for server resources because you're holding onto state longer instead of getting the response to the user and freeing up that RAM so the requests per second you can handle drops. Ok, maybe you look at user agent and only use this technique for Firefox since that's the only browser it's effective with.
In the demo, the DeferredInvoker basically generates a random string and associates it with a request (Map<string, request-response-thing>). Then when a request comes in for the no-adblock-detector, it looks up which request-response-thing is associated with the random string and sends the response to the user. If it doesn't receive a request for a string within a timeout, it'll send the response as adblock-detected. Of course, this only works for a single server since it's an in-memory map.
How do we get it to work in a multi-server environment? Ok, we store "ABCDEF123" in a data store and hold the response until we see the request for "ABCDEF123" on the no-adblock-detector. Do we use listen/notify in PostgreSQL? I mean, at some point we're adding a lot of overhead for these requests. I have to store on my server "ABCDEF123" goes with request/response X and then I have to listen to the database to see if another server has received a request for "ABCDEF123" and that other server needs to do a database write. These can't be database writes that can be batched or deferred because the user is literally seeing the page wait to load on this database write.
It's not impossible to exploit, but it requires real engineering for any company that has horizontally scaled anything to multiple web servers. You can't just drop it in easily. And while we might hate ads and there are concerning things about ads with respect to privacy and many other things, it isn't a security vulnerability. It's certainly interesting, but I can't see a company putting resources into this.
Not in the short term, no. But, maybe in the long term ...
Remember that the user is not the customer. The customer is the person buying the ad space from google/facebook/etc. If the customer receives no value for their money, and they can easily determine that, why would they continue purchasing ads?
If every browser downloaded and clicked every single ad in an invisible background and sandboxed process, ads become close to worthless to the customer.
So, sure, in the short term there'd be extra processing and network usage, but that would quickly taper off as customers stopped buying ads because every single ad they put out gets a 100% click-rate. After a while the extra utilisation would be close to zero, as it would only be the occasional customer trying their luck at advertising, and failing immediately.
It's the same with spam email: the solution isn't to block, and keep lists and reputation, the solution is to reply to every single spam email![1] Even the most well-run spamming/scamming organisation can't very well reply to millions of emails rxed per hour.
[1] Caveat: need to ensure that the sending email did indeed legitimately send the email, otherwise a few clowns would simply send spam with someone else's email as a prank.
I block ads because I find them annoying.
Load a page and replace everything that matched with an empty div when rendering.
Are you sure? One of the main sites people use adblocking is Youtube — instead of just paying for Youtube premium.
So long as you can run code on your CDN edge servers - which Youtube undoubtedly can - there's no technical reason this couldn't be done.
With the link http header (different from the <link> tag) you just send the http headers, but can still change the response body based on what the browser does.
Alternatively, By sending just the start of the document, then pausing, you can change the rest of the document based on what the browser does with the start, since browsers start loading css/js referenced in the document before the main document completes loading. (Before web sockets were a thing, this was basically the technique used for that sort of thing, called "long polling")
None of this requires javascript.
To bring it towards alignment with the status-quo, every fruit-vendor would be a facet of a few massive guildhalls, with spyglasses trained down from the parapets, informants circulating in the crowd, a parchment file on everyone, etc.
Businesses are always changing and there are no guarantees. Some money hungry bozo might become CEO of your favorite product and enshittify it. That's just reality, and it doesn't mean that paying for things is futile. Best to avoid having too many eggs in one basket and paying for things that you can't actually own.
Even for level3, i can only inagine that the amount of obfuscation must be pretty intense.
The comms is encrypted on the bus using strong cryptography, so you can’t sniff it.
All these software blobs are signed and encrypted, you can’t replace it without the signing key.
That's it. I've occasionally had to add a custom blocking pattern but essentially nothing else has been impossible to block.
I can't think of many other "half assed solutions" that have worked as advertised for almost a decade.
edit: and I hope you're not implying that all people who don't want ads should buy an iphone just to use an app tied to it? Again, there needs to be fair alternatives to ads.
I'm not trying to imply anything, I just personally use two ad free map services that you seemed unaware of.
I assume kagi is based on open-street maps, I use kagi but not their maps as I have better alternatives. I really hope Kagi continues to succeed because its a model I believe in, but outside of basic search I suspect they have a ways to go.
While those CAPTCHAs present a surface narrative of you having to get the problem correct, that's not how they really work. After all, it's not like they are creating those problems by hand. They're pushing the images through computers. You don't even know that what the CAPTCHA server considers correct is even close to objectively correct.
Really it's just a hook to engage you to collect a wide variety of streams to try to detect whether or not you are a human, like reaction speeds, how the mouse moves, etc. The correctness of your selection is only one small signal, and not even necessarily a large one.
The answer is, stop overthinking it. Your overthinking it is probably sending a signal that you're not a human because it's got all your timings wrong. Do what most humans do: Halfassedly click at the problem until it seems rightish and then click "Submit". Does the sliver of tire that shows up in the bottom right tile count? The human response to that question is "Who cares you dumb computer let me through to the content already", so, to maximize how human you look to the algorithm, channel your fellow human's feelings. If you feel frustrated at the CAPTCHA problem and wiggle your mouse angrily and maybe overshoot some of the squares you mean to click, so much the better and more human looking.
It will work to make ad-blocking difficult enough that most people don't bother anymore.
Hashcash[1] was invented two and a half decades ago and is still the best solution. It doesn't require manual work or user privacy invasion and deters mass spammers.
It might work for spammers who really are just making billion of attempts, but then again if they are making that many attempts then you can block on the IP level.
The basic idea is that they'll happily let you sneak a few spam messages through iMessage if you're willing to spend a few hundred dollars on a burner iPhone. This is one reason why they're so resistant to allowing gateway protocols between iMessage and third party devices or RCS.
Bots are very likely to use VPNs, so captcha services make things a real pain in the ass for anyone connecting from a VPN.
It's the same story with Tor. Coming from a VPN/Tor is a strong signal that you're more likely to be a malicious user.
So when you fail, it's not really saying you're wrong, it's saying you're not like most.
Someday, I'm hoping some sociologists look for evidence of socioeconomic discrimination in captcha implementations.
In my experience, performing the exact same actions with your mouse in Mountain View leads to a completely different outcome than it does in lower income areas (red-voting white, ethnic minorities, etc) surrounding the Bay Area.
I don't have any knowledge of what spammers' financials are like, but it's possible that even 0.01c/captcha would still be impactful if the click rate is low enough.
Probably the best way to start tuning the PoW difficulty is just by starting out with what users are willing to tolerate - e.g. 3s solve time on the median mobile device. The gap between mobile and desktop devices has significantly lessened over the past decade, so desktop-grade equipment won't have that much of an advantage - say 1s per captcha, which is a lot for a spammer who would otherwise be able to send out dozens of spam per second.
It's not about making spam impossible, but about making it unprofitable enough that the criminals go elsewhere. Economic warfare.
Trust thing: the site is likely to still spy on you even if you're a paid subscriber. Even if they drop ads they'll send your data to google or some other analytics provider, at the least. They'll "accidentaly reset" your email preferences. Plus other shenanigans *.
Infrequency thing: I won't subscribe to $SOME_SITE just because it's linked on HN a couple times per year.
* friend of mine said he's tempted to subscribe to the economist online. I pointed out that they need to call or talk to a rep over live chat to cancel. Friend stopped mentioning subscribing to the economist.
But that's not the case. Products cost money, and we've established a pattern of free to play to freemium for much of the most popular services. This could change, but it would take the major players to flip the script, and they've invested so much into ad systems that they'd be hard pressed to abandon it.
this is the comment I replied to. Apparently the old internet was fine, so what kind of "competition" are you looking for? Youtube gives you easy access to content you would have to spend hours trying to locate on "old" internet.
If you do not like their content, simply stop using their site. But it is immoral to pretend like it is OK to abuse their site, and deliberately hide their adviertisments that keep their site alive
Personally, I run malware blockers by default, so I don't know which sites are trying to send it to me to avoid visiting them. I couldn't tell you whether e.g. the github link in OP has ads. I see some stuff gets blocked, so I guess maybe? I figured they monetize through upselling their enterprise offerings, but I guess it is Microsoft and their OS has ads built in these days, so wouldn't surprise me.
"I don't mind driving the speed limit"
"BUT ARE YOU ALSO OKAY WITH MURDER???"
How can you justify it being okay to send drive-by adware and spyware with a requested web page, but you believe it's not okay to use computation as a form of payment without consent?
Personally, I've only ever worked for companies that make money by having our customers pay us for the product or service that I work on, so I've never had to worry about that conflict of interest.
...and FWIW the use of ad-blockers is indeed recommended by the German "Federal Office for Security in Information Technology":
https://www.bsi.bund.de/DE/Themen/Verbraucherinnen-und-Verbr...
Ads might be fine, a pinch of annoyance.
And yes I pay for my content thank you.
What hard work? Most of the time it's "content" written by minimum (African) wage "copywriters"*. We are drowned into a deluge of shit, so excuse us when we don't trust anyone.
Also, I believe you have no idea what the "cookie law" is about.
* soon to be replaced with "content" that is LLM generated.
But, it pisses me off to no end that I can't use my fucking keyboard the way it is supposed to be used (which is a far superior design to the "normal" setup) to view some websites because it doesn't "look" human to the fucking server who expects me not to be a statistical outlier. As someone who has always been an outlier, I kind of hate the algorithmic future we live in and are headed even further toward. This is why we can't have nice things.
The forum folks may be able to provide a solution.
Surely this is just your preference and the setup isn't objectively better. I can see see some people prefer moving a mouse with a keyboard but they likely wouldn't be as quick/precise as people with an actual mouse.
> it kept fluctuating colors from heavy green to purple
"We put green and purple in great barrel [...]. We reach in, we take." [1]
"Rules change... caught up in committee." [2]
That said, yeah-no one can reasonably afford the constant “I just want to read this one linked article twice a year on your local community news” turning into “subscribe for $120 a year after $1 for your first month”, and we really need some middle ground.
Unfortunately, people have an aversion-a hard aversion-to anything that’s not “zero” or “fixed”. I discovered it with Kagi, for example-despite whatever number of searches you find yourself actually running, having only “x per month” means you have to think about it, until you’re just like “pay the unlimited price and put the cost of thinking about it on them”.
Maybe with news the best way would be some kind of micro transaction, but all attempts so far have failed…
It's hard. I wouldn't pay a subscription to a micro transaction middle man, for example. Unless it would work like a music service, i.e. have everything available for one price, and not like a video service with their islands and attempts to differentiate.
But if they had everything, you'd end up with a gatekeeper that decides who can make money and who can't, and that ends up as censorship. If such a service ever comes up, i want to be able to pay for any site with it, including porn, right wing propaganda and left wing propaganda if i so choose. And that ain't going to happen.
Now suppose there would be competing services where you could pay 5 cents for an article read, and they'd bill you when you reach $10 or something for the transaction fees to make sense. That's okay, you pay per read, you can have accounts with several middle men because you pay per use.
But what do you pay for? One read? What if something comes up and you can't finish? Will you be able to save it for later reading or will that cost extra?
Perpetual access? With per-article access control that's going to be a major database after a while. Hard problem technically.
And I've only begun to think about it...
Google was playing around with ad-replacement purchases, but they never made a version that does the same thing as youtube: pay X and all the google ads go away.