Slik sjekker du serverloggene for AI-crawlere

Publisert

Kort svar

Søk i user agent-feltet i tilgangsloggen etter tokens som GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot og PerplexityBot, og se deretter på statuskodene de fikk. En user agent alene beviser ingenting, så sjekk hver kilde-IP mot leverandørens publiserte IP-liste, eller med omvendt og vanlig DNS-oppslag for Google og Apple.

Robots.txt sier hva du ber crawlere om å gjøre. Tilgangsloggen din viser hva som faktisk skjedde: hvilke AI-crawlere som kom, hvilke sider de ba om, og hva serveren din svarte. Det er det mest direkte beviset du har, og det krever ikke mer enn loggfilene og en terminal. Eksemplene nedenfor bruker det kombinerte loggformatet (combined) som nginx og Apache bruker som standard.

På denne siden
  1. Hvordan ser et besøk fra en AI-crawler ut i tilgangsloggen?
  2. Hvordan teller jeg besøk fra AI-crawlere?
  3. Hva fikk hver crawler egentlig?
  4. Hvordan verifiserer jeg at et besøk virkelig kom fra OpenAI, Anthropic eller Perplexity?
  5. Hvordan verifiserer jeg Googlebot, Applebot og CCBot?
  6. Hvordan ser falske AI-crawlere ut?
  7. Hva kan ikke loggene fortelle deg?

Hvordan ser et besøk fra en AI-crawler ut i tilgangsloggen?

I combined-formatet inneholder hver linje klient-IP-en, tidspunktet, forespørselslinjen, statuskoden, svarstørrelsen, referreren og user agent-en. nginx definerer det som $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent", og Apaches combined-format har de samme feltene. Et besøk fra OpenAIs treningscrawler ser slik ut:

20.171.206.5 - - [12/Nov/2026:10:00:01 +0000] "GET /pricing HTTP/1.1" 200 5120 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot"

Tokenene du skal lete etter, er de leverandørene dokumenterer: GPTBot, OAI-SearchBot og ChatGPT-User (OpenAI); ClaudeBot, Claude-SearchBot og Claude-User (Anthropic); PerplexityBot og Perplexity-User (Perplexity); Googlebot, Applebot, meta-externalagent, meta-webindexer og CCBot. Du kommer aldri til å se Google-Extended eller Applebot-Extended. Google sier at Google-Extended ikke har noen egen user agent-streng, og Apple sier at Applebot-Extended ikke crawler; begge er bare robots.txt-tokens.

Hvordan teller jeg besøk fra AI-crawlere?

Når hver linje deles på anførselstegnet, havner user agent-en i felt 6. Hvis du bare matcher det feltet, unngår du falske treff fra nettadresser som tilfeldigvis inneholder navnet på en bot. Denne kommandoen teller besøk per crawler i den gjeldende loggen og i de roterte, komprimerte:

zcat -f /var/log/nginx/access.log* \
  | awk -F'"' '{print $6}' \
  | grep -Eo 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|Claude-User|PerplexityBot|Perplexity-User|Googlebot|bingbot|Applebot|meta-externalagent|meta-webindexer|CCBot' \
  | sort | uniq -c | sort -rn

Tilpass stien for Apache, ofte /var/log/apache2/access.log* eller /var/log/httpd/access_log*. zcat -f leser både vanlige og gzip-komprimerte filer. Hvis en crawler du venter, mangler, er ikke det alene bevis for en blokkering: den kan rett og slett ikke ha besøkt deg i perioden loggene dekker.

Hva fikk hver crawler egentlig?

Besøk betyr mindre enn svar. En crawler som får en 403 på hver forespørsel, har besøkt deg, men ikke lest noe. Disse kommandoene viser statuskoder, de mest etterspurte stiene og om crawleren hentet robots.txt:

# Status codes returned to PerplexityBot
zcat -f /var/log/nginx/access.log* | awk -F'"' '$6 ~ /PerplexityBot/ {split($3, s, " "); print s[1]}' | sort | uniq -c

# Most requested paths for OAI-SearchBot
zcat -f /var/log/nginx/access.log* | awk -F'"' '$6 ~ /OAI-SearchBot/ {split($2, r, " "); print r[2]}' | sort | uniq -c | sort -rn | head -20

# Did ClaudeBot fetch robots.txt, and what did it get?
zcat -f /var/log/nginx/access.log* | awk -F'"' '$6 ~ /ClaudeBot/ && $2 ~ /robots\.txt/ {split($3, s, " "); print s[1]}' | sort | uniq -c

Stort sett 200-svar er det du vil ha. Mange 403- eller 429-svar peker mot en brannmurregel eller en rategrense. 5xx-svar på robots.txt er alvorlige: etter RFC 9309 må en crawler som får en serverfeil for robots.txt, anta at hele nettstedet er forbudt.

Hvis nettstedet ligger bak en CDN, endres to ting. Forespørsler som CDN-en blokkerer, når aldri opprinnelsesserveren, så de vises ikke i loggene dens i det hele tatt; sjekk CDN-ens egne sikkerhetshendelser i stedet. Og hvis du ikke gjenoppretter besøkendes IP, logger opprinnelsesserveren CDN-ens adresse. Cloudflare sender for eksempel den opprinnelige IP-en i headeren CF-Connecting-IP og logger som standard en Cloudflare-IP.

