Teknisk GEO
Finn AI-boter i serverloggene dine (og sjekk at de er ekte)
Analyseverktøyet ditt ser ikke AI-crawlere. Serverloggene dine gjør det. Her er kommandoer du kan kopiere, de offisielle IP-listene og en sjekkliste for personvern.
Oppdatert og faktasjekket 19. oktober 2026
Hvorfor analyseverktøyet ditt ikke viser AI-boter
Verktøy som Google Analytics teller besøk med et lite skript som kjører i nettleseren. En crawler som bare laster ned HTML-en din, kjører aldri skriptet og dukker derfor aldri opp.
Webserveren din noterer hver forespørsel, fra både mennesker og boter. Den oversikten er tilgangsloggen din.
Logger svarer på tre spørsmål: hvilke boter kommer innom, hvilke sider henter de, og får de siden eller en feil.
Hvor du finner loggene dine
- nginx: standardformatet «combined» har allerede alt du trenger. På Debian og Ubuntu ligger filen som regel i /var/log/nginx/access.log.
- Apache: bruk også combined-formatet. «Common»-formatet har ingen user agent, så du ser ikke boter med det. Legg til %{User-agent}i i LogFormat.
- Bak et CDN eller en proxy? Da viser det første feltet kanskje proxyens IP for hver forespørsel. Sett først opp serverens real IP-innstilling (eller logg den videresendte klient-IP-en), ellers feiler hver IP-sjekk nedenfor.
- Ingen tilgang til rå logger? Se i kontrollpanelet hos leverandøren din, eller sett et CDN foran nettstedet. Mer om det nedenfor.
Les én logglinje
Her er én linje i combined-formatet, med en oppdiktet IP-adresse. Hver del svarer på et spørsmål.
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: hvor forespørselen kom fra. Den sjekker du mot de offisielle listene.
- Tid: når det skjedde.
- Forespørsel: metoden og siden. Her GET /pricing.
- Statuskode: 200 betyr levert, 301/302 videresendt, 403 blokkert, 404 ikke funnet, 5xx en serverfeil.
- Byte: hvor mye som ble sendt tilbake.
- User agent: hvem den besøkende påstår å være. Her GPTBot. Alle kan skrive det, så alene beviser det ingenting.
AI-botene du bør se etter
Listen kommer fra hvert selskaps egen dokumentasjon, sjekket 19. oktober 2026.
| User agent | Selskap | Hva den gjør | Følger robots.txt | IP-liste |
|---|---|---|---|---|
OAI-SearchBot | OpenAI | Søkeindeks | Ja | OAI-SearchBot JSON (åpnes i en ny fane) |
GPTBot | OpenAI | Trening | Ja | GPTBot JSON (åpnes i en ny fane) |
ChatGPT-User | OpenAI | Brukerforespørsel | Delvis | ChatGPT-User JSON (åpnes i en ny fane) |
Claude-SearchBot | Anthropic | Søkeindeks | Ja | Claude-SearchBot JSON (åpnes i en ny fane) |
ClaudeBot | Anthropic | Trening | Ja | ClaudeBot JSON (åpnes i en ny fane) |
Claude-User | Anthropic | Brukerforespørsel | Ja | Claude-User JSON (åpnes i en ny fane) |
PerplexityBot | Perplexity | Søkeindeks | Ja | PerplexityBot JSON (åpnes i en ny fane) |
Perplexity-User | Perplexity | Brukerforespørsel | Nei | Perplexity-User JSON (åpnes i en ny fane) |
Googlebot | Søkemotor | Ja | Googlebot JSON (åpnes i en ny fane) | |
Google-Agent | Brukerforespørsel | Nei | Google-Agent JSON (åpnes i en ny fane)Google-Agent JSON (åpnes i en ny fane)Google-Agent JSON (åpnes i en ny fane) | |
bingbot | Microsoft | Søkemotor | Ja | bingbot JSON (åpnes i en ny fane) |
Applebot | Apple | Søkemotor | Ja | Applebot JSON (åpnes i en ny fane) |
meta-externalagent | Meta | Trening | Ja | Ikke publisert |
meta-webindexer | Meta | Søkeindeks | Ja | Ikke publisert |
meta-externalfetcher | Meta | Brukerforespørsel | Delvis | Ikke publisert |
Amazonbot | Amazon | Trening | Ja | Ikke publisert |
Amzn-SearchBot | Amazon | Søkeindeks | Ja | Ikke publisert |
Amzn-User | Amazon | Brukerforespørsel | Delvis | Ikke publisert |
DuckAssistBot | DuckDuckGo | Søkeindeks | Ja | DuckAssistBot JSON (åpnes i en ny fane) |
MistralAI-User | Mistral AI | Brukerforespørsel | Ja | Ikke publisert |
MistralAI-Index | Mistral AI | Søkeindeks | Ikke oppgitt | Ikke publisert |
MistralAI-Training | Mistral AI | Trening | Ja | Ikke publisert |
CCBot | Common Crawl | Trening | Ja | CCBot JSON (åpnes i en ny fane) |
Google-Extended og Applebot-Extended er robots.txt-tokener, ikke crawlere. De dukker aldri opp i en logg.
Anthropic publiserer ikke fullstendige user agent-strenger. I logger ser de slik ut: «compatible; Claude-User/1.0; +claudebot@anthropic.com».
Kommandoer du kan kopiere
De fungerer på en logg i combined-format. Vi testet dem 19. oktober 2026 med grep og awk på macOS. Bytt ut access.log med din egen fil.
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.*.gzSjekk hver bot-IP med Python
Skriptet laster ned de offisielle IP-listene og skriver VERIFIED eller NOT IN LIST for hver botlinje. Det bruker bare Pythons standardbibliotek.
# 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)Er det virkelig GPTBot? Sjekk IP-en
En user agent er bare tekst. Alle kan sende «GPTBot». Perplexity anbefaler selv å kombinere user agent med IP-sjekk.
Metode 1: de offisielle IP-listene
OpenAI, Anthropic, Perplexity, Google, Microsoft (Bing), Apple, DuckDuckGo og Common Crawl publiserer JSON-lister over IP-områdene botene deres bruker. Står IP-en på listen, kom forespørselen fra selskapets nettverk. Lenkene står i tabellen ovenfor.
Metode 2: omvendt DNS
Google: slå opp vertsnavnet til IP-en. Det må slutte på googlebot.com, google.com eller googleusercontent.com, og et oppslag på navnet må gi samme IP tilbake. Bing fungerer på samme måte, med navn som slutter på 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 GooglebotHva tallene forteller deg
- Trening, søk og brukerforespørsler er forskjellige ting. GPTBot og ClaudeBot samler treningsdata. OAI-SearchBot, Claude-SearchBot og PerplexityBot bygger søkeindekser. ChatGPT-User, Claude-User og Perplexity-User henter en side fordi en person spør om den akkurat nå.
- Mange 403- eller 5xx-svar betyr at du blokkerer eller ødelegger AI-tilgangen. Sjekk brannmuren, botinnstillingene i CDN-et og robots.txt.
- Forespørsler etter robots.txt og llms.txt viser hvilke boter som leser reglene dine. OpenAI sier at OAI-SearchBot og GPTBot kan legge til en robots.txt-markør i user agent når de henter filen.
- Brukerforespørsler kan hoppe over robots.txt. Ifølge OpenAI gjelder robots.txt-regler kanskje ikke for ChatGPT-User, og ifølge Perplexity ignorerer Perplexity-User dem som regel.
- Et besøk er ikke et sitat. Det betyr at en bot leste siden din, ikke at et AI-svar vil sitere den.
Ingen servertilgang? Bruk CDN-et ditt
Cloudflares AI Crawl Control (tidligere AI Audit) viser hvilke AI-tjenester som crawler nettstedet ditt, og hvilke crawlere som ignorerer reglene dine. Ifølge Cloudflare er det tilgjengelig i alle abonnementer.
Cloudflare Logpush kan eksportere forespørselslogger med felter som ClientIP, ClientRequestUserAgent, ClientRequestPath og EdgeResponseStatus. Analysatoren vår leser også de JSON-linjene.
Logger og personvern (GDPR)
IP-adresser kan være personopplysninger. EU-domstolen sa det om dynamiske IP-adresser i Breyer-saken (C-582/14, 19. oktober 2016), og fortalepunkt 30 i GDPR nevner IP-adresser som nettidentifikatorer.
Bot-IP-er tilhører selskaper, men den samme loggen inneholder også IP-ene til de besøkende. En praktisk tilnærming:
- Filtrer ut botlinjene først, og jobb med dem.
- Behold rå logger bare så lenge du trenger dem, for eksempel for sikkerhet. GDPR setter ikke noe fast antall dager; personopplysninger skal ikke lagres lenger enn nødvendig.
- Lagre totaler (bot, dag, side, status, verifisert eller ikke) i stedet for IP-er.
- Forkort eller hash en IP når du har sjekket den.
- Ikke last opp rå logger til et eksternt verktøy uten en databehandleravtale. Analysatoren vår kjører i nettleseren din, så ingenting blir lastet opp.
Dette er generell informasjon, ikke juridisk rådgivning.
Ofte stilte spørsmål
Hvordan ser jeg om ChatGPT besøker nettstedet mitt?
Søk i tilgangsloggen etter OAI-SearchBot (ChatGPT-søk), ChatGPT-User (en brukers forespørsel) og GPTBot (trening). Sjekk deretter IP-ene mot OpenAIs lister.
Hvorfor viser ikke Google Analytics GPTBot?
Google Analytics teller besøk via et skript i nettleseren. Crawlere som bare laster ned HTML-en din, kjører det ikke.
Hvordan vet jeg om en GPTBot-forespørsel er ekte?
Sjekk IP-en mot openai.com/gptbot.json. Står den ikke på listen, behandle forespørselen som ikke verifisert.
Hvilke boter ignorerer robots.txt?
Ifølge deres egen dokumentasjon: boter som henter en side fordi en bruker ba om det. OpenAI sier at robots.txt kanskje ikke gjelder for ChatGPT-User, Perplexity sier at Perplexity-User som regel ignorerer den, og Google sier det samme om sine brukerutløste hentere.
Hva betyr 403-feil for AI-boter?
Serveren, brannmuren eller CDN-et ditt avviste forespørselen. Vil du bli funnet i AI-søk, finn regelen som blokkerer boten, og endre den.
Har jeg lov til å logge IP-adresser?
Som regel ja, til et tydelig formål som sikkerhet, men IP-er kan være personopplysninger. Behold logger kort, lagre totaler i stedet for IP-er, og nevn loggingen i personvernerklæringen. Dette er ikke juridisk rådgivning.
Lær mer
Sørg for at botene finner noe verdt å lese
Crawlet er ikke sitert. Se hvordan AI-verktøy leser siden din, på 22 punkter.
Analyser siden min