Back to News
Advertisement
Advertisement

⚡ Community Insights

Discussion Sentiment

57% Positive

Analyzed from 2351 words in the discussion.

Trending Topics

#crawlers#should#anubis#https#more#git#site#data#cgit#pages

Discussion (60 Comments)Read Original on HackerNews

tptacek23 minutes ago
Tavis Ormandy called this, about Anubis, almost exactly a year ago:

https://news.ycombinator.com/item?id=44962529

It never really cohered as a solution. High-powered scrapers are better equipped to handle proof-of-work challenges than end users. Proof of work makes sense for a password hash, where any one guess at a password provides zero marginal utility. But every request from a scraper is productive to the scraper.

nneonneo10 minutes ago
I disagree. The kernel finds it effective - 66% of scrapers are turned away directly.

The scraper problem now is fleets of residential proxy devices - often things like smart TVs, phones, and browsers with some “proxy SDK” installed as part of an app’s monetization scheme. They make a couple of requests to a site - just enough to fly under the radar - and move on to a different site.

If each new site they hit forces them to solve a proof-of-work, that’s a meaningful dent in their scraping performance. Many of these boxes may not even have the spare CPU power to efficiently solve so many proofs of work - and anything that makes an owner notice their device is running slow is something that could meaningfully impede adoption of these SDKs, or force the operators to choose between minimizing performance impact or scraping more sites.

Y_Y5 minutes ago
The implication here is that the proxy fridge forwards the Anubis challenge to a dedicated rig controlled by the scraper who efficiently solves it and returns the answer.
Demiurge43 minutes ago
I maintain a formally popular gaming website, and it used to have hundreds of legitimate requests per second. The load would be especially high during popular event times. So, it’s always been running on a dedicated server.

It also has an “online users” counter, which attempted to count real user sessions of unauthenticated user which still maintained a session, which lets them comment, or modify certain filter and display options. It never counted the Google bot.

Over the last few years this counter went from 100-200 users online to thousands. I have been very hands-off with it for many years, doing minor upgrades and backups. However, the site also has gotten quite slow, these sessions were obviously impacting it. So, I finally investigated these crawlers, and yes, it turns out it’s an insane amount of traffic that is entirely artificial, the site has just a handful of real users, and thousands of these crawling sessions that actually try to do everything they can, click every button. It doesn’t help that sort and search were implemented using GET links.

I fixed the counter to exclude the crawlers, but I have a bit of a dilemma. I don’t want to stop the bots from updating their knowledge based on all the content.

The best solution I could find is the new CloudFlare feature where they might charge the crawlers for every request, or otherwise block them. I think that’s a fantastic idea for the internet, at large. I signed up for the beta access, but haven’t heard from them again. I do think it’s unfortunate that this requires CloudFlare and the middleman.

Overall, it seems like the LLM are really straining the internet economy, the openness of it. Email spam used to be the worst, but the organized trillionaire labs sucking up the entire internet is going to break something if we don’t preempt them better.

It’s too bad the copyright and public internet systems are not acting quick enough. And I think there is no reason to act like this race really has to be at such a breakneck speed.

andai41 minutes ago
> And I think there is no reason to act like this race really has to be at such a breakneck speed.

I would promote this idea to all of my competitors. Nah mate, you don't have to ask her out right now. You can wait until next week ;)

Anyway, silver linings, looks like we're finally going to get widely adopted infra for microtransactions.

https://web.archive.org/web/20030202042510/http://www.openp2...

rankdiff38 minutes ago
What is "formally popular"?
klez32 minutes ago
From context I'd say they meant "formerly" and that's just a typo. I didn't even notice the error before you pointed it out.
easton31 minutes ago
Side note: why are shallow clones evil? I always thought they were cheaper, but I guess that’s really just for my disk space. (since the server has to compute what blobs to give you instead of just “everything”?)
jacobvosmaer16 minutes ago
Normal clones can reuse delta-compressed data the server stored on disk. Shallow clones impose a negative constraint: do not transfer data outside the requested commit depth. Pre-computed delta chains than contain unrequested data become unusable and the server must do delta compression on the fly to satsify the shallow clone.
yellow_leadabout 1 hour ago
High Anubis difficulty is annoying the hell out of me for several sites. And it's starting to not block LLM bots anymore?