Hvordan verifiserer jeg at et besøk virkelig kom fra OpenAI, Anthropic eller Perplexity?

Disse leverandørene publiserer IP-områdene agentene deres bruker: OpenAI på openai.com/gptbot.json, openai.com/searchbot.json og openai.com/chatgpt-user.json; Anthropic på claude.com/crawling/bots.json; Perplexity på perplexity.ai/perplexitybot.json og perplexity.ai/perplexity-user.json. Anthropic sier at en kilde-IP på listen deres viser at crawleren kommer fra Anthropic. Ingen av disse tre dokumenterer verifisering med omvendt DNS, så bruk listene.

Filene har samme oppbygning, en prefixes-liste med ipv4Prefix- eller ipv6Prefix-oppføringer, så ett lite skript kan sjekke en IP mot hvilken som helst av dem:

python3 - 20.171.206.5 https://openai.com/gptbot.json <<'EOF'
import ipaddress, json, sys, urllib.request
ip = ipaddress.ip_address(sys.argv[1])
req = urllib.request.Request(sys.argv[2], headers={"User-Agent": "log-check"})
prefixes = json.load(urllib.request.urlopen(req))["prefixes"]
nets = [ipaddress.ip_network(p.get("ipv4Prefix") or p.get("ipv6Prefix")) for p in prefixes]
print(ip, "listed" if any(ip in n for n in nets) else "NOT listed")
EOF

For å liste IP-ene som utga seg for en bestemt crawler, kjører du awk -F'"' '$6 ~ /GPTBot/ {split($1, a, " "); print a[1]}' over loggen og sender resultatet gjennom sort | uniq -c | sort -rn. Sjekk hver av dem mot den tilhørende listen. Listene endres, så hent dem på nytt i stedet for å beholde en gammel kopi.

Hvordan verifiserer jeg Googlebot, Applebot og CCBot?

Google, Apple og Common Crawl dokumenterer en sjekk med omvendt og vanlig DNS-oppslag. Slå opp vertsnavnet til IP-en, sjekk domenet, slå deretter opp vertsnavnet og bekreft at det peker tilbake til den samme IP-en:

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

For Google må vertsnavnet ende på googlebot.com, google.com eller googleusercontent.com, avhengig av crawleren; Google publiserer også områdene sine, med Googlebot i common-crawlers.json. For Apple må det ligge i applebot.apple.com, med områdene i applebot.json. For Common Crawl må det ligge under crawl.commoncrawl.org, og Common Crawl advarer om at andre crawlere uriktig oppgir navnet CCBot.

Hvordan ser falske AI-crawlere ut?

Skrapere låner ofte user agent-en til en kjent crawler for å komme forbi filtre. Typiske tegn:

Det omvendte problemet finnes også: en crawler som bruker en vanlig nettleser-user agent, kan ikke identifiseres fra loggen i det hele tatt. I 2025 sa Cloudflare at de hadde observert at Perplexity crawlet med ikke-deklarerte, nettleserlignende user agents fra IP-er utenfor de publiserte områdene; Perplexity bestred denne framstillingen og tilskrev en del av trafikken en tredjepartstjeneste. Logger alene kan ikke avgjøre slike saker, og derfor er verifisering mot publiserte IP-områder viktig i begge retninger.

Hva kan ikke loggene fortelle deg?

Loggene viser det som nådde serveren din. De viser ikke hva CDN-en blokkerte før opprinnelsesserveren, om en side som ga 200, inneholdt teksten eller bare et skriptskall, eller om en crawler ville blitt sluppet inn hvis den kom i dag. De dekker også bare perioden du beholder, og rolige nettsteder får kanskje sjelden besøk av AI-crawlere.

I en AISeeWhy-konto kan du laste opp en tilgangslogg i combined-format (vanlig eller .gz, opptil 50 MB); den analyseres og slettes, og forespørslene fra hver AI-crawler telles med statuskodene sine og kontrolleres mot IP-områdene leverandørene publiserer.

Vanlige spørsmål

Hvorfor ser jeg ikke Google-Extended i loggene mine?

Google sier at Google-Extended ikke har noen egen user agent-streng. Crawlingen gjøres av Googles eksisterende crawlere, og tokenet styrer bare hvordan innholdet kan brukes. Det samme gjelder Applebot-Extended, som ifølge Apple ikke crawler.

Kan jeg stole på user agent-en i loggene mine?

Nei. Hvem som helst kan sende hvilken som helst user agent. Se på den som en påstand og bekreft den med leverandørens publiserte IP-områder eller, for Google, Apple og Common Crawl, med omvendt og vanlig DNS-oppslag.

Loggene mine viser ingen besøk fra AI-crawlere. Er jeg blokkert?

Ikke nødvendigvis. Crawleren har kanskje ikke besøkt deg ennå, CDN-en kan ha blokkert den før opprinnelsesserveren, eller loggene dine kan bare registrere CDN-ens IP-adresser. Sjekk CDN-ens sikkerhetshendelser og test siden med user agent-en til hver crawler.

Er trafikk fra ChatGPT-User en crawler?

OpenAI sier at ChatGPT-User brukes til visse handlinger fra brukere og ikke til å crawle nettet automatisk. Besøkene kommer vanligvis etter at en person har spurt ChatGPT om en side, så de er få.

Kilder

Flere artikler