Miten tarkistat palvelinlokeista tekoälycrawlerit

Julkaistu

Lyhyt vastaus

Etsi käyttölokisi user agent -kentästä tokeneita kuten GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot ja PerplexityBot, ja katso sitten, mitkä tilakoodit ne saivat. Pelkkä user agent ei todista mitään, joten tarkista jokainen lähde-IP toimittajan julkaisemasta IP-listasta tai Googlen ja Applen osalta käänteisellä ja myötäsuuntaisella DNS:llä.

Robots.txt kertoo, mitä pyydät crawlereita tekemään. Käyttölokisi näyttää, mitä todella tapahtui: mitkä tekoälycrawlerit kävivät, mitä sivuja ne pyysivät ja mitä palvelimesi vastasi. Se on suorin todiste, joka sinulla on, ja se vaatii vain lokitiedostot ja päätteen. Alla olevat esimerkit käyttävät combined-lokimuotoa, jota nginx ja Apache käyttävät oletuksena.

Tällä sivulla
  1. Miltä tekoälycrawlerin käynti näyttää käyttölokissa?
  2. Miten lasken tekoälycrawlerien käynnit?
  3. Mitä kukin crawler todella sai?
  4. Miten varmennan, että käynti todella tuli OpenAI:lta, Anthropicilta tai Perplexityltä?
  5. Miten varmennan Googlebotin, Applebotin ja CCBotin?
  6. Miltä väärät tekoälycrawlerit näyttävät?
  7. Mitä lokit eivät kerro?

Miltä tekoälycrawlerin käynti näyttää käyttölokissa?

Combined-muodossa jokainen rivi sisältää asiakkaan IP-osoitteen, ajan, pyyntörivin, tilakoodin, vastauksen koon, viittaajan ja user agentin. nginx määrittelee sen näin: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent", ja Apachen combined-muodossa on samat kentät. OpenAI:n koulutuscrawlerin käynti näyttää tältä:

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"

Etsittävät tokenit ovat toimittajien dokumentoimia: GPTBot, OAI-SearchBot ja ChatGPT-User (OpenAI); ClaudeBot, Claude-SearchBot ja Claude-User (Anthropic); PerplexityBot ja Perplexity-User (Perplexity); Googlebot, Applebot, meta-externalagent, meta-webindexer ja CCBot. Google-Extendedia tai Applebot-Extendedia et koskaan näe. Google sanoo, ettei Google-Extendedilla ole erillistä user agent -merkkijonoa, ja Apple sanoo, ettei Applebot-Extended käy sivuilla; molemmat ovat vain robots.txt-tokeneita.

Miten lasken tekoälycrawlerien käynnit?

Kun jokainen rivi jaetaan kaksoislainausmerkin kohdalta, user agent on kentässä 6. Pelkän tämän kentän vertaaminen välttää virheosumat URL-osoitteista, jotka sattuvat sisältämään botin nimen. Tämä laskee käynnit crawleria kohti nykyisestä lokista ja kierrätetyistä, pakatuista lokeista:

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

Muokkaa polku Apachea varten, usein /var/log/apache2/access.log* tai /var/log/httpd/access_log*. zcat -f lukee sekä pakkaamattomat että gzip-tiedostot. Jos odottamaasi crawleria ei näy, se ei yksin todista estoa: se ei ehkä ole käynyt lokiesi kattamalla jaksolla.

Mitä kukin crawler todella sai?

Käynnit ovat vähemmän tärkeitä kuin vastaukset. Crawler, joka saa 403:n jokaiseen pyyntöön, on käynyt mutta ei ole lukenut mitään. Nämä komennot näyttävät tilakoodit, pyydetyimmät polut ja sen, noudettiinko robots.txt:n:

# 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

Enimmäkseen 200-vastauksia on se, mitä haluat. Paljon 403- tai 429-vastauksia viittaa palomuurisääntöön tai nopeusrajoitukseen. 5xx-vastaukset robots.txt:lle ovat vakavia: RFC 9309:n mukaan crawlerin, joka saa palvelinvirheen robots.txt:stä, on oletettava koko sivusto kielletyksi.

Jos sivustosi on CDN:n takana, kaksi asiaa muuttuu. CDN:n estämät pyynnöt eivät koskaan pääse alkuperäispalvelimellesi, joten ne eivät näy sen lokeissa lainkaan; tarkista sen sijaan CDN:n omat tietoturvatapahtumat. Ja ellet palauta kävijän IP-osoitetta, alkuperäispalvelin kirjaa CDN:n osoitteen. Cloudflare esimerkiksi lähettää alkuperäisen IP-osoitteen otsakkeessa CF-Connecting-IP ja kirjaa oletuksena Cloudflaren IP-osoitteen.

Miten varmennan, että käynti todella tuli OpenAI:lta, Anthropicilta tai Perplexityltä?

Nämä toimittajat julkaisevat agenttiensa käyttämät IP-alueet: OpenAI osoitteissa openai.com/gptbot.json, openai.com/searchbot.json ja openai.com/chatgpt-user.json; Anthropic osoitteessa claude.com/crawling/bots.json; Perplexity osoitteissa perplexity.ai/perplexitybot.json ja perplexity.ai/perplexity-user.json. Anthropic sanoo, että lähde-IP, joka on sen listalla, osoittaa crawlerin tulevan Anthropicilta. Mikään näistä kolmesta ei dokumentoi käänteisen DNS:n varmennusta, joten käytä listoja.

