Advertisement
Digital Intelligence Hub

How to Verify Googlebot and AI Crawlers Before You Block Them (2026)

Expert Analyst Robert Harrison
Publish Date Aug 27, 2026
Advertisement
Verify Googlebot and AI Crawlers The Exact 2026 Method

A user agent is a claim, not proof. Anyone can run a single curl command with GPTBot in the header and your access log will dutifully record it as GPTBot. That string costs nothing to type, which is exactly why blocking decisions built on it go wrong in both directions — you block the real crawler and let the impostor through.

The scale is measurable. HUMAN Security's Satori team found that 5.7% of all traffic claiming to be a well-known AI crawler was spoofed, peaking at 7.7% on some days, with the ChatGPT-User agent impersonated in roughly one request in six. Separate testing put spoofed Googlebot traffic at 12 to 18% when the user agent was the only check.

Advertisement

Three methods actually prove identity, whether you need to verify Googlebot or a crawler that launched last month: forward-confirmed reverse DNS, matching against the operator's published address ranges, and cryptographic request signing. This guide covers all three, shows which crawlers each one works on, and names the four mistakes that make verification look like it worked when it did not.

Robert Harrison, OSINT and Network Utility Expert, explaining how to verify Googlebot and AI crawlers before blocking an IP address at TrustMyIP.com
Author: Robert Harrison OSINT & Network Utility Expert

The most expensive verification mistake I have watched someone make was technically a success. They checked crawler addresses against Google's master range file rather than the crawler file, every check passed, and for two months anything running on Google Cloud sailed through as Googlebot. Renting a virtual machine in the right cloud was the entire attack. The file you compare against matters as much as the comparison.

Where I will be honest is on coverage. Verification only works when an operator publishes something to verify against, and several do not. What each vendor publishes also changes without announcement — I have seen a range list return 290 prefixes on one call and 289 minutes later. Treat any crawler verification setup as something you refresh, not something you finish.

Quick Answer: Verify a Bot Before Blocking It

Run a reverse DNS lookup on the requesting address, confirm the hostname belongs to the operator, then run a forward lookup and confirm it returns the same address. Where reverse DNS is unavailable, match the address against the operator's published range file instead. Start by checking what the user agent in your log actually claims to be.

Why Isn't a User Agent Enough to Identify a Bot?

Because the client writes it. A user agent is a header the requester chooses, so it carries exactly as much authority as a handwritten name badge. Nothing in HTTP validates it, nothing signs it, and your server records whatever arrives. Every crawler operator knows this, which is why each of them publishes a separate mechanism for proving identity rather than asking you to trust the string.

Advertisement

The consequences run both ways, and the costly direction is the one people overlook. Blocking a range that contains the genuine Googlebot removes your pages from search results, and the same mistake with an AI crawler removes you from AI answers. Trusting a spoofed one hands a scraper the allowlist exemption you built for a search engine. Neither failure announces itself; both show up weeks later as a traffic graph nobody can explain.

Signal Who Controls It Proves Identity?
User agent string The requester No — free to type
Address prefix looks familiar Nobody — it is a guess No — a clue at best
Reverse DNS alone Whoever runs the PTR record No — trivially faked one way
Forward-confirmed reverse DNS The operator's DNS Yes, where supported
Published range membership The operator Yes, if you use the right file
Signed request The operator's private key Yes, where implemented

Rows four through six are the only ones worth building on. The first is the classic, and it still works better than anything newer.

How Do You Verify Googlebot with Reverse DNS?

Run the check in both directions. Take the address from your log, run a reverse DNS lookup, and confirm the hostname it returns belongs to googlebot.com, google.com or googleusercontent.com. Then run a forward lookup on that hostname and confirm it resolves back to the address you started with. Both directions must agree, because faking both would require controlling Google's own DNS.

Forward-confirmed reverse DNS

Advertisement

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

Google documents this as the primary method in its crawler verification guidance. Expect three Googlebot hostname patterns rather than one: standard crawl hosts, geo-distributed hosts under geo.googlebot.com, and rate-limited proxy hosts under google.com. A checker that only recognises the first pattern will reject genuine traffic.

