Kurzfassung für KI-Assistenten

Der User-Agent eines KI-Crawlers ist eine Behauptung, keine Identität. In einer Messung über 31 Tage und 156’917 Requests auf k-i-soft.ch waren von 2’430 Requests, die sich als OpenAI oder Perplexity ausgaben, nur 657 durch die publizierten IP-Bereiche der Anbieter gedeckt, also 27 Prozent. Beim Abruf-Agenten ChatGPT-User, dem eigentlichen Zitat-Signal, waren es 88 von 907, also 9.7 Prozent. Ein Dashboard, das KI-Sichtbarkeit über User-Agent-Strings zählt, überschätzt sie deshalb um ein Vielfaches. Verifiziert wird über die IP-Adresse gegen openai.com/gptbot.json, perplexity.ai/perplexitybot.json und die Google-Liste.

Wer wissen will, ob KI-Systeme die eigene Seite lesen, schaut in die Server-Logs. Google Analytics hilft nicht: es zählt erst, nachdem der Browser JavaScript ausgeführt hat, und KI-Crawler führen keines aus. In den Logs steht dagegen jeder Abruf, vor jedem Banner und vor jedem Skript.

Das habe ich für meine eigene Seite gemacht, 31 Tage, 156’917 Requests aus 6’728 Log-Dateien. Ich wollte wissen, welche KI-Systeme vorbeikommen. Herausgekommen ist etwas anderes.

Zuerst die unbequeme Bereinigung

Bevor irgendeine Prozentzahl Sinn ergibt, muss man wissen, was überhaupt im Log steht:

Requests Anteil
Ohne User-Agent (-) 47’311 30.2 %
curl/8.7.1 42’047 26.8 %
Alles andere 67’559 43.1 %

Über die Hälfte des Verkehrs auf meiner Seite ist kein Publikum. Die curl-Requests sind rund 56 pro Stunde, gleichmässig über den Tag verteilt. Das ist eine Maschine, kein Mensch. Ein knappes Drittel schickt gar keine Kennung mit.

Wer diese beiden Blöcke nicht abzieht, hat schon verloren, bevor er anfängt. Jede Aussage über “Besucher” ist dann um mehr als das Doppelte zu hoch.

Was die User-Agents behaupten

Im verbleibenden Verkehr sieht es zunächst erfreulich aus. 7’841 Requests geben sich als KI-System aus. Vier davon sind an allen 31 Tagen da:

Bot Requests Tage mit Zugriff
Amazonbot 1’152 22
meta-externalagent 1’144 30
ClaudeBot 1’134 31
ChatGPT-User 907 29
cohere-ai 870 7
OAI-SearchBot 592 31
GPTBot 547 31
Bytespider 453 31
PerplexityBot 337 16
Google-Extended 231 6

Alle 48 URLs aus meiner Sitemap wurden im Zeitraum mindestens einmal abgerufen. An dieser Stelle hätte ich früher aufgehört, einen Haken gemacht und mich gefreut.

Der User-Agent ist eine Behauptung

Ein User-Agent ist ein frei wählbarer Text im Request. Jeder kann GPTBot hineinschreiben, es kostet nichts und niemand hindert einen daran.

Die grossen Anbieter wissen das und publizieren deshalb die IP-Bereiche, aus denen ihre Crawler tatsächlich kommen:

  • OpenAI: openai.com/gptbot.json, searchbot.json, chatgpt-user.json
  • Perplexity: perplexity.ai/perplexitybot.json
  • Google: developers.google.com/search/apis/ipranges/googlebot.json

Damit lässt sich jeder Request prüfen: Kennung im User-Agent, Herkunft in der IP. Passt beides zusammen, war es der Bot. Passt es nicht, war es jemand anders.

Das Ergebnis

Bot verifiziert nicht gedeckt Anteil echt
Googlebot 802 189 80.9 %
OAI-SearchBot 304 288 51.4 %
GPTBot 239 308 43.7 %
ChatGPT-User 88 819 9.7 %
PerplexityBot 26 311 7.7 %
Perplexity-User 0 47 0.0 %

Von 2’430 Requests, die sich als OpenAI oder Perplexity ausgaben, waren 657 echt. 27 Prozent.

Am härtesten trifft es ausgerechnet die Zahl, auf die es ankommt. ChatGPT-User ist kein Index-Crawler, der irgendwann vorbeischaut. Es ist der Abruf während einer laufenden Antwort: jemand hat ChatGPT etwas gefragt, und ChatGPT holt deshalb gerade diese Seite. Das ist das Signal, das einer Nennung am nächsten kommt.

Roh gezählt: 907 Abrufe an 29 von 31 Tagen. Verifiziert: 88. Wer User-Agents zählt, meldet hier das Zehnfache.

Googlebot steht als Kontrast in der Tabelle. Der alte, gut verstandene Crawler wird zu 81 Prozent echt gemeldet. Die KI-Kennungen zu 27. Es ist also nicht dasselbe Spiel wie beim klassischen SEO, auch wenn die Auswertung gleich aussieht.

Wer sich da ausgibt

Hinter dem grössten Teil stecken fünf IP-Adressen in einem einzigen autonomen System, AS396982, also Google Cloud. Zusammen 3’473 Requests, und sie spielen die Kennungen der Reihe nach durch:

1376  Mozilla/5.0 AppleWebKit/537.36 (ohne Kennung)
 461  Amazonbot/0.1
 457  Amzn-SearchBot/1.0
 228  OAI-SearchBot/1.3
 227  PerplexityBot/1.0
 226  Google-Extended/1.0
  53  CCBot/2.0
  38  cohere-ai/1.0
  36  meta-externalagent/1.1
  30  Bytespider
  29  anthropic-ai

