SEO & GEO

KI-Bots im Onlineshop: fast 1,8 Millionen Anfragen in einer Woche

Was die Logdaten eines Shops über Amazon, Meta, OpenAI, Anthropic, Perplexity und die wilden Crawler verraten, und wie ich die Last auf dem Server in drei Tagen mehr als halbiert habe.

Was die Logdaten eines Shops über Amazon, Meta, OpenAI, Anthropic, Perplexity und die wilden Crawler verraten, und wie ich die Last auf dem Server in drei Tagen mehr als halbiert habe.

Donnerstag, 30. Oktober, 09:34 Uhr. Auf dem Server eines Onlineshops, den ich betreue, sind alle 100 PHP-Prozesse belegt. Die Last liegt bei 14 auf 16 Kernen. Zwei Sekunden später bricht ein Aufruf der Startseite ab, der über Instagram kam. Ein Angriff? Nein. Amazon und Meta lesen Filterseiten. Zehntausende davon, jeden Tag.

Ich habe mir daraufhin eine Woche Logdaten genauer angesehen, vom 26. Oktober bis zum 1. November 2026. In dieser Zeit kamen fast 1,8 Millionen Anfragen am Webserver an. Die Hälfte davon stammte von nur drei Kennungen. Und die KI-Crawler, über die alle reden, waren dabei die geringste Sorge.

Wer da eigentlich anklopft

So sah die Woche aus, sortiert nach Anfragen. Filterseiten sind Kategorieseiten mit Parametern für Farbe, Größe, Marke, Preis oder Lagerstand.

BotBetreiberAnfragen in 7 Tagendavon FilterseitenVerhalten
KeenableBotunklar, Cloud-Adressen333.03899 %ignoriert robots.txt, seit 31.10. gesperrt
AmazonbotAmazon298.24497 %folgt der robots.txt
meta-externalagentMeta260.09385 %crawlt Filter trotz Sperre
GooglebotGoogle19.6013 %unauffällig
ApplebotApple12.1320 %unauffällig
NVIDIABOTNVIDIA, Sicherheitsscanner7.9560 %sucht Schwachstellen, keine Inhalte
LightpandaHeadless-Browser für Scraper6.99234 %gesperrt
QlyzeBotunbekannt6.10984 %reiner Filter-Crawler
MochiImageCrawlerunbekannt5.2220 %Bilder, fast nur Fehlerantworten
AwarioBotSocial-Listening-Dienst4.7520 %unauffällig
ElevenlabsCrawlerElevenLabs4.0420 %unauffällig
ExaSearchBotExa, KI-Suche2.3440 %unauffällig
PerplexityBot, Perplexity-UserPerplexity2.35344 %hoher Filteranteil
BytespiderByteDance1.28221 %unauffällig
ClaudeBot, Claude-UserAnthropic1.02616 %unauffällig
GPTBot, ChatGPT-User, OAI-SearchBotOpenAI7830 %unauffällig
CCBotCommon Crawl350 %unauffällig

Dazu kommen rund 500 Anfragen von kleineren KI-Diensten wie DuckAssistBot, Diffbot, cohere-ai, MistralAI-User, YouBot und ChatGLM. Alle zusammen weniger als ein einzelner Vormittag von Amazonbot.

Zwei Dinge fallen sofort auf. Erstens: OpenAI und Anthropic, die bekanntesten Namen, kamen zusammen auf rund 1.800 Anfragen in einer Woche. Das ist nichts. Zweitens: Die Last machen Konzerne, die selten in der KI-Debatte auftauchen, und ein Bot, von dem ich vorher nie gehört hatte.

Warum Filterseiten so teuer sind

Eine normale Produkt- oder Kategorieseite liegt im Cache vor dem Shop und kommt in 0,1 Sekunden. Dafür muss PHP gar nicht erst anspringen. Eine Filterseite dagegen ist jedes Mal neu. Jede Kombination aus Farbe, Größe, Marke und Preisspanne ist eine eigene Adresse, die nicht im Cache liegt. PHP rechnet sie komplett neu, in rund 1,7 Sekunden, und belegt dabei einen der 100 Prozesse.

Davon gibt es praktisch unendlich viele. Ein Crawler, der jeden Filterlink auf jeder Seite verfolgt, findet nie ein Ende. Inhaltlich bringt ihm das nichts Neues, es sind immer dieselben Produkte in anderer Auswahl. In der untersuchten Woche waren 69 Prozent aller Anfragen Filteraufrufe.

Der Fehler lag bei uns

Die erste Reaktion war, Amazon und Meta die Schuld zu geben. Beim Blick in die eigene robots.txt kippte das. Für alle Crawler waren Filteradressen gesperrt. Für die KI-Crawler gab es aber eigene Abschnitte mit „Allow: /“, gedacht als Einladung für die Sichtbarkeit in KI-Antworten. Ein eigener Abschnitt ersetzt den allgemeinen vollständig. Amazonbot hat sich also korrekt verhalten: Er durfte laut unserer robots.txt jede Filterseite abrufen und hat genau das getan. Dasselbe galt für GPTBot, ClaudeBot und PerplexityBot, die nur zufällig weniger fleißig waren.

Nach der Korrektur übernahmen die KI-Abschnitte dieselben Sperren wie alle anderen, ergänzt um Preis- und Lagerfilter. Am 30. Oktober rief Amazonbot noch 64.038 Filterseiten ab, am 1. November keine einzige mehr. Ein wohlerzogener Crawler braucht etwa einen Tag, bis er die neue robots.txt umsetzt.