Tiedostoilla on sama rakenne, prefixes-lista, jossa on ipv4Prefix- tai ipv6Prefix-merkintöjä, joten yksi pieni skripti tarkistaa IP-osoitteen mitä tahansa niistä vasten:

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

Saat listan IP-osoitteista, jotka väittivät olevansa tietty crawler, ajamalla lokin läpi komennon awk -F'"' '$6 ~ /GPTBot/ {split($1, a, " "); print a[1]}' ja ohjaamalla tuloksen komennolle sort | uniq -c | sort -rn. Tarkista kukin vastaavasta listasta. Listat muuttuvat, joten nouda ne tuoreina äläkä säilytä vanhaa kopiota.

Miten varmennan Googlebotin, Applebotin ja CCBotin?

Google, Apple ja Common Crawl dokumentoivat käänteisen ja myötäsuuntaisen DNS-tarkistuksen. Hae IP-osoitteen isäntänimi, tarkista sen verkkotunnus, hae sitten kyseinen isäntänimi ja varmista, että se osoittaa takaisin samaan IP-osoitteeseen:

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

Googlen kohdalla isäntänimen on päätyttävä muotoon googlebot.com, google.com tai googleusercontent.com crawlerista riippuen; Google julkaisee myös alueensa, ja Googlebot on tiedostossa common-crawlers.json. Applen kohdalla sen on oltava verkkotunnuksessa applebot.apple.com, ja alueet ovat tiedostossa applebot.json. Common Crawlin kohdalla sen on oltava osoitteen crawl.commoncrawl.org alla, ja Common Crawl varoittaa, että muut crawlerit väittävät virheellisesti olevansa CCBot.

Miltä väärät tekoälycrawlerit näyttävät?

Raapijat lainaavat usein tunnetun crawlerin user agentia päästäkseen suodattimien ohi. Tyypillisiä merkkejä:

Käänteinen ongelma on myös olemassa: crawleria, joka käyttää tavallista selaimen user agentia, ei voi tunnistaa lokirivistä lainkaan. Cloudflare kertoi vuonna 2025 havainneensa Perplexityn käyvän sivuilla ilmoittamattomilla, selaimen kaltaisilla user agenteilla IP-osoitteista, jotka ovat sen julkaisemien alueiden ulkopuolella; Perplexity kiisti tämän kuvauksen ja katsoi osan liikenteestä kuuluvan kolmannen osapuolen palvelulle. Pelkät lokit eivät ratkaise tällaisia tapauksia, minkä vuoksi varmennus julkaistujen IP-alueiden avulla on tärkeää kumpaankin suuntaan.

Mitä lokit eivät kerro?

Lokit näyttävät, mikä pääsi palvelimellesi. Ne eivät näytä, mitä CDN esti ennen alkuperäispalvelinta, sisälsikö 200 palauttanut sivu tekstin vai vain skriptikuoren, tai olisiko crawler sallittu, jos se tulisi tänään. Ne kattavat myös vain säilyttämäsi jakson, ja hiljaisilla sivustoilla tekoälycrawlerit voivat käydä harvoin.

AISeeWhy-tilillä voit ladata käyttölokin combined-muodossa (pakkaamaton tai .gz, enintään 50 Mt); se analysoidaan ja hävitetään, ja kunkin tekoälycrawlerin pyynnöt lasketaan tilakoodeineen ja tarkistetaan toimittajien julkaisemia IP-alueita vasten.

Usein kysytyt kysymykset

Miksi en näe Google-Extendedia lokeissani?

Google sanoo, ettei Google-Extendedilla ole erillistä user agent -merkkijonoa. Läpikäynnin tekevät Googlen nykyiset crawlerit, ja token ohjaa vain sitä, miten sisältöä saa käyttää. Sama pätee Applebot-Extendediin, jonka Apple sanoo olevan käymättä sivuilla.

Voinko luottaa lokieni user agentiin?

Et. Kuka tahansa voi lähettää minkä tahansa user agentin. Pidä sitä väitteenä ja vahvista se toimittajan julkaisemilla IP-alueilla tai Googlen, Applen ja Common Crawlin osalta käänteisellä ja myötäsuuntaisella DNS-haulla.

Lokeissani ei näy tekoälycrawlerien käyntejä. Olenko estetty?

Ei välttämättä. Crawler ei ehkä ole vielä käynyt, CDN on voinut estää sen ennen alkuperäispalvelinta, tai lokisi voivat kirjata vain CDN:n IP-osoitteita. Tarkista CDN:n tietoturvatapahtumat ja testaa sivu kunkin crawlerin user agentilla.

Onko ChatGPT-User-liikenne crawler-liikennettä?

OpenAI sanoo, että ChatGPT-Useria käytetään tietyissä käyttäjän toiminnoissa eikä sitä käytetä verkon automaattiseen läpikäyntiin. Sen käynnit seuraavat yleensä sitä, että ihminen kysyy ChatGPT:ltä sivusta, joten niitä tulee vähän.

Lähteet

Lisää artikkeleita