KI-Crawler: Gemessene Besuche von GPTBot und ClaudeBot und Sperren per robots.txt und nginx

Ein KI-Crawler ist ein Bot, mit dem KI-Firmen Webseiten für Modelltraining, KI-Suche und Antworten auf Nutzerfragen sammeln. Um zu sehen, wie oft diese Bots einen Server mit Nginx + Apache besuchen, habe ich die UAs aus 14 Tagen Zugriffslogs des Origin-Servers mit den IP-Bereichen abgeglichen, die jede Firma veröffentlicht: Aus den offiziellen Bereichen kamen 18.605 Anfragen, und ich habe die Einstellungen zum Sperren oder Zulassen in robots.txt und nginx nach der offiziellen Dokumentation zusammengefasst.
Der Zeitraum ist der 4. bis 17. Oktober 2026; Anfragen, die der vorgelagerte Cache beantwortet hat und die nie den Origin-Server erreichten, sowie Anfragen ohne protokollierte echte IP sind in den Zahlen nicht enthalten.
1️⃣ KI-Crawler erkennen: UAs im Zugriffslog und veröffentlichte IP-Bereiche
Nicht jede als GPTBot protokollierte Anfrage kommt von OpenAI. Der UA ist ein Text, den der Anfragende selbst mitschickt, also kann jeder unter dem Namen GPTBot oder ClaudeBot anfragen.
Deshalb zähle ich zuerst die Anfragen pro Bot-Name nach UA und gleiche sie dann mit den IP-Bereichen ab, die jede Firma veröffentlicht. Unten das Ergebnis für die KI-Bot-Namen aus einem Tag Logs.
grep -oiE '(GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|Bytespider|CCBot|Amazonbot|meta-externalagent)/' access.log-20261018 | sort | uniq -c | sort -rn 2968 GPTBot/
2084 ClaudeBot/
622 meta-externalagent/
535 Amazonbot/
167 PerplexityBot/
99 OAI-SearchBot/
30 ChatGPT-User/
21 Claude-User/
17 Claude-SearchBot/
12 Meta-ExternalAgent/
10 Perplexity-User/
7 CCBot/Zählt man mit [/] hinter dem Namen, fällt Text weg, der kein Name ist, etwa die Kontaktadresse claudebot@ im UA von Claude-SearchBot, und Namen mit anderer Groß- und Kleinschreibung werden getrennt gezählt. Danach prüfe ich in der ersten Spalte, von welchen IPs die GPTBot-Anfragen kamen.
grep 'GPTBot/' access.log-20261018 | awk '{print $1}' | sort | uniq -c | sort -rn | head -5 2524 74.7.x.x
428 185.152.x.x
12 34.53.x.x
1 74.7.x.x
1 172.182.x.xBei Anfragen über ein CDN oder einen Proxy steht in der ersten Spalte die Adresse des Zwischenservers; solche Zeilen gleichst du mit der Adresse in der Spalte X-Forwarded-For am Zeilenende ab. OpenAI veröffentlicht die IP-Bereiche von GPTBot als JSON-Datei.
curl -s https://openai.com/gptbot.json -o gptbot.jsonOb eine IP in der geladenen Bereichsdatei liegt, prüfst du mit ipaddress, einem Standardmodul von Python.
# inrange.py — prüft, ob eine IP in einer JSON-Bereichsdatei liegt
import json, sys, ipaddress
nets = [ipaddress.ip_network(p.get('ipv4Prefix') or p.get('ipv6Prefix')) for p in json.load(open(sys.argv[1]))['prefixes']]
for a in sys.argv[2:]:
ip = ipaddress.ip_address(a)
print(a, 'IN' if any(ip in n for n in nets) else 'OUT')Hinter den Namen der Bereichsdatei schreibst du die zu prüfenden IPs.
python3 inrange.py gptbot.json 74.7.x.x 34.53.x.x74.7.x.x IN
34.53.x.x OUTDie IP mit 2.524 Anfragen lag in den veröffentlichten Bereichen, die mit 12 Anfragen außerhalb. Anthropic, Perplexity, Apple, Common Crawl, Google und Bing veröffentlichen Bereichsdateien im selben Format; bei Amazonbot habe ich geprüft, ob das Reverse-DNS auf crawl.amazonbot.amazon endet. Das ist wie die Passkontrolle am Flughafen, die den Pass prüft und nicht den Namen auf der Bordkarte.
Der Abgleich der 14 Tage zeigte: 70 IPs nutzten abwechselnd 23 Bot-Namen wie GPTBot, ClaudeBot und Googlebot und schickten 48.041 Anfragen, 57 % davon an URLs, die nach Schwachstellen wie .php oder .env suchten. Auch alle 809 Anfragen mit dem Namen Google-Extended kamen aus dieser Gruppe; laut Google-Dokumentation ist Google-Extended ein reines robots.txt-Token ohne UA in HTTP-Anfragen.
2️⃣ Besuche nach UA: 14 Tage Messung und Wochenverlauf
Die Tabelle zeigt die Anfragen der 14 Tage vom 4. bis 17. Oktober. Bei Bots mit veröffentlichten Bereichen habe ich nur Anfragen aus diesen Bereichen gezählt, bei nicht abgeglichenen Bots nach UA ohne die Spoofing-Gruppe.
| Bot | Unternehmen | Anfragen (14 Tage) | Prüfmethode | Spoofing-Gruppe |
|---|---|---|---|---|
| ClaudeBot | Anthropic | 10,305 | Veröffentlichte IP-Bereiche | 2,387 |
| PerplexityBot | Perplexity | 3,406 | Veröffentlichte IP-Bereiche | 2,262 |
| GPTBot | OpenAI | 2,546 | Veröffentlichte IP-Bereiche | 2,328 |
| OAI-SearchBot | OpenAI | 1,399 | Veröffentlichte IP-Bereiche | 2,347 |
| ChatGPT-User | OpenAI | 334 | Veröffentlichte IP-Bereiche | 2,409 |
| Applebot | Apple | 330 | Veröffentlichte IP-Bereiche | 2,372 |
| CCBot | Common Crawl | 275 | Veröffentlichte IP-Bereiche | 2,275 |
| Claude-User | Anthropic | 10 | Veröffentlichte IP-Bereiche | 2,192 |
| Claude-SearchBot | Anthropic | 0 | Veröffentlichte IP-Bereiche | 2,297 |
| Perplexity-User | Perplexity | 0 | Veröffentlichte IP-Bereiche | 2,235 |
| Meta-ExternalAgent | Meta | 14,384 | UA | 2,339 |
| Bytespider | ByteDance | 6,569 | UA | 2,336 |
| Amazonbot | Amazon | 3,493 | UA · Reverse-DNS | 2,379 |
| Googlebot (zum Vergleich) | 10,545 | Veröffentlichte IP-Bereiche | 3,951 | |
| bingbot (zum Vergleich) | Microsoft | 13,477 | Veröffentlichte IP-Bereiche | 1,551 |
Unter den über veröffentlichte Bereiche bestätigten KI-Crawlern lag ClaudeBot mit 10.305 Anfragen vorn, gefolgt von PerplexityBot mit 3.406 und GPTBot mit 2.546. Claude-SearchBot und Perplexity-User hatten 0 Anfragen aus veröffentlichten Bereichen; alle Anfragen unter diesen Namen kamen aus der Spoofing-Gruppe.
Auch nach dem Herausfiltern der Spoofer bleiben Bots, die nicht mit Bereichen abgeglichen wurden. Meta-ExternalAgent lag nach UA mit 14.384 Anfragen vorn, doch die geprüfte Meta-Crawler-Dokumentation enthält keine Liste von IP-Bereichen, daher habe ich nur nach UA gezählt.
Wochenweise schwankte GPTBot zwischen 12 und 3.383 Anfragen, ClaudeBot blieb in allen fünf Wochen zwischen 6.930 und 10.217.
3️⃣ Welche URLs sie abrufen: URL-Typen und Antwortcodes
KI-Crawler holen nicht nur Artikeltext. In den 14 Tagen waren 21 % der Anfragen von Meta-ExternalAgent Bilder; GPTBot aus veröffentlichten Bereichen rief den RSS-Feed 476-mal ab und ClaudeBot die Sitemap 314-mal.
Sie sammeln auch die URLs anderer Sprachversionen: Aus veröffentlichten Bereichen betrafen 1.111 ClaudeBot- und 436 GPTBot-Anfragen Beiträge in anderen Sprachen. Antwortcodes lassen sich direkt aus einem Tag Logs zählen.
grep 'ClaudeBot/' access.log-20261018 | awk '{print $9}' | sort | uniq -c | sort -rn | head -4 1357 200
665 301
31 304
21 404Schon an einem Tag ist fast ein Drittel 301, und in den 14 Tagen waren 5.915 (57 %) der 10.305 ClaudeBot-Anfragen aus veröffentlichten Bereichen 301. Davon kamen 4.736 ohne abschließendes [/], sodass WordPress per 301 auf die URL mit [/] umleitete und derselbe Beitrag noch einmal angefragt wurde.
4️⃣ robots.txt einrichten: Tokens für Training und Suche
robots.txt passt für automatisch sammelnde Trainings- und Such-Bots, aber nicht für Bots, die eine Seite holen, wenn ein Nutzer eine Frage stellt. Laut der Dokumentation von OpenAI und Perplexity gelten robots.txt-Regeln für Anfragen von ChatGPT-User und Perplexity-User möglicherweise nicht.
Jede Firma trennt ihre Tokens nach Zweck, und laut OpenAI-Dokumentation beeinflusst das Sperren eines Tokens die Einstellungen der anderen nicht. Unten die Tokens aus der offiziellen Dokumentation der jeweiligen Firma.
| robots.txt-Token | Unternehmen | Einsatz | Bei Sperre (offizielle Doku) |
|---|---|---|---|
| GPTBot | OpenAI | Sammeln für Modelltraining | Signal, nicht fürs Training zu nutzen |
| OAI-SearchBot | OpenAI | ChatGPT-Suche | Aus ChatGPT-Suchantworten ausgeschlossen (als Navigationslink weiter möglich) |
| ChatGPT-User | OpenAI | Nutzeranfrage | robots.txt-Regeln gelten evtl. nicht |
| ClaudeBot | Anthropic | Sammeln für Modelltraining | Spätere Inhalte aus Trainingsdaten ausgeschlossen |
| Claude-SearchBot | Anthropic | Suchqualität verbessern | Sichtbarkeit in Suchergebnissen kann sinken |
| Claude-User | Anthropic | Nutzeranfrage | Holt keine Seiten für Nutzerfragen |
| PerplexityBot | Perplexity | Suche (kein Training) | Aus Suchergebnissen ausgeschlossen |
| Perplexity-User | Perplexity | Nutzeranfrage | Folgt robots.txt in der Regel nicht |
| Google-Extended | Gemini-Training · Grounding | Kein Einfluss auf Sichtbarkeit und Ranking in der Google-Suche | |
| Applebot-Extended | Apple | Training von Basismodellen | Kein Einfluss auf die Sichtbarkeit in der Apple-Suche |
| meta-externalagent | Meta | KI-Modelltraining u. a. | Sperre mit Disallow (Beispiel aus der Doku) |
Google-Extended und Applebot-Extended sind keine eigenen Crawler, sondern Tokens, die nur in robots.txt vorkommen. Das Crawlen übernehmen die bestehenden Google- und Apple-Crawler; die Tokens legen nur fest, ob die gesammelten Inhalte fürs Training von KI-Modellen genutzt werden dürfen.
Eine robots.txt, die nur das Sammeln fürs Training ablehnt und die Sichtbarkeit in der KI-Suche behält, sieht so aus; laut Dokumentation von OpenAI, Perplexity und Meta kann es bis zu 24 Stunden dauern, bis Änderungen greifen.
# Sammeln fürs Training ablehnen
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: meta-externalagent
Disallow: /
# KI-Such-Bots erlauben
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /Die aktuelle robots.txt des Nginx-+-Apache-Servers enthält keine Zeile, die KI-Bots nennt.
curl -s https://example.com/robots.txt# gilt für alle Suchmaschinen-Bots
User-agent: *
# Admin-Seiten sperren (Sicherheit)
Disallow: /wp-admin/
# ajax-Aufrufe der Admin-Funktionen erlauben (für den Betrieb nötig)
Allow: /wp-admin/admin-ajax.php
# ergänzt: Spam-Suchergebnisse sperren (SEO-Schutz)
Disallow: /search/
Disallow: /?s=
# Pfad zur Sitemap angeben (schnellere Indexierung)
Sitemap: https://example.com/sitemap_index.xmlOhne KI-Bot-Zeilen bekamen die 2.546 GPTBot-Anfragen aus veröffentlichten Bereichen in den 14 Tagen kein 403: 2.090 wurden mit 200 und 432 mit 301 beantwortet. Im selben Zeitraum standen in den Origin-Logs aus veröffentlichten Bereichen 36 robots.txt-Anfragen von Googlebot, 8 von ClaudeBot und 6 von OAI-SearchBot, von GPTBot und PerplexityBot keine. Beantwortet der vorgelagerte Cache die robots.txt, taucht sie ebenfalls nicht in den Origin-Logs auf.
5️⃣ KI-Crawler in nginx sperren und die Grenzen
Auch bei Sperre in robots.txt kommen Anfragen, die die Regeln nicht lesen, ungehindert bis zum Server. In nginx setzt [map] eine Variable auf 1, wenn der UA einen Bot-Namen enthält.
# im http-Block — 1, wenn der Name eines Trainings-Bots im UA steht
map $http_user_agent $ai_train_bot {
default 0;
~*GPTBot/ 1;
~*ClaudeBot/ 1;
~*Bytespider 1;
~*CCBot/ 1;
}Im server-Block wird 403 zurückgegeben, wenn diese Variable 1 ist.
# im server-Block
location / {
if ($fake_searchbot) {
return 403;
}
if ($ai_train_bot) {
return 403;
}
# darunter die bisherigen Einstellungen
}Eine UA-Sperre prüft nur den Namen: Gefälschte Anfragen werden bei gleichem Namen mitgesperrt und kommen durch, sobald sie den Namen ändern. Anfragen, die den Namen eines erlaubten Such-Bots borgen, lassen sich nur per Abgleich mit veröffentlichten IP-Bereichen herausfiltern.
Um OAI-SearchBot zu erlauben und nur gleichnamige Anfragen von außerhalb der Bereiche abzuweisen, machst du die veröffentlichten Bereiche mit [geo] zu einer Variable und gleichst sie zusammen mit dem UA ab.
# im http-Block — veröffentlichte Bereiche von OAI-SearchBot (ganze searchbot.json einfügen, hier nur zwei Zeilen)
geo $oai_search_net {
default 0;
104.210.140.128/28 1;
135.234.64.0/24 1;
}
map $http_user_agent:$oai_search_net $fake_searchbot {
default 0;
~*OAI-SearchBot/.*:0$ 1;
}Steht ein CDN oder Proxy davor, sieht [geo] die Adresse des Zwischenservers; stelle daher mit real_ip die echte IP wieder her, bevor du abgleichst. Laut Anthropic-Dokumentation verhindert eine Sperre per IP-Adresse auch das Lesen der robots.txt, sodass das Ablehnungssignal womöglich nicht richtig ankommt.
Die Einstellungen habe ich nicht auf dem laufenden Server eingespielt, sondern nur die Syntax mit einer Test-Konfigurationsdatei geprüft.
nginx -t -p ./ -c nginx-test/nginx.confnginx: the configuration file ./nginx-test/nginx.conf syntax is ok
nginx: configuration file ./nginx-test/nginx.conf test is successfulDa beim Beispiel nur die Syntax geprüft wurde, habe ich die 403-Antworten nicht kontrolliert; laut 14 Tagen Logs kamen 2.347 der 3.937 Anfragen mit dem Namen OAI-SearchBot aus der Spoofing-Gruppe außerhalb der veröffentlichten Bereiche.
6️⃣ Von KI-Crawlern bezahlt werden: Pay per crawl und Web Bot Auth
Pay per crawl ist eine Funktion von Cloudflare AI Crawl Control, mit der Website-Betreiber pro Zone einen Preis festlegen und für jede KI-Crawler-Anfrage kassieren. Laut der am 18. Oktober 2026 geprüften offiziellen Dokumentation ist sie in der privaten Beta, und Cloudflare wickelt die Zahlung als Merchant of Record ab.
Crawler, die ihre Zahlungsbereitschaft per Request-Header mitteilen, erhalten eine 200-Antwort, die übrigen eine [402 Payment Required]-Antwort mit dem Preis. Wird derselbe Crawler per WAF oder Bot Management gesperrt, hat die Sperrregel Vorrang vor der Abrechnung.
Crawler, die zahlen wollen, müssen sich per Web Bot Auth ausweisen. Dabei signiert der Bot seine Anfragen mit einem Ed25519-Schlüssel und legt den öffentlichen Schlüssel unter [/.well-known/http-message-signatures-directory] ab, damit die Gegenseite die Signatur prüfen kann.
Die Signatur wird in drei Headern übertragen, [Signature-Agent], [Signature-Input] und [Signature], und weist den Bot per kryptografischer Signatur statt über IP-Bereiche aus. Das Standardformat des Zugriffslogs auf dem Origin-Server protokolliert keine Request-Header, daher habe ich nicht geprüft, ob die KI-Crawler-Anfragen der 14 Tage signiert waren.
Die 18.605 über veröffentlichte IP-Bereiche bestätigten KI-Crawler-Anfragen der 14 Tage entsprachen 77 % der 24.022 Anfragen von Googlebot und bingbot aus deren veröffentlichten Bereichen im selben Zeitraum. Ob du Trainings-Tokens in die robots.txt aufnimmst, entscheidest du anhand der Zahlen ohne Spoofing; ergänzt du die wöchentliche Log-Auswertung um den Bereichsabgleich, siehst du den Verlauf.
🔢 FAQ & empfohlene Inhalte




ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.