Skip to content

Verify AI crawler traffic in server logs

Short answer

User-agent strings can be faked, so count only verified crawler requests. Check Google with reverse-then-forward DNS or its published IP lists, and Baidu with reverse DNS. OpenAI, Perplexity and Anthropic publish IP lists for their crawlers.

  • Access to raw server or CDN logs with the client IP address and user-agent of each request.
  • A shell with host (or dig) for DNS lookups, or a script that can fetch JSON and match IPs against CIDR ranges.
Terminal window
host 66.249.66.1 # → crawl-66-249-66-1.googlebot.com
host crawl-66-249-66-1.googlebot.com # → 66.249.66.1 (must match)

Google publishes the lists as JSON files per crawler category (common crawlers, special-case crawlers, user-triggered fetchers), linked from its verification page.

2. OpenAI and Perplexity: published IP ranges

Section titled “2. OpenAI and Perplexity: published IP ranges”

Each file lists CIDR prefixes. A request is verified when its user-agent names the crawler and its IP falls inside one of that crawler’s prefixes.

Terminal window
host 123.125.66.120 # → Baiduspider-123-125-66-120.crawl.baidu.com

Baidu’s FAQ stops at the reverse lookup. Adding the forward lookup used for Google costs nothing and also catches a spoofed PTR record.

That list is from 2019 and has no machine-readable version, so treat a mismatch as “unverified”, not as proof of a fake.

  • Spot-check: pick a request from each claimed crawler and run the check by hand.
  • In reports, separate claimed from verified crawler traffic. Unverified requests with a crawler’s user-agent are a different population and shouldn’t be counted as that crawler.

Verification is read-only. If you added firewall rules based on it, remove them and fall back to robots.txt rules (Configure robots.txt for AI crawlers).

  • Trusting the user-agent string alone.
  • Caching IP lists forever. The files carry a creationTime and change over time; refresh them on a schedule.
  • Blocking unverified “Googlebot” traffic by user-agent string. It blocks nothing once the impostor changes its string. Meanwhile, IP-based blocking of real crawlers can stop them from reading your robots.txt.

Sources

  1. Verify requests from Google crawlers and fetchersGoogle · official · ✓ 2026-10-25
  2. Overview of OpenAI crawlersOpenAI · official · ✓ 2026-10-25
  3. Perplexity crawlersPerplexity · official · ✓ 2026-10-25
  4. Does Anthropic crawl data from the web, and how can site owners block the crawler?Anthropic · official · ✓ 2026-10-25
  5. FAQs of BaiduspiderBaidu · official · ✓ 2026-10-27
  6. 360蜘蛛IP360 Search · official · ✓ 2026-10-27
  7. 头条搜索spider介绍Toutiao Search · official · ✓ 2026-10-27