The mechanism itself is ordinary name resolution running backwards then forwards, and if the two-directional idea feels abstract, our explainer on how names resolve to addresses in the first place makes the second half concrete. For a single address you can skip the command line entirely and run both lookups against Google's patterns in one step.

Reverse DNS is reliable and slow. When you need to check thousands of log lines, the second method scales far better.

How Do You Verify a Bot Against Published IP Ranges?

Treat it as a set-membership test. Most operators publish machine-readable range files, so verification becomes a question of whether the requesting address falls inside a published prefix. Google has published its crawler ranges as a JSON file since 2021, and Microsoft, OpenAI, Perplexity, Apple and DuckDuckGo publish equivalents. No DNS round trip is required, which makes this the practical choice at log-ingest volume.

Advertisement

Google splits its files by purpose rather than shipping one list. There are separate files for common crawlers, special-case crawlers such as AdsBot, user-triggered fetchers, and a master file covering every Google-owned range. Picking the wrong one is the single most damaging mistake in this whole topic, and it gets its own section below.

Never verify against the master file

Google's master range file covers all Google-owned addresses, which includes Google Cloud. Verify against that and anyone who rents a cloud instance passes as Googlebot. Use the crawler file, never the master file. The same logic applies to every vendor: match against the crawler list, not the corporate infrastructure list.

Range files also drift. Vendors add prefixes, retire them, and move services between clouds without announcing it, so a list pasted into a firewall six months ago now rejects genuine traffic. Automate the refetch. Google's own address space is worth understanding separately, and our breakdown of which address blocks Google actually operates covers why one company needs so many.

Both methods depend on the operator publishing something. That is a bigger assumption than it sounds.

Which Crawlers Can You Actually Verify?

Coverage splits into three tiers. Search engines such as Googlebot and Bingbot publish stable ranges tied to their own networks and support reverse DNS, making them fully verifiable. Most AI operators publish range files but skip reverse DNS. A third group publishes nothing at all, and for those the honest verdict is not "fake" but "unverifiable" — a distinction worth preserving in your logs, because treating unknown as hostile blocks a lot of legitimate traffic.

Operator Published Ranges Reverse DNS Verdict
Googlebot Yes, split by crawler type Yes Fully verifiable
Bingbot Yes Yes Fully verifiable
GPTBot and OpenAI fetchers Yes, three separate files No Range check only
Anthropic crawlers Yes, one shared file No Range check, vendor only
PerplexityBot Yes, per bot No Range check only
AhrefsBot Yes Yes Fully verifiable
Bytespider, Meta agents No No Unverifiable

One structural point explains that table. Search engines run crawlers on their own networks, so an address maps cleanly to a company. Most AI vendors rent compute from AWS, Google Cloud and Azure, meaning the address alone tells you which cloud rather than which company. Checking which network actually announces an address separates those two situations quickly.

That cloud dependency shapes everything about verifying the newer crawlers.

How Do You Verify AI Crawlers Like GPTBot and ClaudeBot?

Match the address against the vendor's published range file, because reverse DNS is generally unavailable for these crawlers. OpenAI publishes three separate lists covering GPTBot, its search bot and its user-triggered fetcher. Anthropic publishes one shared list covering its crawlers together, and Perplexity publishes per-bot files. Each check is straightforward set membership once you have fetched the current version of the file.

Why the Lists Differ So Much in Size

A measurement taken on 5 August 2026 found OpenAI's training crawler using 21 prefixes while its user-triggered fetcher used 289 — the same company, more than a tenfold difference. Training crawlers run scheduled batch jobs from a small fixed pool. User-triggered fetchers fire when a person asks a question, so they scale across far more infrastructure. Treating both as one category produces rules that are wrong for at least one of them.

Anthropic's shared file creates a different limitation. Passing the check proves the request came from Anthropic, but it cannot tell you whether that request was training, search or user-triggered, because all three share the address pool. To separate them you fall back to the user agent — the very layer this article says cannot stand alone. That is a division of labour rather than a contradiction: the range proves the vendor, the string distinguishes the purpose.

Why robots.txt Is Not Verification

