Technisches GEO
KI-Bots in Ihren Serverlogs finden (und prüfen, ob sie echt sind)
Ihre Webanalyse sieht KI-Crawler nicht. Ihre Serverlogs schon. Hier finden Sie Befehle zum Kopieren, die offiziellen IP-Listen und eine Datenschutz-Checkliste.
Aktualisiert und geprüft am 19. Oktober 2026
Warum Ihre Webanalyse keine KI-Bots zeigt
Tools wie Google Analytics zählen Besuche mit einem kleinen Skript, das im Browser läuft. Ein Crawler, der nur Ihr HTML herunterlädt, führt dieses Skript nie aus und taucht deshalb nie auf.
Ihr Webserver notiert jede Anfrage, von Menschen wie von Bots. Diese Aufzeichnung ist Ihr Access-Log.
Logs beantworten drei Fragen: welche Bots vorbeikommen, welche Seiten sie abrufen und ob sie die Seite oder einen Fehler bekommen.
Wo Sie Ihre Logs finden
- nginx: Das Standardformat „combined“ enthält schon alles Nötige. Unter Debian und Ubuntu liegt die Datei meist unter /var/log/nginx/access.log.
- Apache: Nutzen Sie ebenfalls das Combined-Format. Das „common“-Format hat keinen User-Agent, damit erkennen Sie keine Bots. Ergänzen Sie %{User-agent}i in Ihrem LogFormat.
- Hinter einem CDN oder Proxy? Dann zeigt das erste Feld womöglich bei jeder Anfrage die IP Ihres Proxys. Richten Sie zuerst die Real-IP-Einstellung Ihres Servers ein (oder loggen Sie die weitergeleitete Client-IP), sonst scheitert jede IP-Prüfung unten.
- Kein Zugriff auf Roh-Logs? Schauen Sie ins Dashboard Ihres Hosters oder schalten Sie ein CDN vor Ihre Website. Mehr dazu weiter unten.
Eine Logzeile lesen
Hier ist eine Zeile im Combined-Format, mit einer erfundenen IP-Adresse. Jeder Teil beantwortet eine Frage.
203.0.113.7 - - [19/Oct/2026:08:01:02 +0000] "GET /pricing HTTP/1.1" 200 5123 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot"- IP-Adresse: woher die Anfrage kam. Diese prüfen Sie gleich gegen die offiziellen Listen.
- Zeit: wann es passiert ist.
- Anfrage: Methode und Seite. Hier GET /pricing.
- Statuscode: 200 heißt ausgeliefert, 301/302 weitergeleitet, 403 blockiert, 404 nicht gefunden, 5xx ein Serverfehler.
- Bytes: wie viel zurückgeschickt wurde.
- User-Agent: wer der Besucher zu sein behauptet. Hier GPTBot. Das kann jeder eintippen, allein beweist es also nichts.
Diese KI-Bots sollten Sie suchen
Diese Liste stammt aus der eigenen Dokumentation jeder Firma, geprüft am 19. Oktober 2026.
| User-Agent | Firma | Was er tut | Befolgt robots.txt | IP-Liste |
|---|---|---|---|---|
OAI-SearchBot | OpenAI | Suchindex | Ja | OAI-SearchBot JSON (öffnet in einem neuen Tab) |
GPTBot | OpenAI | Training | Ja | GPTBot JSON (öffnet in einem neuen Tab) |
ChatGPT-User | OpenAI | Nutzeranfrage | Teilweise | ChatGPT-User JSON (öffnet in einem neuen Tab) |
Claude-SearchBot | Anthropic | Suchindex | Ja | Claude-SearchBot JSON (öffnet in einem neuen Tab) |
ClaudeBot | Anthropic | Training | Ja | ClaudeBot JSON (öffnet in einem neuen Tab) |
Claude-User | Anthropic | Nutzeranfrage | Ja | Claude-User JSON (öffnet in einem neuen Tab) |
PerplexityBot | Perplexity | Suchindex | Ja | PerplexityBot JSON (öffnet in einem neuen Tab) |
Perplexity-User | Perplexity | Nutzeranfrage | Nein | Perplexity-User JSON (öffnet in einem neuen Tab) |
Googlebot | Suchmaschine | Ja | Googlebot JSON (öffnet in einem neuen Tab) | |
Google-Agent | Nutzeranfrage | Nein | Google-Agent JSON (öffnet in einem neuen Tab)Google-Agent JSON (öffnet in einem neuen Tab)Google-Agent JSON (öffnet in einem neuen Tab) | |
bingbot | Microsoft | Suchmaschine | Ja | bingbot JSON (öffnet in einem neuen Tab) |
Applebot | Apple | Suchmaschine | Ja | Applebot JSON (öffnet in einem neuen Tab) |
meta-externalagent | Meta | Training | Ja | Nicht veröffentlicht |
meta-webindexer | Meta | Suchindex | Ja | Nicht veröffentlicht |
meta-externalfetcher | Meta | Nutzeranfrage | Teilweise | Nicht veröffentlicht |
Amazonbot | Amazon | Training | Ja | Nicht veröffentlicht |
Amzn-SearchBot | Amazon | Suchindex | Ja | Nicht veröffentlicht |
Amzn-User | Amazon | Nutzeranfrage | Teilweise | Nicht veröffentlicht |
DuckAssistBot | DuckDuckGo | Suchindex | Ja | DuckAssistBot JSON (öffnet in einem neuen Tab) |
MistralAI-User | Mistral AI | Nutzeranfrage | Ja | Nicht veröffentlicht |
MistralAI-Index | Mistral AI | Suchindex | Keine Angabe | Nicht veröffentlicht |
MistralAI-Training | Mistral AI | Training | Ja | Nicht veröffentlicht |
CCBot | Common Crawl | Training | Ja | CCBot JSON (öffnet in einem neuen Tab) |
Google-Extended und Applebot-Extended sind robots.txt-Tokens, keine Crawler. Sie tauchen nie in einem Log auf.
Anthropic veröffentlicht keine vollständigen User-Agent-Strings. In Logs sehen sie so aus: „compatible; Claude-User/1.0; +claudebot@anthropic.com“.
Befehle zum Kopieren
Diese funktionieren mit einem Log im Combined-Format. Wir haben sie am 19. Oktober 2026 mit grep und awk unter macOS getestet. Ersetzen Sie access.log durch Ihre Datei.
grep -oE 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|meta-externalagent|Amazonbot|Applebot|DuckAssistBot|MistralAI-User|CCBot' access.log | sort | uniq -c | sort -rnawk -F'"' '{ split($3,a," "); if (match($6,/GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User/)) print substr($6,RSTART,RLENGTH), a[1] }' access.log | sort | uniq -cgrep 'OAI-SearchBot' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | headawk -F'"' '$6 ~ /GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User/ { split($3,a," "); if (a[1] >= 400) print a[1], $2 }' access.logzgrep -c 'GPTBot' /var/log/nginx/access.log.*.gzJede Bot-IP mit Python prüfen
Dieses Skript lädt die offiziellen IP-Listen herunter und gibt für jede Bot-Zeile VERIFIED oder NOT IN LIST aus. Es nutzt nur die Python-Standardbibliothek.
# Usage: python3 verify_bots.py access.log
import ipaddress, json, re, sys, urllib.request
LISTS = {
"GPTBot": "https://openai.com/gptbot.json",
"OAI-SearchBot": "https://openai.com/searchbot.json",
"ChatGPT-User": "https://openai.com/chatgpt-user.json",
"ClaudeBot": "https://claude.com/crawling/bots.json",
"Claude-User": "https://claude.com/crawling/bots.json",
"Claude-SearchBot": "https://claude.com/crawling/bots.json",
"PerplexityBot": "https://www.perplexity.com/perplexitybot.json",
"Perplexity-User": "https://www.perplexity.com/perplexity-user.json",
"Googlebot": "https://developers.google.com/static/crawling/ipranges/common-crawlers.json",
"bingbot": "https://www.bing.com/toolbox/bingbot.json",
}
cache = {}
def networks(url):
if url not in cache:
req = urllib.request.Request(url, headers={"User-Agent": "log-check/1.0"})
data = json.load(urllib.request.urlopen(req, timeout=20))
cache[url] = [ipaddress.ip_network(p.get("ipv4Prefix") or p.get("ipv6Prefix"))
for p in data["prefixes"]]
return cache[url]
bot = re.compile("|".join(sorted(map(re.escape, LISTS), key=len, reverse=True)))
for line in open(sys.argv[1], errors="replace"):
ua = line.split('"')[5] if line.count('"') >= 6 else line
match = bot.search(ua)
if not match:
continue
try:
ip = ipaddress.ip_address(line.split()[0])
except ValueError:
continue
ok = any(ip in net for net in networks(LISTS[match.group(0)]))
print("VERIFIED " if ok else "NOT IN LIST", match.group(0), ip)Ist es wirklich GPTBot? Prüfen Sie die IP
Ein User-Agent ist nur Text. Jeder kann „GPTBot“ mitschicken. Perplexity selbst empfiehlt, den User-Agent-Abgleich mit einer IP-Prüfung zu kombinieren.
Weg 1: die offiziellen IP-Listen
OpenAI, Anthropic, Perplexity, Google, Microsoft (Bing), Apple, DuckDuckGo und Common Crawl veröffentlichen JSON-Listen mit den IP-Bereichen ihrer Bots. Steht die IP in der Liste, kam die Anfrage aus dem Netz dieser Firma. Die Links stehen in der Tabelle oben.
Weg 2: Reverse DNS
Google: Schlagen Sie den Hostnamen zur IP nach. Er muss auf googlebot.com, google.com oder googleusercontent.com enden, und die Abfrage dieses Namens muss dieselbe IP zurückgeben. Bei Bing funktioniert es genauso, mit Namen auf search.msn.com.
host 66.249.66.1
# 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
host crawl-66-249-66-1.googlebot.com
# crawl-66-249-66-1.googlebot.com has address 66.249.66.1 ← same IP: real GooglebotWas die Zahlen Ihnen sagen
- Training, Suche und Nutzeranfragen sind verschieden. GPTBot und ClaudeBot sammeln Trainingsdaten. OAI-SearchBot, Claude-SearchBot und PerplexityBot bauen Suchindizes. ChatGPT-User, Claude-User und Perplexity-User rufen eine Seite ab, weil gerade jemand danach fragt.
- Viele 403- oder 5xx-Antworten bedeuten, dass Sie KI-Zugriff blockieren oder stören. Prüfen Sie Firewall, die Bot-Einstellungen Ihres CDNs und Ihre robots.txt.
- Abrufe von robots.txt und llms.txt zeigen, welche Bots Ihre Regeln lesen. OpenAI sagt, OAI-SearchBot und GPTBot können beim Abruf dieser Datei eine robots.txt-Markierung an ihren User-Agent anhängen.
- Nutzeranfragen können robots.txt überspringen. Laut OpenAI gelten robots.txt-Regeln für ChatGPT-User eventuell nicht, und laut Perplexity ignoriert Perplexity-User sie in der Regel.
- Ein Besuch ist kein Zitat. Er heißt nur, dass ein Bot Ihre Seite gelesen hat, nicht, dass eine KI-Antwort sie zitiert.
Kein Serverzugriff? Nutzen Sie Ihr CDN
Cloudflares AI Crawl Control (früher AI Audit) zeigt, welche KI-Dienste Ihre Website crawlen und welche Crawler Ihre Regeln ignorieren. Laut Cloudflare ist es in allen Tarifen verfügbar.
Cloudflare Logpush kann Anfrage-Logs mit Feldern wie ClientIP, ClientRequestUserAgent, ClientRequestPath und EdgeResponseStatus exportieren. Unser Analyzer liest auch diese JSON-Zeilen.
Logs und Datenschutz (DSGVO)
IP-Adressen können personenbezogene Daten sein. Der Gerichtshof der EU hat das für dynamische IP-Adressen im Fall Breyer entschieden (C-582/14, 19. Oktober 2016), und Erwägungsgrund 30 der DSGVO nennt IP-Adressen als Online-Kennungen.
Bot-IPs gehören Firmen, aber im selben Log stehen auch die IPs Ihrer Besucher. Ein praktischer Ansatz:
- Filtern Sie zuerst die Bot-Zeilen heraus und arbeiten Sie mit diesen.
- Bewahren Sie Roh-Logs nur so lange auf wie nötig, etwa für die Sicherheit. Die DSGVO nennt keine feste Zahl von Tagen; personenbezogene Daten dürfen nicht länger als nötig gespeichert werden.
- Speichern Sie Summen (Bot, Tag, Seite, Status, verifiziert oder nicht) statt IPs.
- Kürzen oder hashen Sie eine IP, sobald Sie sie geprüft haben.
- Laden Sie Roh-Logs nicht ohne Auftragsverarbeitungsvertrag in ein externes Tool. Unser Analyzer läuft in Ihrem Browser, es wird also nichts hochgeladen.
Dies sind allgemeine Informationen, keine Rechtsberatung.
Häufig gestellte Fragen
Wie sehe ich, ob ChatGPT meine Website besucht?
Suchen Sie in Ihrem Access-Log nach OAI-SearchBot (ChatGPT-Suche), ChatGPT-User (Anfrage eines Nutzers) und GPTBot (Training). Prüfen Sie dann die IPs gegen die Listen von OpenAI.
Warum zeigt Google Analytics GPTBot nicht?
Google Analytics zählt Besuche über ein Skript im Browser. Crawler, die nur Ihr HTML herunterladen, führen es nicht aus.
Woran erkenne ich, ob eine GPTBot-Anfrage echt ist?
Prüfen Sie ihre IP gegen openai.com/gptbot.json. Steht sie nicht in der Liste, behandeln Sie die Anfrage als nicht verifiziert.
Welche Bots ignorieren robots.txt?
Laut eigener Dokumentation: Bots, die eine Seite abrufen, weil ein Nutzer danach gefragt hat. OpenAI sagt, robots.txt gelte für ChatGPT-User eventuell nicht, Perplexity sagt, Perplexity-User ignoriere sie in der Regel, und Google sagt dasselbe über seine von Nutzern ausgelösten Fetcher.
Was bedeuten 403-Fehler für KI-Bots?
Ihr Server, Ihre Firewall oder Ihr CDN hat die Anfrage abgelehnt. Wenn Sie in der KI-Suche gefunden werden wollen, finden Sie die Regel, die den Bot blockiert, und ändern Sie sie.
Darf ich IP-Adressen loggen?
Meist ja, für einen klaren Zweck wie Sicherheit, aber IPs können personenbezogene Daten sein. Bewahren Sie Logs kurz auf, speichern Sie Summen statt IPs und erwähnen Sie das Logging in Ihrer Datenschutzerklärung. Dies ist keine Rechtsberatung.
Weiterlernen
Sorgen Sie dafür, dass Bots Lesenswertes finden
Gecrawlt heißt nicht zitiert. Sehen Sie, wie KI-Tools Ihre Seite lesen, anhand von 22 Prüfpunkten.
Meine Seite analysieren