> 33% are now solving the math and getting through to the main site — because apparently what we have to offer is worth spending a ton of cycles to calculate the Anubis challenge.

sethops136 minutes ago
In a few years the VC money will dry up and this gross overspend on slurping data will end.
igor477 minutes ago
Visions of vast data centers surrounded by fields of browning grass, in which aging, rusting, formerly extremely expensive hardware is spending billions of compute cycles looking at anime catgirls
feelamee26 minutes ago
Hm, interesting - how will it look the actual solution for such problems in the future. I suppose the issue will continue to grow.

First idea - there should be some cost for sending traffic somewhere. And the server owner also should receive pay - not only the internet provider.

So, in with this idea, the server owner can potentially increase the amount of computing power to satisfy all requests.

klez21 minutes ago
> there should be some cost for sending traffic somewher

So now, because of bad actors, I need to pay for the privilege of watching a website or using a service that was meant to be free? No, thanks.

I don't have a solution, but "break how the web currently works" is not one I would accept all willy nilly.

EDIT: yes, I realize we already broke the web (with Anubis, cloudflare, recaptcha etc) but I think we should resist slowly breaking it further.

gsky9 minutes ago
Those crawlers must be generic. Domain specific ones can be extremely efficient.

Good developers write custom solutions for big sites (determined based on sitemap URLs size).

Have you played with sitemaps?

nneonneo23 minutes ago
I wonder if one solution here could be to turn up Anubis difficulty if the first page hit is not one of the obvious entry-points to cgit. It could even have a little hint that says something to the effect of “go visit the home page if this is taking too long”. (Better not to ban them entirely, in case people really did click on some random link e.g. in a news story or mailing list message).

Distributed scrapers are going to generally try and hit their assigned list of pages; it’s a bigger waste of time if they have to go off to visit other pages first to get the cookie challenge.

nxndbebdb15 minutes ago
Almost all of my visits to cgit instances are through direct deep links. Hard to imagine someone randomly browsing git listings
nneonneo5 minutes ago
The kernel folks likely have a good profile on what page people trigger Anubis on (i.e. what page people hit first). From that they could make heuristics about what pages are likely to be useful deep links.

Keep in mind that Anubis will rarely inconvenience an actual user who visits the site often; it’s meant to keep out first-time scrapers trying to grab a few pages from their queue.

chuckadamsabout 1 hour ago
Given the nature of git, wouldn't all that HTML be highly cacheable? I get that's not free either, but it's got to be a lot less intensive than having cgit generate it every single time.
rcxdude29 minutes ago
The issue is there's far more pages than could reasonably be stored: cgit is an old-school server-side renderer and there's a combinatorial explosion of possible pages it could render. The article calculates there's about a quadrillion different pages that could be 'crawled'
kees99about 1 hour ago
Or, html generation could be very, very fast in the first place. For example, serving static files is usually just as fast as a reverse-proxy cache.

Interestingly enough, cgit bills itself as "a hyperfast web frontend for git repositories" [0]. Alas, nothing is fast enough for the bots, it would appear.

[0] https://git.zx2c4.com/cgit/about/

