How to Verify GPTBot and Other AI Crawlers
A crawler name in a log is only a claim. Verify OpenAI, Anthropic, Perplexity, and Google requests using their documented IP or DNS methods before changing access rules.
A bot name in a log is not proof of identity
Any client can send a user-agent string that says GPTBot, ClaudeBot, PerplexityBot, or Googlebot. Before changing a firewall rule, rate limit, robots policy, analytics segment, or paid-content boundary, verify the source using the operator’s official IP list or documented DNS procedure. Store three separate states: claimed, verified, and served.
This guide expands our earlier web-bot authentication framework with a current operational matrix for OpenAI, Anthropic, Perplexity, and Google.
Use the operator’s method, not one universal shortcut
| Operator | Relevant agents | Official verification source | Implementation note |
|---|---|---|---|
| OpenAI | OAI-SearchBot, GPTBot, ChatGPT-User, OAI-AdsBot | OpenAI bot documentation and linked IP JSON files | The agents have different purposes and controls. Match the relevant published IP set; do not treat one allow decision as permission for all four. |
| Anthropic | ClaudeBot, Claude-User, Claude-SearchBot | Anthropic crawler documentation and IP list | Keep training, user-requested retrieval, and search discovery policies distinct. |
| Perplexity | PerplexityBot, Perplexity-User | Perplexity crawler documentation and IP JSON files | Perplexity recommends combining user-agent and IP verification. |
| Googlebot and documented special-case or user-triggered fetchers | Google crawler verification | Use the published IP ranges or forward-confirmed reverse DNS exactly as documented. |
A current r/TechSEO report raised the spoofing risk. The risk is technically plausible because user-agent strings are client-controlled, but the thread does not establish how often spoofing occurs across the web.
Keep a three-state crawler record
| State | Meaning | Safe action |
|---|---|---|
| Claimed | The request presents a known user-agent string. | Record it as unverified. Do not whitelist, exempt, or attribute traffic yet. |
| Verified | The source matches the operator’s current official method. | Apply the policy for that agent’s documented purpose. |
| Served | Your edge and origin returned a known status and representation. | Record status, bytes, cache, robots outcome, and any challenge or block. |
The separation catches two common errors. A genuine crawler can be blocked accidentally, while a spoofed crawler can receive privileged treatment because a rule trusted the name alone.
A safer verification workflow
- Capture without granting: log timestamp, claimed agent, source IP, requested URL class, method, status, bytes, and response time.
- Fetch official data on a schedule: download the vendor’s IP ranges over HTTPS, validate the response, retain the last known-good copy, and record its retrieval time.
- Match addresses correctly: test IPv4 and IPv6 against CIDR ranges. Do not use string prefixes such as “starts with 20.”
- Use DNS only where documented: reverse lookup alone is insufficient. Google’s process requires reverse DNS followed by a forward lookup that returns the original IP.
- Fail closed for privileges: an unavailable vendor endpoint should not convert an unverified request into an allowed privileged request. Continue with the last valid list within a declared freshness window or use the default public policy.
- Separate purpose policies: search discovery, training, user-initiated retrieval, and ads may use different agents. Express those decisions explicitly in robots, WAF, and application rules.
Cache verification results briefly to reduce repeated network work, but do not make the cache permanent. Vendors can change ranges. Monitor misses from previously verified agents before replacing an old list.
Copy this verification checklist
- Identify the exact agent and its documented role.
- Save the official verification URL and retrieval timestamp.
- Validate JSON or DNS results before updating rules.
- Support both IPv4 and IPv6 CIDR matching.
- Record claimed, verified, and served as separate fields.
- Test allow, block, rate-limit, and endpoint-failure cases.
- Keep a last-known-good list and rollback procedure.
- Review rules when a vendor adds or renames an agent.
Download or print the checklist from the article controls, then attach the completed record to the relevant WAF or robots change. A security decision should be reproducible by someone other than the person who wrote the rule.
Sources and evidence limits
We checked the linked operator documentation on August 29, 2026. Vendor documentation is authoritative for agent names, purposes, and published identity mechanisms; it cannot guarantee that every request bearing those names is genuine. The community posts that prompted this guide are anecdotal discovery signals and are not used to estimate spoofing prevalence.
Keep learning
Continue this topic
Next in this topic
Google Ads vs Maps: Local Lead Attribution
Earlier in this topic
Claude Text Watermark: Not Hidden Characters or SEO
SEO
Ask a question or join the discussion