Tekninen GEO
Löydä tekoälybotit palvelinlokeistasi (ja tarkista, ovatko ne aitoja)
Analytiikkasi ei näe tekoälyn indeksointibotteja. Palvelinlokisi näkevät. Tässä on kopioitavat komennot, viralliset IP-listat ja tietosuojan tarkistuslista.
Päivitetty ja faktat tarkistettu 19. lokakuuta 2026
Miksi analytiikkasi ei näytä tekoälybotteja
Google Analyticsin kaltaiset työkalut laskevat käynnit pienellä skriptillä, joka toimii selaimessa. Indeksointibotti, joka lataa vain HTML-koodisi, ei koskaan aja skriptiä, joten se ei koskaan näy.
Verkkopalvelimesi kirjaa jokaisen pyynnön, niin ihmisten kuin bottien. Tuo kirjanpito on käyttölokisi.
Lokit vastaavat kolmeen kysymykseen: mitkä botit käyvät, mitä sivuja ne hakevat ja saavatko ne sivun vai virheen.
Mistä lokit löytyvät
- nginx: vakiomuoto ”combined” sisältää jo kaiken tarvittavan. Debianissa ja Ubuntussa tiedosto on yleensä polussa /var/log/nginx/access.log.
- Apache: käytä myös combined-muotoa. ”Common”-muodossa ei ole user agentia, joten sillä et näe botteja. Lisää LogFormatiin %{User-agent}i.
- Onko sivustosi CDN:n tai välityspalvelimen takana? Silloin ensimmäinen kenttä voi näyttää jokaisessa pyynnössä välityspalvelimen IP:n. Määritä ensin palvelimesi real IP -asetus (tai kirjaa välitetty asiakas-IP), muuten jokainen alla oleva IP-tarkistus epäonnistuu.
- Eikö sinulla ole pääsyä raakalokeihin? Katso palveluntarjoajasi hallintapaneelia tai laita CDN sivustosi eteen. Siitä lisää alempana.
Lue yksi lokirivi
Tässä on yksi combined-muotoinen rivi keksityllä IP-osoitteella. Jokainen osa vastaa yhteen kysymykseen.
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-osoite: mistä pyyntö tuli. Tätä verrataan kohta virallisiin listoihin.
- Aika: milloin se tapahtui.
- Pyyntö: menetelmä ja sivu. Tässä GET /pricing.
- Tilakoodi: 200 tarkoittaa toimitettu, 301/302 uudelleenohjattu, 403 estetty, 404 ei löytynyt, 5xx palvelinvirhe.
- Tavut: kuinka paljon lähetettiin takaisin.
- User agent: kuka vierailija väittää olevansa. Tässä GPTBot. Kuka tahansa voi kirjoittaa sen, joten yksinään se ei todista mitään.
Etsittävät tekoälybotit
Lista perustuu kunkin yrityksen omaan dokumentaatioon, tarkistettu 19. lokakuuta 2026.
| User agent | Yritys | Mitä se tekee | Noudattaa robots.txt:tä | IP-lista |
|---|---|---|---|---|
OAI-SearchBot | OpenAI | Hakuindeksi | Kyllä | OAI-SearchBot JSON (avautuu uuteen välilehteen) |
GPTBot | OpenAI | Koulutus | Kyllä | GPTBot JSON (avautuu uuteen välilehteen) |
ChatGPT-User | OpenAI | Käyttäjän pyyntö | Osittain | ChatGPT-User JSON (avautuu uuteen välilehteen) |
Claude-SearchBot | Anthropic | Hakuindeksi | Kyllä | Claude-SearchBot JSON (avautuu uuteen välilehteen) |
ClaudeBot | Anthropic | Koulutus | Kyllä | ClaudeBot JSON (avautuu uuteen välilehteen) |
Claude-User | Anthropic | Käyttäjän pyyntö | Kyllä | Claude-User JSON (avautuu uuteen välilehteen) |
PerplexityBot | Perplexity | Hakuindeksi | Kyllä | PerplexityBot JSON (avautuu uuteen välilehteen) |
Perplexity-User | Perplexity | Käyttäjän pyyntö | Ei | Perplexity-User JSON (avautuu uuteen välilehteen) |
Googlebot | Hakukone | Kyllä | Googlebot JSON (avautuu uuteen välilehteen) | |
Google-Agent | Käyttäjän pyyntö | Ei | Google-Agent JSON (avautuu uuteen välilehteen)Google-Agent JSON (avautuu uuteen välilehteen)Google-Agent JSON (avautuu uuteen välilehteen) | |
bingbot | Microsoft | Hakukone | Kyllä | bingbot JSON (avautuu uuteen välilehteen) |
Applebot | Apple | Hakukone | Kyllä | Applebot JSON (avautuu uuteen välilehteen) |
meta-externalagent | Meta | Koulutus | Kyllä | Ei julkaistu |
meta-webindexer | Meta | Hakuindeksi | Kyllä | Ei julkaistu |
meta-externalfetcher | Meta | Käyttäjän pyyntö | Osittain | Ei julkaistu |
Amazonbot | Amazon | Koulutus | Kyllä | Ei julkaistu |
Amzn-SearchBot | Amazon | Hakuindeksi | Kyllä | Ei julkaistu |
Amzn-User | Amazon | Käyttäjän pyyntö | Osittain | Ei julkaistu |
DuckAssistBot | DuckDuckGo | Hakuindeksi | Kyllä | DuckAssistBot JSON (avautuu uuteen välilehteen) |
MistralAI-User | Mistral AI | Käyttäjän pyyntö | Kyllä | Ei julkaistu |
MistralAI-Index | Mistral AI | Hakuindeksi | Ei kerrottu | Ei julkaistu |
MistralAI-Training | Mistral AI | Koulutus | Kyllä | Ei julkaistu |
CCBot | Common Crawl | Koulutus | Kyllä | CCBot JSON (avautuu uuteen välilehteen) |
Google-Extended ja Applebot-Extended ovat robots.txt-tunnisteita, eivät indeksointibotteja. Ne eivät koskaan näy lokissa.
Anthropic ei julkaise täydellisiä user agent -merkkijonoja. Lokeissa ne näyttävät tältä: ”compatible; Claude-User/1.0; +claudebot@anthropic.com”.
Kopioitavat komennot
Nämä toimivat combined-muotoisella lokilla. Testasimme ne 19. lokakuuta 2026 macOS:n grepillä ja awkilla. Korvaa access.log omalla tiedostollasi.
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.*.gzTarkista jokainen botti-IP Pythonilla
Tämä skripti lataa viralliset IP-listat ja tulostaa jokaiselle bottiriville VERIFIED tai NOT IN LIST. Se käyttää vain Pythonin vakiokirjastoa.
# 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)Onko se oikeasti GPTBot? Tarkista IP
User agent on pelkkää tekstiä. Kuka tahansa voi lähettää ”GPTBot”. Perplexity itse suosittelee yhdistämään user agentin ja IP-tarkistuksen.
Tapa 1: viralliset IP-listat
OpenAI, Anthropic, Perplexity, Google, Microsoft (Bing), Apple, DuckDuckGo ja Common Crawl julkaisevat JSON-listoja bottiensa IP-alueista. Jos IP on listalla, pyyntö tuli kyseisen yrityksen verkosta. Linkit ovat yllä olevassa taulukossa.
Tapa 2: käänteinen DNS
Google: hae IP:n isäntänimi. Sen on päätyttävä googlebot.com, google.com tai googleusercontent.com, ja nimen hakemisen on palautettava sama IP. Bingillä sama toimii nimillä, jotka päättyvät 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 GooglebotMitä luvut kertovat
- Koulutus, haku ja käyttäjien pyynnöt ovat eri asioita. GPTBot ja ClaudeBot keräävät koulutusdataa. OAI-SearchBot, Claude-SearchBot ja PerplexityBot rakentavat hakuindeksejä. ChatGPT-User, Claude-User ja Perplexity-User hakevat sivun, koska joku kysyy siitä juuri nyt.
- Monet 403- tai 5xx-vastaukset tarkoittavat, että estät tai rikot tekoälyn pääsyn. Tarkista palomuurisi, CDN:si bottiasetukset ja robots.txt.
- robots.txt- ja llms.txt-pyynnöt kertovat, mitkä botit lukevat sääntösi. OpenAI kertoo, että OAI-SearchBot ja GPTBot voivat lisätä user agentiinsa robots.txt-merkinnän, kun ne hakevat tiedoston.
- Käyttäjien pyynnöt voivat ohittaa robots.txt:n. OpenAI:n mukaan robots.txt-säännöt eivät välttämättä koske ChatGPT-Useria, ja Perplexityn mukaan Perplexity-User yleensä jättää ne huomiotta.
- Käynti ei ole lainaus. Se tarkoittaa, että botti luki sivusi, ei sitä, että jokin tekoälyn vastaus lainaa sitä.
Ei pääsyä palvelimelle? Käytä CDN:ää
Cloudflaren AI Crawl Control (aiemmin AI Audit) näyttää, mitkä tekoälypalvelut indeksoivat sivustoasi ja mitkä botit jättävät sääntösi huomiotta. Cloudflaren mukaan se on mukana kaikissa paketeissa.
Cloudflare Logpush voi viedä pyyntölokeja kentillä kuten ClientIP, ClientRequestUserAgent, ClientRequestPath ja EdgeResponseStatus. Analysaattorimme lukee myös nämä JSON-rivit.
Lokit ja tietosuoja (GDPR)
IP-osoitteet voivat olla henkilötietoja. EU:n tuomioistuin totesi sen dynaamisista IP-osoitteista Breyer-asiassa (C-582/14, 19. lokakuuta 2016), ja GDPR:n johdanto-osan 30. kappale mainitsee IP-osoitteet verkkotunnisteina.
Bottien IP-osoitteet kuuluvat yrityksille, mutta samassa lokissa ovat myös kävijöidesi IP-osoitteet. Käytännöllinen tapa:
- Suodata ensin bottirivit erilleen ja käsittele niitä.
- Säilytä raakalokeja vain niin kauan kuin tarvitset, esimerkiksi tietoturvan vuoksi. GDPR ei määrää tiettyä määrää päiviä; henkilötietoja ei saa säilyttää pidempään kuin on tarpeen.
- Tallenna IP-osoitteiden sijaan yhteenvetoja (botti, päivä, sivu, tila, tarkistettu vai ei).
- Lyhennä tai tiivistä IP, kun olet tarkistanut sen.
- Älä lataa raakalokeja ulkoiseen työkaluun ilman käsittelijäsopimusta. Analysaattorimme toimii selaimessasi, joten mitään ei ladata.
Tämä on yleistä tietoa, ei oikeudellista neuvontaa.
Usein kysytyt kysymykset
Miten näen, vierailiko ChatGPT sivustollani?
Hae käyttölokistasi OAI-SearchBot (ChatGPT-haku), ChatGPT-User (käyttäjän pyyntö) ja GPTBot (koulutus). Vertaa sitten IP-osoitteita OpenAI:n listoihin.
Miksi Google Analytics ei näytä GPTBotia?
Google Analytics laskee käynnit selaimessa toimivalla skriptillä. Botit, jotka lataavat vain HTML-koodisi, eivät aja sitä.
Miten tiedän, onko GPTBot-pyyntö aito?
Vertaa sen IP:tä listaan openai.com/gptbot.json. Jos se ei ole listalla, käsittele pyyntöä tarkistamattomana.
Mitkä botit jättävät robots.txt:n huomiotta?
Niiden oman dokumentaation mukaan: botit, jotka hakevat sivun, koska käyttäjä pyysi. OpenAI sanoo, ettei robots.txt välttämättä koske ChatGPT-Useria, Perplexity sanoo, että Perplexity-User yleensä jättää sen huomiotta, ja Google sanoo samaa käyttäjien käynnistämistä hakijoistaan.
Mitä 403-virheet tarkoittavat tekoälyboteille?
Palvelimesi, palomuurisi tai CDN:si torjui pyynnön. Jos haluat löytyä tekoälyhauissa, etsi bottia estävä sääntö ja muuta sitä.
Saanko kirjata IP-osoitteita?
Yleensä saat, selkeään tarkoitukseen kuten tietoturvaan, mutta IP-osoitteet voivat olla henkilötietoja. Säilytä lokeja lyhyesti, tallenna yhteenvetoja IP-osoitteiden sijaan ja mainitse lokitus tietosuojaselosteessasi. Tämä ei ole oikeudellista neuvontaa.
Opi lisää
Varmista, että botit löytävät jotain lukemisen arvoista
Indeksoitu ei ole lainattu. Katso, miten tekoälytyökalut lukevat sivusi, 22 kohdan perusteella.
Analysoi sivuni