A disallow line in robots.txt is a request, not a control. Compliant crawlers honour it; nothing forces the rest to. Cloudflare published evidence in 2025 that one major AI vendor ran undeclared crawlers which rotated user agents, addresses and networks specifically to work around robots.txt blocking, which means a correctly written file still does not guarantee that vendor stays away.

That gap is precisely why log verification matters more than configuration. Your robots.txt tells you what you asked for. Your access logs, checked against published ranges, tell you what actually happened. When the two disagree, the logs are the ones describing reality.

Blocking a fetcher blocks a person

User-triggered agents such as ChatGPT-User and Perplexity-User fire because a human asked something and wants your page in the answer. A rule reading "not in the training crawler range, therefore block" removes those visits too. Set policy per token rather than per vendor, and decide separately whether you object to training, to retrieval, or to neither.

Ranges and reverse DNS cover today's traffic. A third mechanism is arriving for the traffic that neither handles well.

What Is Web Bot Auth and Should You Rely on It Yet?

Web Bot Auth is cryptographic request signing, proposed by Cloudflare in 2025 and built on HTTP Message Signatures. Instead of proving identity through an address, the agent signs each request with a private key you can verify against a published public key. Identity travels with the request rather than with the network position, which solves the problem that address lists cannot: agents running on shared cloud infrastructure.

Treat it as experimental in 2026. Adoption is partial, tooling is young, and a signature check only helps when the operator implements it. The sensible position is to verify signatures where they appear and keep address and DNS verification as your baseline, rather than rebuilding your pipeline around a mechanism most crawlers do not use yet.

Whichever method you run, four mistakes turn a working check into a false sense of security.

What Mistakes Make Bot Verification Useless?

Four errors account for nearly every failed verification setup, and each one produces a check that appears to pass. They are using the wrong range file, skipping the forward half of the DNS lookup, running against a stale list, and treating one vendor's method as universal. None throws an error; each simply returns the wrong verdict, quietly, on every request.

Mistake What It Lets Through, Or Blocks
Verifying against the master range file Anything on that vendor's cloud passes as its crawler
Reverse DNS without the forward confirm A crafted PTR record passes as the real crawler
Stale range file Genuine crawlers on new prefixes get blocked
Matching only one hostname pattern Geo and proxy crawl hosts get rejected as fake
Treating "unverifiable" as "fake" Crawlers that publish nothing get blocked by default
Looking for crawlers in analytics You see nothing — crawlers do not run JavaScript

That last row catches people constantly. Tag-based analytics records browsers, and crawlers are not browsers, so a report showing no bot traffic proves only that your analytics cannot see it. Verification is server-side work that starts in raw access logs from your web server or CDN.

Once your verdicts are trustworthy, they need to drive an actual policy.

How Do You Turn Verification into a Blocking Policy?

Build the allowlist from verified addresses rather than from user agent strings, then decide separately what happens to everything else. The order matters far more than the tooling you pick: verify first, categorise second, block last. Skipping straight to a block rule based on a string is how sites quietly deindex themselves, and getting the sequence right costs nothing beyond a little patience.

Six Steps From Log Line To Rule

1 Pull raw server logs, not analytics

Take a week of access logs from your web server or CDN. Strip requests for static assets and keep the page hits, which is where crawler behaviour actually shows.

2 Group by claimed identity and network

Bucket requests by user agent substring, then resolve each source address to its network operator. Any bucket where the network does not match the expected vendor is your suspect pile.

3 Verify the suspects properly

Run forward-confirmed reverse DNS where the operator supports it, and a published-range check where it does not. Record three outcomes rather than two: verified, spoofed, unverifiable.

4 Allowlist the verified, by purpose

Separate search indexing from AI training from user-triggered retrieval. Those are three different business decisions and they deserve three different rules, not one blanket policy.

5 Challenge the unverifiable, block the spoofed

Confirmed impostors earn a block. Anything unverifiable deserves a challenge or a rate limit first, because plenty of legitimate tools simply never published a range file.

6 Schedule the refresh and deploy the rule

Automate refetching every range file, then push the allowlist to your edge. The custom rule syntax for edge allowlists covers the deployment side.