Last-Management in Schichten

Eine einzelne Regel reicht nicht, weil sich die Bots sehr unterschiedlich verhalten. Was am Ende auf dem Server läuft, sind sechs Schichten, jede für eine andere Sorte Besucher. Alle greifen auf dem Webserver, bevor PHP überhaupt etwas tut.

  • Die robots.txt ist die erste Schicht. Sie regelt die Crawler, die sich daran halten, und das sind die meisten großen.
  • Wer Filterseiten trotz Sperre abruft und als großer Crawler erkennbar ist, bekommt den Status 429 für „zu viele Anfragen“. Das betrifft vor allem Meta. Normale Seiten bekommt er weiterhin.
  • Reine Scraper-Werkzeuge wie KeenableBot und Lightpanda bekommen auf allen Seiten 403. Nur die robots.txt bleibt für sie lesbar.
  • Filteraufrufe ohne Herkunftsangabe werden auf die ungefilterte Kategorie umgeleitet, die aus dem Cache kommt. Dahinter steckte ein verteiltes Netz mit normaler Browserkennung, rund 35.000 Aufrufe am Tag, jede Adresse nur einmal, ohne Bilder oder Stylesheets nachzuladen. Echte Klicks im Shop haben immer eine Herkunftsangabe. Links aus Newslettern und Kampagnen sind ausgenommen.
  • Für Filterseiten gilt ein Tempolimit pro IP-Adresse, unabhängig von der Kennung. Wer es dauerhaft reißt, landet bei fail2ban.
  • Filterkombinationen, die kein Mensch klickt, also sehr viele Filter gleichzeitig, werden direkt abgewiesen.

Die Reihenfolge ist wichtig. Die billigste und freundlichste Regel steht vorne, die härteste hinten. Und keine Schicht verlässt sich nur auf die IP-Adresse, warum das nicht trägt, habe ich in Warum IP-Adressen sperren dir nichts bringt beschrieben. Wie man Bots am Verhalten statt an der Kennung erkennt, steht in Browser sind kompliziert, und das ist dein Vorteil.

Warum ich KI-Bots nicht einfach aussperre

Die naheliegende Antwort wäre: alles sperren, was nach Bot aussieht. Das wäre falsch. Wer in KI-Antworten vorkommen will, in ChatGPT, Perplexity, Meta AI oder Alexa, braucht genau diese Crawler. Sie sollen Produkte, Kategorien und Inhaltsseiten lesen. Die kommen aus dem Cache und kosten fast nichts. Nur die teuren Filterseiten bringen niemandem etwas. Wie Sichtbarkeit in KI-Systemen grundsätzlich funktioniert, habe ich am Beispiel Der coolste Typ in Bayreuth ausprobiert.

Aus demselben Grund habe ich bei Amazon und Meta 429 statt einer Umleitung gewählt. Eine Umleitung auf die ungefilterte Seite wäre Futter, der Bot würde dieselbe Kategorie über tausend Filteradressen immer wieder abrufen. 429 ist ein Stoppsignal, auf das große Crawler mit langsamerem Tempo reagieren sollen.

Was es gebracht hat

Die Zahlen nach drei Tagen:

  • PHP verarbeitete am 30. Oktober 221.640 Anfragen, am 1. November noch 90.339. Das sind 59 Prozent weniger.
  • In der ersten Stunde nach der 429-Regel fiel die Last von 14 auf 4,2.
  • Amazonbot ruft keine Filterseiten mehr ab. Meta versuchte es am 1. November noch 9.129 Mal und bekam fast immer 429.
  • KeenableBot schickt weiter rund 97.000 Anfragen am Tag. Jede kostet jetzt nur noch eine kurze Absage auf dem Webserver.

Ehrlich gesagt ist es nicht ganz vorbei. Die 100 PHP-Prozesse waren am 30. Oktober noch dreimal voll, seitdem zweimal, jeweils nur kurz. Ein Teil der verbleibenden Last kommt aus dem Shop selbst, etwa aus Hintergrundabgleichen mit externen Diensten. Das ist das nächste Kapitel.

Fünf Dinge für deinen Shop

  • Lies deine eigene robots.txt so, wie ein Crawler sie liest. Prüfe besonders, ob eigene Abschnitte für KI-Bots die allgemeinen Sperren aushebeln.
  • Werte eine Woche Zugriffe nach Kennung und Adresse aus. Erst dann weißt du, wer wirklich Last macht. Bei mir waren es nicht die, die ich erwartet hatte.
  • Sperre Filter-, Such- und Sortierparameter für alle Crawler. Diese Seiten haben im Index nichts verloren.
  • Lass Abwehrregeln auf dem Webserver greifen, nicht in PHP. Eine Absage vor PHP kostet Mikrosekunden, eine Absage in PHP einen ganzen Prozess.
  • Unterscheide zwischen Bots, die du sehen willst, und Bots, die du drosseln willst. Komplett sperren solltest du nur Werkzeuge, die keinen Gegenwert bringen.

Und dann die eine Frage, die ich jedem Shopbetreiber stelle: Weißt du, wie viel deiner Serverleistung gerade für Besucher draufgeht, die nie etwas kaufen werden?

Weiterlesen: Wie Du endlich richtige Logs erzeugst: NGINX Logs als JSON · Vier Server, ein Hack und die Leute davor: was drei Wochen Forensik ergeben haben