oowa23 minutes ago
he said its fast enough for now actually...
oowa18 minutes ago
i think its only 7gb of data total, therefore there should be a strategy to fully optimize for this deterministic scenario, but instead of caching instead with maybe a compiled streaming renderer... but he said its ok for now.. and anyway why should they need to fix anything, the slurp is what sucks. pun intended
Zarielabout 1 hour ago
That was my first thought, varnish (vinyl these days) in front of the website should dramatically reduce this as the git repo should be practically static for most of the content.
teo_zeroabout 1 hour ago
But there are "cubic bazillions" of possible URLs that are being requested. Even if they boil down to "only" some millions actual commits, their rendered HTMLs are all different.
kijinabout 1 hour ago
Yes, this is very difficult to solve for sites with many URL variations, like git repos and heavily threaded forums. Your cache is always full, but the hit ratio is abysmal.
mik1998about 1 hour ago
The cache gets evicted between the times the old commits are revisited.
znnajdla11 minutes ago
Put a CDN in front and let them absorb the load? Seriously, this is static content, which is so cheap to serve it should be free.
lkbmabout 1 hour ago
> So, you'd think that something that pretends to be “Artificial Intelligence” would use the most efficient way of using our data for training purposes, right? Clone the repos, walk every commit. Done.

If repos like this were 10%+ of what they crawled, having a special case for clone-able repos would be smart, but if you're crawling everything, you're not going to do an efficiency tweak for each special case that has a more parse-able option.

phmx42 minutes ago
I guess GitHub is in a similar bunch of sources, it should be also more efficient to crawl by cloning. Anyway, isn’t it the whole sales pitch that it generates tailored solutions fast?
NooneAtAll313 minutes ago
from what I see there are 2 solutions:

1) ban TV-proxy-as-a-service - straight up go to every representative there is and start pushing and lobbying and everything to stop spammers from distributing over non-computer devices, especially legally

2) make old commits more expensive to access than new ones. Legit users are not going to access those much, so they can pay the time. I assume diverse (unpredictable?) difficulty can also make spam pulling harder

Advertisement
AshamedCaptainabout 1 hour ago
This is bad enough that I'm going to stop serving cgit. I've been doing cvsweb, then subversion, then cgit over my home server for many many years and for the first time ever this is annoying my own bw usage.

It's ridiculous also how you ban an IP then 1 second later another one picks up from where the first one left on.

edent25 minutes ago
WordPress powered a huge number of websites. Yet the crawlers all go straight for the HTML of those sites rather than the more efficient and structured JSON API which all WordPress sites have.

If these crawlers are so smart, why aren't they following the rel="alternate" which is provided explicitly for them?

kardos14 minutes ago
Because they suspect that, sometimes, different content will be served by HTML vs alternate APIs
bauerd21 minutes ago
They're the exception, not the rule. They get crawled like any other site, but happen to host git repositories. It's not obvious that these are targeted crawls and they likely may just end up in crawling queues a lot generally
tarpitt21 minutes ago
Maybe you could have a system that heuristicially detects when an crawler is making the request and then feeds them a modified page, itself generated from an LLM, that injects vulnerabilities and bad code and discussion and such.
NooneAtAll39 minutes ago
it's hard to separate spambot that only accesses 3-5 links per IP and a legit user. Changing content for legit user can be devastating
nxndbebdb17 minutes ago
Just serve the raw commit and render on frontend. I really don't get why they are complaining, just be performant
initramfsabout 1 hour ago
I've been noticing page views in the past several months with a much wider span of origin on my Blogger stats. Before I would get a few from several countries, but now I am getting views from tiny countries and obscure or outdated browsers and operating systems, which leads me to think scrapers could be using VPN services in various countries along with header anonymizers that mask the device that they are using.

Extensions like ModHeader, BrowserMask do this: https://github.com/apify/crawlee-python

https://github.com/mthcht/Masquerade-Spoofer

Great for AI scrapers, bad for hosters and everyone else.

delichon25 minutes ago
> Why is git.kernel.org “interesting” to crawlers

Interesting to crawlers is not a narrow scope. We have the same problem on a B2B car wash site.