Step three is where most setups quietly go wrong, because two outcomes feel simpler than three. Recording unverifiable as its own verdict is what stops you blocking a monitoring service that never had a range file to publish.

Get that sequence right and the blocking decisions downstream become straightforward.

The Short Version

Verify Googlebot and every other crawler before you block anything, because a user agent is a claim anyone can type and roughly one in seventeen requests claiming to be a well-known AI crawler is fake. Forward-confirmed reverse DNS proves identity for search engines: reverse lookup the address, check the hostname belongs to the operator, forward lookup it, and confirm you land back on the same address.

For AI crawlers, match against the vendor's published range file instead, since most skip reverse DNS entirely. Use the crawler file rather than the master file, or anything running on that vendor's cloud passes as its crawler. Refresh the files automatically, because vendors add and retire prefixes without telling anyone.

Record three verdicts rather than two. Verified traffic earns an allowlist entry, confirmed impostors earn a block, and anything unverifiable deserves a challenge rather than a ban — several legitimate crawlers publish nothing to check against. Then feed those verdicts into rules built at the right layer, which is the wider question our guide to blocking at every layer works through in full.

Check It Before You Block It

Paste one address or a whole log file. Both directions of DNS and every published range file, checked in seconds. Free, instant, no account.

Frequently Asked Questions

Q How do I verify Googlebot is real?

A
Run a reverse DNS lookup on the address in your log and confirm the hostname belongs to googlebot.com, google.com or googleusercontent.com. Then run a forward lookup on that hostname and confirm it returns the same address you started with. Both directions must agree, because faking both would require controlling Google's own DNS.

Q Can a user agent string be faked?

A
Trivially. The client writes that header, so anyone can send a request claiming to be GPTBot or Googlebot and your log will record it as such. HUMAN Security found 5.7% of traffic claiming to be a well-known AI crawler was spoofed, with ChatGPT-User impersonated in roughly one request in six.

Q How do I verify GPTBot or ClaudeBot?

A
Match the requesting address against the vendor's published range file, since these crawlers generally do not support reverse DNS. OpenAI publishes three separate lists for GPTBot, its search bot and its user-triggered fetcher. Anthropic publishes one shared list, so a match proves the vendor but not which specific crawler visited.

Q Why should I never use Google's master IP range file?

A
Because it covers every Google-owned address, including Google Cloud. Verify against that file and anyone who rents a cloud instance passes as Googlebot. Always match against the crawler-specific file instead. The same logic applies to every vendor you verify: match against the crawler list, never against the wider corporate infrastructure list.

Q Is reverse DNS alone enough to verify a crawler?

A
No. A reverse lookup returning a googlebot.com hostname can be faked by whoever controls the PTR record for that address. Only the forward confirmation closes the loop, because it proves the operator's own DNS resolves that hostname back to the same address you started from. Always run both directions, never just one of them.

Q Why does my analytics show no crawler traffic?

A
Because tag-based analytics records browsers, and crawlers do not run JavaScript. A report showing zero bot activity proves only that your analytics cannot see it. Crawler verification is server-side work that starts in the raw access logs from your web server or CDN, rather than in any JavaScript-based reporting tool.

Q Does robots.txt stop AI crawlers from visiting?

A
Only the compliant ones. A disallow line is a request rather than a control, and nothing enforces it. Cloudflare published evidence in 2025 that a major AI vendor ran undeclared crawlers rotating user agents, addresses and networks to work around robots.txt blocking. Your access logs describe reality; robots.txt describes intent.
Robert Harrison
Verified Content Expert

Robert Harrison

OSINT & Network Utility Expert

Robert Harrison is a network infrastructure specialist and OSINT researcher based in Boston, Massachusetts, with over 18 years of experience in DNS architecture, port security, and network reconnaissance. At Trust My IP, he leads the technical utility layer — building and documenting diagnostic tools and publishing hands-on guides for DNS troubleshooting, port scanning, SSL analysis, and open-source intelligence methodology. His work is grounded in systems administration and network engineering experience that predates most of the security frameworks in use today.

Helpful Insight?

Share with your professional network