---
title: "De fleste &#8220;GPTBot&#8221;-besøg er falske: Sådan sporer du ægte AI-crawlere"
description: "80 % af \"GPTBot\"-forespørgslerne i mine logs var falske. Sådan tjekker du AI-crawlere mod officielle IP-lister, og et gratis script til dine logs."
featured_image: "https://phillipstemann.com/wp-content/uploads/2026/10/fake-ai-crawlers-cover-da.png"
url: "https://phillipstemann.com/da/spor-ai-crawlere-serverlogs/"
language: "da"
date_published: "2026-10-23T08:00:00+02:00"
date_modified: "2026-10-15T09:23:52+02:00"
---

# De fleste &#8220;GPTBot&#8221;-besøg er falske: Sådan sporer du ægte AI-crawlere

Første gang jeg søgte i mine serverlogs efter AI-crawlere, så billedet alarmerende ud: hundredvis af forespørgsler fra GPTBot, ClaudeBot og PerplexityBot, og de fleste endte i fejl. Det lignede, at AI-firmaerne hamrede løs på mit site og intet fik.

Så tjekkede jeg IP-adresserne. De fleste af de “AI-crawlere” var slet ikke AI-crawlere. Det var sårbarhedsscannere i et AI-firmas navn, der ledte efter adgangskoder og API-nøgler.

Her er, hvad jeg fandt i en uges logs, hvorfor det betyder noget for både sikkerhed og GEO, og det korte script, jeg brugte, så du kan køre samme tjek på dit eget site.

**Den korte version:**

- **80 %** af de forespørgsler, der kaldte sig GPTBot, var falske. For Perplexity-User var det **100 %**.
- De falske crawlede ikke indhold. De ledte efter filer som .env, cloud-adgangsnøgler og Kubernetes-tokens.
- De rigtige crawlere opførte sig pænt: Næsten alle deres forespørgsler lykkedes.
- Den rigtige ChatGPT-User hentede mine sider 56 gange på en uge, men kun 2 besøg kom fra ChatGPT. Analytics viser dig kun de 2.

## Tre slags AI-bots