a-dubabout 1 hour ago
i wonder what they're all up to. i imagine some are scraping datasets for pre-training, others are probably real-time scrapers looking for security bugs, even more still are agents working on coding tasks and looking at the kernel. also interesting to think about solutions: does everything need to be optimized now for weird access patterns that proliferated ai creates? do the ais need to have behavior trained in to be better netizens? is this the end of anonymous browsing and the beginning of an era where one has to attach an identity to all requests? or the end of community hosted free information services more broadly?
Artoooooorabout 1 hour ago
How expensive would AI access be if every user paid their fair share instead of shoving it on the people doing the actual work?
parineumabout 1 hour ago
You mean shoving it onto the investors?
wredcoll34 minutes ago
See also: the price for uber rides.
nicman23about 1 hour ago
couldn't you have anubis on a dynamic difficulty? ie if a ip requests more than 1k pages per day +1 the difficulty ?
dunder_catabout 1 hour ago
Yes, but the article (not to call you out - I just think it's a very important point!) points out that this type of throttling would not be effective:

> Suddenly, the crawlers were coming from millions of random residential or mobile IPs, all pretending to be random modern browsers. An IP like that would make 4-5 requests and then never show up in the logs again. There was no point in banning them, because by the time you figured out that they were bots, they were already done with you. You just needlessly ballooned your firewall ruleset by adding IPs that would never be back.

Without something like cookies (which are almost certainly tossed after the IP is rotated) or some other persistent identifier, you are stuck have to apply mitigations that scale with the load you're encountering, which means longer challenges for everyone or degraded functionality, like removing some of the fancier cgit features.

PinkaDunka31 minutes ago
Maybe anubis difficulty should depend on the age of commit. This year - 4, everything older 8
Advertisement
bluedino20 minutes ago
> But no, let's in fact choose the stupidest possible way of doing it — by rendering everything as HTML commit by commit and then parsing it.

I feel like I'm at work.

We had some web crawler using Selenium to make queries and scrape the data instead of just downloading the whole file.

Every day it seems like we have some people that know just enough to be dangerous creating things like that. And then of course it's our fault that things are slow, or we won't give them infinite system resources, etc

Velocifyerabout 1 hour ago
But why don't they just git clone?
rcxdude26 minutes ago
These crawlers (in contrast to e.g. googlebot and similar better behaved crawlers) are not very smart: they seem to make very little effort to avoiding crawling useless deep trees of generated pages. About the only thing they seem to put a lot of effort into is avoiding blocking.

(I'll note that while these are generally attributed to AI data gathering because of the timing of when they took off, it's not actually obvious who's running these bots. The big players all have crawlers that identify themselves and are reasonably well behaved, but I don't know if anyone has managed to positively attribute these other ones to any particular group)

lkbmabout 1 hour ago
Because they're crawling a billion webpages, only a tiny fraction of which can be git cloned, and configuring a special case just for that tiny fraction isn't worth the effort (of the crawlers).
acedTrex43 minutes ago
Because the crawlers dont care, they are the internets parasites. Their creators care nothing for people or systems downstream of their greed.
jruohonenabout 22 hours ago
Off-topic, but anyone with which he did the plots?
dingaling911about 2 hours ago
jruohonenabout 2 hours ago
Thanks, and, yes, I don't write with LLMs, as seen above.
daveguy20 minutes ago
I would rather see some awkward phrasing than bland LLM slop!

Also, many plotting libraries include an xkcd style these days:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot....

And libraries for various languages:

https://github.com/timqian/chart.xkcd

So if you have a preferred dev environment there's probably a way to set it to xkcd style.

electrogasabout 1 hour ago
acedTrex42 minutes ago
It feels inevitable that many systems will have to go to a login/trusted ip source type system. Its just not feasible to continue to operate with 99% of your traffic being fake.
petesergeant39 minutes ago
> Training an LLM on content produced by the LLM gives it the equivalent of a digital prion disease

Is it foolish of me to have expected more from a blog post on kernel.org?

theandrewbailey27 minutes ago
Are you trying to say that's bad writing? I think it's a good metaphor for a documented phenomenon: https://en.wikipedia.org/wiki/Model_collapse