- Der öffentliche Gitea-Server
git.xeserv.us wurde durch AmazonBot-Anfragen instabil; der Betreiber bat das AmazonBot-Team, die Domain auf die Blockliste zu setzen
- Obwohl in
robots.txt alle Bots mit Disallow: / blockiert wurden, gingen weiterhin Anfragen ein, sodass der Betrieb eines öffentlichen Git-Servers möglicherweise ganz aufgegeben werden muss
- AI-Crawler erschweren das Blockieren, indem sie den User-Agent ändern oder Residential-IP-Proxys verwenden
- In nginx ingress wurde blockiert, indem für den User-Agent
Amazon der Status 418 zurückgegeben wurde; die Anfragen liefen jedoch von anderen IPs weiter, und etwa 10 % hatten nicht einmal den User-Agent amazonbot
- Am Ende wurde der Gitea-Server wieder hinter ein VPN verschoben, und mit
Anubis entstand ein Reverse Proxy, der vor Anfragen einen Proof-of-Work-Check durchführt
AmazonBot-Anfragen und die Grenzen von robots.txt
- Der Betreiber bat die AmazonBot-Betreiber,
git.xeserv.us zur Liste blockierter Domains hinzuzufügen
- Für das Crawlen des Git-Servers sollten sie Kontakt aufnehmen, damit sie die Kosten für Hardware-Upgrades tragen können, die zur Bewältigung der übermäßigen Ressourcennutzung nötig sind
- Eine
robots.txt, die alle Bots blockiert, war bereits eingerichtet, reichte aber nicht aus, um tatsächliche Anfragen zu stoppen
User-agent: *
Disallow: /
- Außerdem wurden Gründe zusammengefasst, warum das Blockieren von AI-Crawler-Bots schwierig ist
- Bots lügen
- Sie ändern den User-Agent
- Sie verwenden Residential-IP-Adressen als Proxys
- Sie nutzen auch weitere Methoden
Blockierung in nginx ingress und Veröffentlichung von Anubis
- Am 2025-01-17 um 17:50 UTC wurde per nginx-ingress-Konfiguration eine User-Agent-Blockierung hinzugefügt
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($http_user_agent ~* "(Amazon)" ){
return 418;
}
- Auch nach dieser Einstellung stellte der Bot weiterhin bei jeder Anfrage von einer anderen IP aus Requests, und etwa 10 % der Anfragen enthielten keinen
amazonbot-User-Agent
- Am 2025-01-18 um 19:00 UTC wurde der Gitea-Server wieder hinter ein VPN verschoben
- Danach begann die Entwicklung eines Reverse Proxys, der vor dem Gitea-Server einen Proof of Work prüft, bevor Anfragen zugelassen werden
- Am 2025-01-18 um 23:50 UTC war dieser Proxy unter dem Namen
Anubis auf https://git.xeserv.us/ verfügbar
- Mit Stand 2025-03-26 um 14:27 UTC ist
Anubis ein eigenständiges Projekt mit Dokumentationswebsite
1 Kommentare
Meinungen auf Hacker News
Jetzt ist es Zeit, ein Anwaltsschreiben zu schicken. Wenn man sich die Richtlinien zur Strafverfolgung nach dem Computer Fraud and Abuse Act ansieht, betrachtet das US-Justizministerium den Zugriff auf öffentliche Server in der Regel nicht als „unbefugten Zugriff“, sofern es sich nicht um einen offensichtlichen Angriff handelt. Dort steht aber auch, dass er ab dem Zeitpunkt als unbefugt gilt, an dem der Rechteinhaber anschließend eine klare schriftliche Aufforderung zur Unterlassung sendet und der Beklagte diese erhält und versteht.
Also sollte man einen Anwalt ein klares „Cease and Desist“-Schreiben aufsetzen lassen und es Amazon auf dem vom Anwalt empfohlenen Weg zustellen, etwa per Einschreiben oder durch einen Zustellungsbeauftragten. Vermutlich sollte man beides tun und zusätzlich eine E-Mail schicken.
Danach kann man sehen, ob Amazon aufhört; falls nicht, kann man Strafanzeige erstatten. Dann wird Amazon die Sache auch ernst nehmen.
https://www.justice.gov/jm/jm-9-48000-computer-fraud
Der Amazon-Bot sollte aus bekannten Amazon-IP-Bereichen kommen und robots.txt respektieren. Ein Amazon-Engineer hat das in einem anderen Kommentar ebenfalls bestätigt: https://news.ycombinator.com/item?id=42751729
Wenn nur der User-Agent-String „AmazonBot“ zu Amazon passt, IP-Bereiche und Verhalten aber nicht, ist ein Anwaltsschreiben an Amazon ungefähr so sinnvoll, wie Geld zu verbrennen.
Mir gefällt die Lösung in diesem Kommentar: https://news.ycombinator.com/item?id=42727510
Man setzt irgendwo auf der Website einen Link, den ein Mensch niemals besuchen würde, verbietet ihn in robots.txt und blockiert jede IP für 24 Stunden, die diesen Link aufruft. Da OpenAI-Crawler offenbar insbesondere Wildcards ignorieren, legt man ihn entsprechend unter eine Wildcard.
Aber es waren so viele betreffende IPs, dass es auf den Traffic kaum Auswirkungen hatte.
Ich empfehle, sich die empfangenen Header sehr genau anzusehen. varnishlog ist dafür ziemlich gut; wenn man lange genug hinschaut, findet man Merkmale, die alle Requests gemeinsam haben. Zum Beispiel ungewöhnliche Kombinationen aus gemeldeter Sprache und geografischem Standort oder dieselbe veraltete Browser-Version.
Noch schlimmer: Im Error-Handler gab es einen Bug, sodass der Serverprozess bei diesem Zustand neu gestartet wurde; dabei wurde auch noch eine Cache-Implementierung ungültig gemacht, die „für .NET 2.0 eigentlich ziemlich ordentlich“ war.
Ich erinnere mich, dass wir danach anfingen, als Schutzmaßnahme Canary-Techniken einzubauen. Ein paar einfache Canaries waren immer noch billiger als zusätzliche Webserver. Natürlich haben wir auch das Cache-Problem behoben und außerdem eingebaut, dass der Dienst „schreit“, wenn zu viele schlechte Requests eingehen.
Ironischerweise konnten die Crawler genau dieser Unternehmen ihre selbst erstellten Manifeste nicht parsen.
Wir sehen dasselbe Verhalten bei allen AI- und SEO-Bots und können das bestätigen. Sie halten sich gerade so an robots.txt und sind schwer zu blockieren. Beim Crawlen kommen sie spamartig herein, treiben die Last stark hoch und legen viele Server unserer Kunden lahm.
Wenn AI-Crawler Zugriff wollen, müssen sie sich benehmen oder bezahlen. Andernfalls wird das Ergebnis eine nahezu allgemeine Blockade sein.
/apimachten,-j TARPITgesetzt.Wie man das in der Cloud umsetzen würde, weiß ich nicht genau. Dort habe ich es bisher noch nicht gebraucht.
https://gist.github.com/flaviovs/103a0dbf62c67ff371ff75fc62f...
Oder sie sollten wenigstens aus Höflichkeit nachts oder zu Zeiten mit geringer Auslastung scrapen.
Ich gehe nicht davon aus, dass das wirklich Amazon ist. Der Autor sieht Anfragen, bei denen Residential IPs rotiert und auch die User-Agent-Strings geändert werden.
Sich als Crawler eines großen Unternehmens auszugeben, ist eine gängige Technik von Leuten, die nicht auffallen wollen. Dass die Requests von Residential IPs kommen, ist ein deutliches Warnsignal, dass hier etwas anderes passiert.
Nach den Informationen, die ich intern prüfen konnte, ist es sehr unwahrscheinlich, dass das tatsächlich Amazon ist. Amazonbot muss robots.txt beachten und immer von IP-Adressen kommen, die Amazon gehören. Das Prüfverfahren steht hier: https://developer.amazon.com/en/amazonbot
Ich habe es intern weitergegeben, um zu prüfen, ob irgendein seltsames internes Team, von dem ich nichts weiß, so etwas macht. Der Autor sollte diesen Traffic aber besser als bösartig einstufen und davon ausgehen, dass der User-Agent gefälscht wird.
[1] https://brightdata.com/proxy-types/residential-proxies
Ich hatte kürzlich dasselbe Problem. Meine Forgejo-Instanz fing an, die CPU meines Homeservers zu 100 % auszulasten, weil Claude und die AI-Freunde von Meta und Google praktisch unendlich viele Links mit hoher Geschwindigkeit bombardierten.
Mit robots.txt und einer User-Agent-basierten Blockliste in Caddy konnte ich es etwas eindämmen, aber ich weiß nicht, wie lange das funktioniert.
Wo ist eigentlich die Etikette beim Scraping geblieben?
Das größere Risiko ist, dass eines dieser Unternehmen, sogar eines, das sich „Open“ nennt, aus wirtschaftlicher oder nationaler Sicherheitsperspektive eine Größe erreicht, bei der es als „too big to fail“ gilt.
Facebook ist berüchtigt dafür, es leicht gemacht zu haben, Freundeslisten von MySpace zu scrapen, und nachdem sie selbst groß geworden waren, haben sie dasselbe Verhalten auf ihrer eigenen Site verboten.
Bitte wacht endlich auf.
Bist du sicher, dass das kein als Amazon getarnter DDoS ist?
Dass die Anfragen von Residential IPs kommen, ist wirklich verdächtig.
Das Motiv für so einen DDoS könnte sein, kleine Sites lahmzulegen und es so aussehen zu lassen, als sei Amazon verantwortlich, um Amazon ins Visier zu nehmen.
Wenn es tatsächlich Amazon wäre, wäre der Ausgangspunkt, alle von ihnen veröffentlichten IP-Ranges zu blockieren. Allerdings klingt es so, als kämen Requests auch von außerhalb dieser Ranges.
Solche Dienste bezahlen Nutzer für ihre Bandbreite und verkaufen sie an Dritte weiter, weshalb viel Bot-Traffic so aussieht, als käme er von Residential IPs.
Meine Site Pinboard wird ebenfalls von mutmaßlichen AI-Crawlern verprügelt. Im Sommer fing es mit IPs aus China und Singapur an, aber inzwischen kann ich nicht einmal mehr IP-Ranges blockieren und muss mich auf CAPTCHAs verlassen.
Das Traffic-Niveau reicht aus, um die Site sofort zu töten, und ich habe nicht einmal interessanten Text zum Trainieren, nur Links.
Ich frage mich, wie der Autor des Originalposts herausgefunden hat, dass ein Amazon-Crawler die Ursache ist. Ich hätte auch gern jemanden, dem ich die Schuld geben kann.
Die beste Methode, dagegen anzukämpfen, ist vielleicht nicht Blockieren. Blockieren schadet Amazon oder irgendeinem anderen Unternehmen überhaupt nicht.
Was wäre stattdessen, wenn man den Bots Inhalte füttern könnte, die offensichtlich schädlich oder korrumpierend sind?
Wenn das in größerem Maßstab passiert und Amazon die vergifteten Daten entdeckt, müssten sie Geld ausgeben, um sie schnell zu entfernen, und versuchen, die Bots daran zu hindern, solche Daten zu fressen.
Das größte Problem ist natürlich, dass niemand so etwas auf seiner eigenen Site haben will.
Diese Scraper fressen bereits ohne Zögern CSAM und ähnlich Grauenhaftes. Einige der kenianischen Data-Tagging-Subunternehmer von OpenAI haben genau deswegen aufgehört. Das war ein Time-Artikel von 2023.
AI-Unternehmen interessieren sich derzeit nicht für Datenqualität, sondern nur für Menge. Die einzige Möglichkeit, ihnen zu schaden, ist, ihnen 0 Byte zu geben.
Für ein Zehntel dessen, was Sam Altman abgenickt hat, würde ein normaler Mensch sofort ins Gefängnis gehen.
https://zadzmo.org/code/nepenthes/
Es wäre eine nette Geste, wenn Amazon einem ein paar AWS-Credits geben würde, um die von Amazon und anderen Bots verursachten Mehrkosten für ausgehenden Traffic auszugleichen. Trotzdem wird das vermutlich durch die Werbeeinnahmen dieses Artikels wieder hereinkommen. Wenn man den Adblocker ausschaltet, geht die Rechnung auf.
Vor der Sperrung über Nginx entfielen Bytespider auf 59 % und Amazonbot auf 21 %; zusammen machten sie damit 80 % des gesamten Traffics unseres Git-Servers aus
ClaudeBot verursachte innerhalb eines Monats mehr Traffic auf Redmine als in den fünf Jahren vor ClaudeBot zusammen