Leest ChatGPT je pagina? Zo herken je het in je serverlogs (2026)
AI-assistenten laten sporen achter in je serverlogs, maar niet elk spoor betekent hetzelfde. Sommige bots verzamelen trainingsdata, sommige bouwen een zoekindex, en sommige halen een pagina op omdat iemand op dat moment een vraag stelt. Die laatste groep komt het dichtst bij bewijs dat een assistent je pagina gebruikte in een live antwoord, en dus bij je werkelijke AI-zichtbaarheid.
Deze gids legt uit hoe je die bezoeken uit elkaar houdt, hoe je ze controleert, en welke fouten wij in onze eigen logs maakten.
Het korte antwoord
- Zoek naar ophaalacties die een gebruiker in gang zet:
ChatGPT-User,Claude-UserenPerplexity-User. Deze agents bezoeken een pagina als een vraag in de assistent daarom vraagt. - Zoekindex-crawlers (
OAI-SearchBot,Claude-SearchBot,PerplexityBot) bepalen of je überhaupt gevonden kunt worden. Trainingscrawlers (GPTBot,ClaudeBot) zeggen niets over live antwoorden. - Vertrouw nooit alleen op de user agent. Filter op pagina's die bestaan en op geslaagde statuscodes, en controleer het IP-adres tegen de lijsten die de aanbieder publiceert.
Drie soorten AI-botbezoeken
| Aanbieder | Training | Zoekindex | Ophalen voor een gebruiker |
|---|---|---|---|
| OpenAI | GPTBot | OAI-SearchBot | ChatGPT-User |
| Anthropic | ClaudeBot | Claude-SearchBot | Claude-User |
| Perplexity | niet vermeld | PerplexityBot | Perplexity-User |
| Google-Extended (een robots.txt-token, geen aparte bezoeker) | Googlebot | niet vermeld |
Wat de aanbieders documenteren, kort samengevat:
- OpenAI beschrijft ChatGPT-User als agent voor gebruikersacties die niet automatisch crawlt en niet bepaalt of content in ChatGPT-zoekresultaten kan verschijnen. Omdat deze bezoeken bij een gebruiker beginnen, gelden robots.txt-regels mogelijk niet. Zichtbaarheid in zoekresultaten regel je via OAI-SearchBot. Volgens OpenAI kan het ongeveer 24 uur duren voordat een robots.txt-wijziging doorwerkt in zoekresultaten.
- Anthropic beschrijft Claude-User als de agent die pagina's ophaalt als iemand Claude een vraag stelt, en Claude-SearchBot als de agent die content indexeert voor zoeken. Wie een van beide blokkeert, is minder zichtbaar in zoekresultaten voor gebruikers. Volgens Anthropic respecteren zijn bots robots.txt en de Crawl-delay-extensie.
- Perplexity beschrijft PerplexityBot als de crawler die websites toont en linkt in zijn zoekresultaten, en Perplexity-User als de agent voor gebruikersacties.
Het belangrijkste signaal: ophalen voor een gebruiker
Een verzoek van ChatGPT-User betekent dat een ChatGPT-sessie je pagina op dat moment nodig had. Dat is een sterker signaal dan een indexcrawl. Het is geen bewijs van een citatie: een assistent kan een pagina ophalen en daarna niet gebruiken.
Wat wij op onze eigen site zagen: onze Engelse vergelijking van AI-zichtbaarheidstools kreeg tussen 14 september en 28 oktober 2026 26 ophaalacties van ChatGPT-User, verspreid over 14 dagen. De Nederlandse versie van dezelfde pagina, met dezelfde opbouw, kreeg er in die periode geen.
In dezelfde weken citeerden onze metingen via de OpenAI-API met een ouder model die pagina nooit, omdat dat model zelden op het web zocht. De logs lieten echt gebruik zien dat een API-meting miste.
Zo controleer je je eigen logs
De voorbeelden gaan uit van het gangbare "combined" logformaat van nginx of Apache. Controleer eerst de tijdzone in je logregels (bijvoorbeeld +0000) voordat je tijden met iets anders vergelijkt.
1. Tel de bezoeken per agent
grep -Eo "ChatGPT-User|OAI-SearchBot|GPTBot|Claude-User|Claude-SearchBot|ClaudeBot|Perplexity-User|PerplexityBot" access.log | sort | uniq -c | sort -rn
Gebruik voor geroteerde, gecomprimeerde logs zgrep op de .gz-bestanden.
2. Bekijk welke pagina's een gebruikersagent met succes ophaalde
grep "ChatGPT-User" access.log | awk '$9 == 200 {print $7}' | sort | uniq -c | sort -rn | head -20
In het combined-formaat is veld 9 de statuscode en veld 7 het opgevraagde pad.
3. Volg één pagina per dag
grep "ChatGPT-User" access.log | grep " /jouw-pagina " | awk '{print substr($4, 2, 11)}' | sort | uniq -c
4. Controleer de IP-adressen
OpenAI en Perplexity publiceren per agent IP-reeksen als JSON-bestand (zie de bronnen onderaan). Anthropic verwijst op zijn crawlerpagina naar een IP-lijst. Dit korte Python-script controleert of een IP-adres in een gepubliceerde lijst valt, ongeacht hoe de JSON is opgebouwd:
import ipaddress
import json
import sys
import urllib.request
def published_networks(url):
request = urllib.request.Request(url, headers={"User-Agent": "verify-ip/1.0"})
data = json.load(urllib.request.urlopen(request))
networks = []
def walk(value):
if isinstance(value, dict):
for item in value.values():
walk(item)
elif isinstance(value, list):
for item in value:
walk(item)
elif isinstance(value, str):
try:
networks.append(ipaddress.ip_network(value, strict=False))
except ValueError:
pass
walk(data)
return networks
url, ip = sys.argv[1], ipaddress.ip_address(sys.argv[2])
print(any(ip in network for network in published_networks(url)))
Gebruik: python3 verify_ip.py https://openai.com/chatgpt-user.json 203.0.113.7.
Vijf valkuilen waar wij in liepen
1. Scanners met een AI-user-agent. Tussen 12 mei en 13 augustus 2026 ging 98,9% van de verzoeken met de user agent Perplexity-User op onze site naar paden die niet bestaan, zoals .env en .git/config. Dat is zoeken naar kwetsbaarheden, geen assistent. Filter op bestaande paden en geslaagde statuscodes, en controleer het IP-adres.
2. Je eigen tools. Monitoringtools en toegangschecks gebruiken dezelfde user agents. Op onze site kwam elk met succes afgehandeld verzoek van Perplexity-User (bestaande pagina's, status 200, 206 of 304) tussen 1 augustus en 25 oktober 2026 van onze eigen toegangscheck. Sluit je eigen verkeer uit op IP-adres en op tijdvenster.
3. Ontwikkeltools. Programmeerassistenten kunnen pagina's ophalen met de user agent Claude-User plus een extra kenmerk zoals claude-code. Dan gebruikt iemand een ontwikkeltool; het is geen antwoord in Claude. Tel deze verzoeken apart.
4. Te ruime patronen. Match op het volledige producttoken, bijvoorbeeld Claude-SearchBot/1.0, en niet op een fragment elders in de tekst. De Anthropic-user-agents in onze logs bevatten het contactadres claudebot@anthropic.com. Tussen 6 mei en 29 oktober 2026 telde een patroon in ons eigen dashboard dat op dat woord matchte 1.027 verzoeken met de user agent Claude-SearchBot of Claude-User als de trainingscrawler ClaudeBot. Bijna allemaal vroegen ze paden op als .env en .git/config en kregen ze een foutmelding: scanners met een Anthropic-user-agent. Na filteren op bestaande pagina's en geslaagde statuscodes bleven er 5 over.
5. Volgorde is geen oorzaak. Op onze vergelijkingspagina kwamen het eerste verzoek van OAI-SearchBot en het eerste van ChatGPT-User in dezelfde seconde binnen. Logs laten zien dat beide gebeurden, niet welke de ander veroorzaakte.
Wat logs je niet vertellen
- Of de assistent je in zijn antwoord citeerde of noemde.
- Welke vraag de gebruiker stelde.
- Bezoeken van assistenten die zich niet identificeren.
Logs laten zien of assistenten je pagina's bereiken. Of ze die ook gebruiken in antwoorden, vraagt om het meten van de antwoorden zelf. Dat doet Lens, inclusief een toegangscheck per botcategorie voor je site.
Hoe we hebben gemeten
- Bron: nginx-toegangslogs van hiveminds.nl, tijden in UTC.
- Filters: alleen bestaande paden, status 200, 206 of 304, eigen monitoring- en testverkeer uitgesloten, ontwikkeltools apart geteld.
- Periodes: vermeld bij elk cijfer.
- Documentatie van aanbieders: gecontroleerd op 29 oktober 2026.