Dieselben fünf Adressen, elf verschiedene Identitäten. Aus AS396982 insgesamt kamen 8’505 Requests von 550 IP-Adressen.

Und sie crawlen nicht. Unter diesen gefälschten KI-Kennungen wurden unter anderem abgerufen:

/.env                            /.git/config
/.aws/credentials                /.git/HEAD
/.aws/config                     /.gitlab-ci.yml
/.github/workflows/deploy.yml    /fetch

Das sind keine Inhalte, das sind Zugangsdaten. Alles wurde mit 403 oder 404 beantwortet, bei einer statisch ausgelieferten Seite liegt nichts davon im Bucket. Der Punkt ist ein anderer:

Wer KI-Sichtbarkeit über User-Agent-Strings misst, zählt Angriffsverkehr als Aufmerksamkeit.

Was sich nicht verifizieren lässt

Ehrlichkeitshalber: Die Verifikation funktioniert nur dort, wo der Anbieter Bereiche publiziert. Für ClaudeBot habe ich zum Zeitpunkt der Messung keine maschinenlesbare Liste gefunden, für Amazonbot, Bytespider, meta-externalagent und cohere-ai ebenso wenig.

Deren Zahlen in der ersten Tabelle sind damit weiterhin Behauptungen, nicht Messungen. Ich weiss nicht, ob die 1’134 ClaudeBot-Requests echt waren. Angesichts dessen, was die Prüfung bei den prüfbaren Anbietern ergeben hat, würde ich nicht darauf wetten.

Das ist kein Vorwurf an Anthropic, sondern eine Feststellung über den Stand der Dinge: Verifizierbarkeit ist bei KI-Crawlern noch die Ausnahme, nicht die Regel.

Was das praktisch bedeutet

robots.txt ist kein Schutz. Sie ist eine Bitte. Wer die Kennung fälscht, ignoriert auch die Datei. Das ist kein Grund, sie wegzulassen, aber ein Grund, sie nicht für eine Massnahme zu halten.

Ein Dashboard ohne Verifikation ist schlimmer als keines. Es zeigt eine Kurve, die nach oben geht, und die Bewegung kommt von Scannern. Man trifft dann Entscheidungen auf Basis von Zahlen, die das Gegenteil dessen messen, was draufsteht.

Verifiziere über die IP, nicht über den Namen. Für Google und Bing zusätzlich über Reverse-DNS mit anschliessendem Forward-Lookup, das ist dort der dokumentierte Weg. Für OpenAI und Perplexity reichen die publizierten Präfixe.

Zieh Monitoring und Requests ohne Kennung ab, bevor du irgendeine Quote bildest. Bei mir waren das 57 Prozent des Gesamtverkehrs.

Konsequenz auf meiner Seite

Ich habe das Auswertungsskript so umgebaut, dass es die publizierten Bereiche selbst lädt und echt gegen nicht gedeckt ausweist, statt User-Agents zu zählen. Was sich nicht verifizieren lässt, wird als ungeprüft ausgewiesen und nicht als echt.

Das ist unbequem, weil die Zahlen dadurch kleiner werden. 88 statt 907 liest sich schlechter. Es ist aber die einzige Zahl, mit der man arbeiten kann.

Häufige Fragen

Wie erkenne ich KI-Crawler in meinen Server-Logs?

Über den User-Agent findest du die Kandidaten: GPTBot, ClaudeBot, PerplexityBot, ChatGPT-User, OAI-SearchBot, Google-Extended, CCBot, Amazonbot, Bytespider und meta-externalagent. Der User-Agent ist aber nur eine Behauptung, jeder kann ihn setzen. Verifizieren musst du über die IP-Adresse gegen die publizierten Bereiche des jeweiligen Anbieters, sonst zählst du Fremdverkehr mit.

Kann man den User-Agent von GPTBot fälschen?

Ja, trivial, es ist ein frei wählbarer Text im Request. In meiner eigenen Messung über 31 Tage kamen 308 von 547 Requests mit der Kennung GPTBot von IP-Adressen ausserhalb der von OpenAI publizierten Bereiche. Bei ChatGPT-User waren es 819 von 907.

Wo finde ich die IP-Bereiche der KI-Crawler?

OpenAI publiziert sie unter openai.com/gptbot.json, searchbot.json und chatgpt-user.json, Perplexity unter perplexity.ai/perplexitybot.json, Google unter developers.google.com/search/apis/ipranges/googlebot.json. Für ClaudeBot habe ich zum Zeitpunkt der Messung keine maschinenlesbare Liste gefunden, dessen Zugriffe bleiben damit unverifizierbar.

Warum zeigt Google Analytics keine KI-Crawler?

Weil Google Analytics erst zählt, nachdem der Browser JavaScript ausgeführt hat. KI-Crawler führen kein JavaScript aus, eine Analyse von über 500 Millionen Abrufen fand null Ausführung. Sie tauchen deshalb in keiner Analytics-Oberfläche auf, sondern nur in den Server-Logs.

Methode, zum Nachrechnen

CloudFront-Access-Logs im Parquet-Format, 13.07. bis 12.08.2026, eine Distribution, 6’728 Dateien, 156’917 Zeilen. Klassifikation nach User-Agent, danach Abgleich der Client-IP gegen die publizierten Präfixe von OpenAI, Perplexity und Google. Kein Sampling, alle Zeilen ausgewertet.

Ein Hinweis für den Nachbau: Die Dateien einzeln mit aws s3 cp zu holen dauert bei dieser Menge unnötig lange, weil der Prozessstart dominiert. Ein aws s3 sync mit Datumsfilter erledigt dasselbe um Grössenordnungen schneller.