Creepy Crawlies

(people.kernel.org)

178 points | by zdw 22 hours ago

28 comments

  • tptacek 22 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.

    • nneonneo 8 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_Y 3 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.
  • Demiurge 42 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.

    • andai 39 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...

    • rankdiff 36 minutes ago
      What is "formally popular"?
      • klez 31 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.
  • easton 30 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”?)
    • jacobvosmaer 15 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_lead 43 minutes 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.

    • sethops1 35 minutes ago
      In a few years the VC money will dry up and this gross overspend on slurping data will end.
      • igor47 5 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
  • feelamee 25 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.

    • klez 20 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.

  • gsky 7 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?

  • nneonneo 21 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.

    • nxndbebdb 13 minutes ago
      Almost all of my visits to cgit instances are through direct deep links. Hard to imagine someone randomly browsing git listings
      • nneonneo 3 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.

  • chuckadams 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.
    • rcxdude 27 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'
    • kees99 53 minutes 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/

      • oowa 21 minutes ago
        he said its fast enough for now actually...
    • oowa 16 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
    • Zariel 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_zero 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.
        • kijin 44 minutes 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.
    • mik1998 48 minutes ago
      The cache gets evicted between the times the old commits are revisited.
  • znnajdla 10 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.
  • lkbm 51 minutes 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.

    • phmx 40 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?
  • NooneAtAll3 11 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

  • AshamedCaptain 44 minutes 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.

  • edent 23 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?

    • kardos 13 minutes ago
      Because they suspect that, sometimes, different content will be served by HTML vs alternate APIs
  • bauerd 19 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
  • tarpitt 19 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.
    • NooneAtAll3 8 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
  • nxndbebdb 16 minutes ago
    Just serve the raw commit and render on frontend. I really don't get why they are complaining, just be performant
  • initramfs 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.

  • delichon 24 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-dub 44 minutes 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?
  • Artoooooor 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?
    • parineum 1 hour ago
      You mean shoving it onto the investors?
    • wredcoll 32 minutes ago
      See also: the price for uber rides.
  • nicman23 48 minutes 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_cat 44 minutes 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.

    • PinkaDunka 30 minutes ago
      Maybe anubis difficulty should depend on the age of commit. This year - 4, everything older 8
  • bluedino 19 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

  • Velocifyer 46 minutes ago
    But why don't they just git clone?
    • rcxdude 25 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)

    • lkbm 44 minutes 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).
    • acedTrex 41 minutes ago
      Because the crawlers dont care, they are the internets parasites. Their creators care nothing for people or systems downstream of their greed.
  • jruohonen 22 hours ago
    Off-topic, but anyone with which he did the plots?
  • acedTrex 40 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.
  • petesergeant 37 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?