AI search news ·

Is the GPTBot in your server logs really OpenAI? A vulnerability scanner wore 6 AI-crawler user-agents for 22 requests in 4.5 seconds — and was every 'Google-Extended' fetch we ever logged

At 18:19:56 UTC on 2026-08-21, a scanner in Singapore made 22 requests to this site in 4.5 seconds — for `/.env`, `/.git/HEAD`, `/.aws/credentials`, `/etc/passwd` and the like — and on each request wore one of six AI-crawler user-agent strings: GPTBot, ChatGPT-User, OAI-SearchBot, Google-Extended, Amazonbot and Amzn-SearchBot. Our server-side crawler ledger classifies requests by user agent, so it booked all 22 as genuine vendor fetches. Google's own crawler documentation says that one of those six strings does not exist: "Google-Extended doesn't have a separate HTTP request user agent string." Here is the burst request by request, what each vendor says a real request looks like, what the scanner did to a week of crawler counts, and the correction we shipped.

The burst, request by request

UTC (2026-08-21)Path requestedUser-agent wornBooked by the ledger as
18:19:56.518/@fs/proc/self/environGPTBot/1.4openai / crawl
18:19:57.007/.git/HEADGoogle-Extended/1.0google / crawl
18:19:57.034/.git-credentialsChatGPT-User/1.0openai / user
18:19:57.034/.env.localGPTBot/1.4openai / crawl
18:19:57.037/app/.envOAI-SearchBot/1.3openai / crawl
18:19:57.045/@fs/proc/self/environAmazonbot/0.1amazon / crawl
18:19:57.065/media../etc/passwdChatGPT-User/1.0openai / user
18:19:57.081/static../.aws/credentialsOAI-SearchBot/1.3openai / crawl
18:19:57.167/@fs/home/ec2-user/.aws/credentialsChatGPT-User/1.0openai / user
18:19:57.169/static../etc/passwdGoogle-Extended/1.0google / crawl
18:19:57.235/.envAmzn-SearchBot/1.0amazon / crawl
18:19:57.242/@fs/etc/passwdGPTBot/1.4openai / crawl
18:19:57.495/proc/self/environAmazonbot/0.1amazon / crawl
18:19:57.513/@fs/root/.aws/credentialsGoogle-Extended/1.0google / crawl
18:19:57.728/.aws/credentialsGoogle-Extended/1.0google / crawl
18:19:57.769/media../.envAmzn-SearchBot/1.0amazon / crawl
18:19:57.779/@fs/etc/passwdAmazonbot/0.1amazon / crawl
18:19:57.886/.envGPTBot/1.4openai / crawl
18:19:58.004/static../.envAmzn-SearchBot/1.0amazon / crawl
18:19:58.129/files../etc/passwdAmazonbot/0.1amazon / crawl
18:20:00.390/.mcp.jsonAmzn-SearchBot/1.0amazon / crawl
18:20:01.029/@fs/proc/1/environOAI-SearchBot/1.3openai / crawl

Method: the ledger is edge middleware that records every bot-shaped user agent before any JavaScript runs, with the request path, the edge's country code and a timestamp; rows are classified into vendor and kind by a user-agent token table. Every row above carries the edge country SG and falls inside 4,511 milliseconds. The 22 paths are the standard shopping list of a secrets scanner — environment files, git metadata, cloud credentials, `/etc/passwd` through path-traversal tricks (`/media../`, `/static../`, `/@fs/`) — and not one is a page this site has ever served. The ledger stored no IP address at the time, so the burst is named by country and timing rather than by address; that gap is part of what we fixed, below. The full row set is saved machine-readable beside this post.

What the vendors say a real request looks like

What 22 requests did to a week of counts

User-agent tokenRows, 7 days to 08-22 16:40Z (gross)Net of the scannerScanner share
Google-Extended40100%
Amzn-SearchBot6267%
GPTBot11736%
Amazonbot1291253%
OAI-SearchBot1311282%
ChatGPT-User1981952%
All bot-shaped rows1,5241,5021.4%

The damage is proportional to how rare the real thing is. ChatGPT-User and OAI-SearchBot fetch this site hundreds of times a week, so three fake rows barely move them. GPTBot — the training crawler, the one most robots.txt debates are about — fetched this site 7 times this week, so four fakes made it 11, a 57% overstatement. In the 24-hour window our analyst reads each morning (08-21 09:37Z to 08-22 09:37Z) the per-vendor figures moved from 245 rows to 223: google/crawl 4 to 0, openai/crawl 23 to 16, openai/user 39 to 36, amazon/crawl 39 to 31. Every one of the 'Google-Extended fetches' that window reported was the scanner.

Why this matters if you care about AI visibility

Limits

One small site and one burst — n=22 rows on a 5.7-day-old ledger of 1,524 bot-shaped rows, a 1.4% contamination rate that says nothing about yours. The ledger only records bot-shaped user agents, so a scanner wearing a browser string is invisible to it, and this burst is the one we caught, not the population. No IP was stored for these 22 rows, so 'Singapore' is the edge's country code and the attribution to a scanner rests on the paths and the 4.5-second cluster, which we consider conclusive for these paths but cannot corroborate by reverse DNS. The tells in the user-agent strings (versions, truncation) are noted because they were there, not because they are a test; the vendors' address lists are the test. Nothing here says any of the three vendors did anything — the point is that their names were borrowed, and that a user-agent-only instrument cannot tell. The IbouBot and PetalBot post from the same ledger stated the same UA-only limit two days ago; today is what the limit looks like when it bites. If you want to know whether the engines that really do crawl you are naming your business when customers ask, run a free check.

How do I verify that a GPTBot request really came from OpenAI?

Check the request's IP address against OpenAI's published list for that agent — gptbot.json for GPTBot, searchbot.json for OAI-SearchBot, chatgpt-user.json for ChatGPT-User — all linked from OpenAI's crawler documentation. A matching user-agent string on its own proves nothing; anyone can send one.

Does Google-Extended have a user-agent string?

No. Google's documentation states that Google-Extended doesn't have a separate HTTP request user agent string; it is a robots.txt token only, and Google's crawling is done with its existing user agents such as Googlebot. A request log row naming Google-Extended as its user agent did not come from Google.

How much AI-crawler traffic in a server log is fake?

On this site, over the 7 days to 2026-08-22, 22 of 1,524 bot-shaped requests (1.4%) were a single scanner wearing six AI-crawler strings — but the share was 36% of GPTBot rows, 67% of Amzn-SearchBot rows and 100% of Google-Extended rows, because fakes matter most where the real agent is rare. Your number depends on your traffic; the only way to know is to verify addresses against the vendors' published ranges.

See your number

See which businesses AI names when your client's buyers ask.

Running this for clients? The $249 agency 5-pack audits five businesses, white-labeled.

Check a client's AI visibility

Begin your check

Free · 60 sec

No account · No card · 3 buyer questions, 2 engines

By running a check you agree to our Terms and Privacy Policy.

Who runs this