Før man tæller noget, hjælper det at vide, at hvert AI-firma kører flere bots til forskellige opgaver. Det har forskellige konsekvenser at blokere eller tillade dem (se [OpenAIs dokumentation](https://developers.openai.com/api/docs/bots) for detaljerne om OpenAIs).

| Opgave | OpenAI | Anthropic | Perplexity | Hvad det betyder for dig |
| --- | --- | --- | --- | --- |
| Træning | GPTBot | ClaudeBot | – | Dit indhold kan ende i fremtidige modeller |
| Søgeindeks | OAI-SearchBot | Claude-SearchBot | PerplexityBot | Om du overhovedet kan dukke op i AI-søgesvar |
| Live-hentning for en bruger | ChatGPT-User | Claude-User | Perplexity-User | Nogen har stillet et spørgsmål, og AI’en læser din side lige nu |

## Hvad jeg målte

Jeg tog nginx-adgangslogs for phillipstemann.com fra 8. til 15. oktober 2026 (69.015 forespørgsler) og sammenlignede hver forespørgsel, der påstod at være en AI-crawler, med den IP-liste, firmaet selv offentliggør. En forespørgsel tæller kun som ægte, hvis både navn og IP passer.

| User agent | Påstået | Ægte | Falsk | Andel falske |
| --- | --- | --- | --- | --- |
| GPTBot | 137 | 27 | 110 | 80 % |
| OAI-SearchBot | 551 | 453 | 98 | 18 % |
| ChatGPT-User | 157 | 56 | 101 | 64 % |
| ClaudeBot | 285 | 176 | 109 | 38 % |
| PerplexityBot | 160 | 51 | 109 | 68 % |
| Perplexity-User | 105 | 0 | 105 | 100 % |

********

Det er ikke kun AI-navne. Med samme tjek mod Googles officielle liste var 56 % af de forespørgsler, der kaldte sig Googlebot, også falske.

## Hvad de falske lavede

De falske forespørgsler læste ikke blogindlæg. De gik efter filer, der aldrig burde være offentlige: `/.env`, `/.env.local`, `/.npmrc`, `/.bashrc`, `/serverless.yml`, `/firebase-credentials.json`, `/proc/self/environ` og stier til Kubernetes-tokens. På mit site giver de alle 404, hvilket er præcis det, du vil have.

Hvorfor udgive sig for at være GPTBot? Fordi mange siteejere nu lukker AI-crawlere igennem deres firewall eller botbeskyttelse for at kunne dukke op i AI-svar. Hvis den regel kun tjekker user agent, slipper en angriber igennem ved at skrive et navn.

**Lektien for sikkerhed:** Tillad aldrig en bot ud fra dens user agent alene. Bruger du Cloudflare, så brug deres verificerede bot-kategorier i stedet for user-agent-regler. Skriver du dine egne regler, så tjek IP’en.

## Hvad de ægte crawlere lavede

De verificerede crawlere opførte sig pænt. Ægte ChatGPT-User, PerplexityBot og ClaudeBot fik næsten alle deres forespørgsler igennem, og de hentede de sider, man håber på: forsiden, min liste over HARO-alternativer, min SEO-ydelse, min Search Console-guide og min podcastliste. Uden de falske forsvandt problemet med “AI-crawlere, der rammer fejl” helt.

## GEO-tallet, analytics ikke kan vise dig

Det her er den del, jeg synes er mest brugbar. ChatGPT-User henter kun en side, når et rigtigt menneske spørger ChatGPT om noget, og ChatGPT beslutter at læse siden for at svare. I samme uge:

- Verificeret ChatGPT-User hentede **14 af mine sider, 56 gange**.
- Kun **2 besøg** kom fra ChatGPT (ét med chatgpt.com som henvisning, ét tagget utm\_source=chatgpt.com).

Det er cirka 28 svar bygget på mine sider for hvert besøg, jeg fik. Ser du kun på analytics, ser du de 2 besøg og konkluderer, at ChatGPT ikke betyder noget. Loggene viser, at ChatGPT læser dit indhold langt oftere, end den sender nogen videre. Til GEO er live AI-hentninger per side et bedre mål for synlighed end klik.

## Sådan kører du samme tjek på dit site

### 1. Find dine adgangslogs

Hos de fleste hosts ligger de i kontrolpanelet eller din hjemmemappe. På CloudPanel ligger de i `~/logs/nginx/`, på cPanel under Raw Access. Står du bag Cloudflare, så tjek to ting: at dine logs gemmer den besøgendes rigtige IP (Cloudflare sender den i headeren `CF-Connecting-IP`), og at de sider, du interesserer dig for, ikke caches hos Cloudflare, for cachede svar når aldrig din server.

### 2. Hent de officielle IP-lister

Hvert firma offentliggør de IP-intervaller, dets bots bruger, som en lille JSON-fil:

- OpenAI: `CODE_OPEN`openai.com/gptbot.json`CODE_CLOSE`, `CODE_OPEN`openai.com/searchbot.json`CODE_CLOSE`, `CODE_OPEN`openai.com/chatgpt-user.json`CODE_CLOSE`
- Anthropic: `CODE_OPEN`claude.com/crawling/bots.json`CODE_CLOSE`
- Perplexity: `CODE_OPEN`perplexity.com/perplexitybot.json`CODE_CLOSE`, `CODE_OPEN`perplexity.com/perplexity-user.json`CODE_CLOSE`
- Google: `CODE_OPEN`developers.google.com/static/search/apis/ipranges/googlebot.json`CODE_CLOSE`

### 3. Kør scriptet

Det her er præcis det script, der lavede tabellen ovenfor. Det kræver kun Python 3. Det forventer klientens IP som det sidste felt i anførselstegn på hver loglinje, som er sådan CloudPanel logger det bag Cloudflare; har du et andet format, så ret den ene linje. Kør det med `python3 verify_ai_bots.py access.log`.

```
import ipaddress, json, re, sys, urllib.request
from collections import Counter

# Official IP lists published by each company
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",
    "PerplexityBot":   "https://www.perplexity.com/perplexitybot.json",
    "Perplexity-User": "https://www.perplexity.com/perplexity-user.json",
}

def load(url):
    data = json.load(urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})))
    return [ipaddress.ip_network(p.get("ipv4Prefix") or p.get("ipv6Prefix")) for p in data["prefixes"]]

ranges = {bot: load(url) for bot, url in LISTS.items()}
real, fake = Counter(), Counter()

for line in open(sys.argv[1], errors="replace"):
    for bot in ranges:
        if bot in line:
            ip = re.findall(r'"([0-9a-fA-F.:]+)"\s*$', line)  # client IP as the last quoted field
            ip = ip[0] if ip else line.split()[0]
            ok = any(ipaddress.ip_address(ip) in net for net in ranges[bot])
            (real if ok else fake)[bot] += 1
            break

for bot in ranges:
    total = real[bot] + fake[bot]
    if total:
        print(f"{bot:16} {total:5} claimed  {real[bot]:5} real  {fake[bot]:5} fake ({fake[bot] / total:.0%})")
```

### 4. Kig på tre ting

- **Andelen af falske.** Er den høj, så sørg for, at ingen firewallregel stoler på AI-user-agents.
- **Hvilke sider de ægte crawlere henter.** Det er de sider, AI-værktøjerne kender dig for. Er dine vigtigste sider ikke på listen, er det din GEO-to-do-liste.
- **Live-hentninger (ChatGPT-User, Perplexity-User, Claude-User) per side over tid.** Det er det tætteste, du kommer på et mål for AI-synlighed ud fra dine egne data.

## Forbehold

- Ét site, én uge. Dine tal vil være anderledes, og derfor er det værd at køre selv.
- IP-listerne ændrer sig. Hent dem friske hver gang; det gør scriptet.
- Anthropics liste er ny, så en ældre guide siger måske stadig, at Claudes IP’er ikke kan verificeres. Det kan de nu.

Vil du have det her som en løbende rapport i stedet for et engangsscript, er det en del af min [tracking- og analytics-ydelse](/da/ydelser/tracking/). Og hvis du undrer dig over, om nogen af crawlerne læste din llms.txt: [det tjekkede jeg også](/da/virker-llms-txt/).
