A User-Agent string is free text anyone can send. How sites verify a crawler claiming to be Googlebot really is one: DNS, IP ranges, signatures, registries.
The User-Agent header is a plain text field, and nothing stops any script from setting it to Googlebot/2.1 (+http://www.google.com/bot.html). Scrapers do this constantly, usually to slip past simple bot filters that only look at that one string. Meanwhile the real Googlebot, Bingbot, and dozens of other legitimate crawlers do announce themselves the same way — by name, in that same header. A site that wants to treat "Googlebot" specially has to answer one question first: is this request actually from Google, or from anyone who typed the right words?
Key Takeaways
- A claimed identity in the User-Agent proves nothing by itself — it's free text, and copying a real crawler's string is a one-line change for anyone who wants to impersonate it.
- Forward-confirmed reverse DNS is the classic check: look up who controls the source IP, then confirm that answer against DNS records the operator itself publishes.
- Published IP-range lists are a faster, cheaper alternative for operators that maintain one, at the cost of staleness between updates.
- Cryptographic signatures (RFC 9421 / Web Bot Auth) replace inference with proof: a verified signature shows which key signed the request, not just which network it came from.
- Operator directories are the newest option — Cloudflare's BotBase lets an operator register an identity a site can look up, with the registry itself re-running the DNS, IP-list and signature checks behind that entry.
- These four methods verify different things and fail in different ways, so knowing which one a site is relying on matters as much as knowing that a check exists at all.
The Claim Is Free; the Proof Isn't
Every one of the checks below exists because of that one gap: a User-Agent is a claim a client makes about itself, and a client can claim anything. That's true of ordinary browsers too — our guide on detecting User-Agent spoofing covers the browser side of the same problem — but a self-declared crawler raises the stakes, because sites that trust "Googlebot" often grant it things they'd never grant an anonymous visitor: unthrottled access, bypassed paywalls, or a pass through a challenge page. Verifying the claim, not just reading it, is the whole job described here.
Method 1: Forward-Confirmed Reverse DNS
The oldest and still most widely used check runs in two steps, and skipping the second one is the mistake that makes the first one worthless.
Step one — reverse lookup. Take the request's source IP address and look up its PTR record, which maps an IP back to a hostname. If the crawler is really Google's, this should resolve to something ending in googlebot.com, google.com, or googleusercontent.com — the three domains Google's own verification documentation tells site owners to accept.
Step two — forward confirmation. That hostname alone proves nothing yet, because PTR records are controlled by whoever administers the IP address's reverse-DNS zone — not by whoever you'd like to be running that address. RFC 1912 documents exactly this kind of DNS misconfiguration and misuse risk, and the DNS terminology in RFC 8499 makes the same point structurally: what we call reverse DNS is just the address-to-name direction served out of the IN-ADDR.ARPA and IP6.ARPA zones, filled in by whoever holds the delegation for that address block — not a certificate issued by a trusted third party. So the check isn't done. The site takes the hostname from step one and resolves it forward — a normal A/AAAA lookup — and checks that the result lands back on the original source IP. Only when both directions agree does the identity hold up: an attacker who doesn't control DNS for googlebot.com cannot make an arbitrary IP's PTR record resolve to a hostname that also forward-resolves back to that same IP.
This is why the two-step version is called "forward-confirmed" reverse DNS, and why a reverse lookup alone is not a verification method — it's a lookup of a value someone else controls.
Method 2: Operator-Published IP Ranges
Some crawler operators skip DNS entirely and publish a list of the IP ranges they crawl from. A site downloads the list, checks whether the request's source IP falls inside it, and treats a match as verified. It's a single set-membership check — far cheaper per request than two DNS round trips — which matters at the request volumes major crawlers generate.
Google publishes exactly such lists as JSON files of CIDR blocks, split by crawler class: common-crawlers.json for the search crawlers, special-crawlers.json for products like AdsBot, and separate files for user-triggered fetchers. Its documentation presents matching against those files as the automatic alternative to the manual DNS round trip — same question, cheaper answer.
The tradeoff is freshness. A published range list is a snapshot; if an operator adds new address space and a site's cached copy hasn't picked it up yet, a genuine crawler can briefly fail the check. And the method only exists for operators disciplined enough to publish and maintain a list in the first place — plenty of smaller or newer crawlers don't.
Method 3: Cryptographic Signatures
DNS and IP ranges both verify a network — whoever holds that address block, or announced ownership of that range. A signature verifies something different: whoever holds a specific private key. The operator signs each outgoing request using HTTP Message Signatures (RFC 9421), the standard the Web Bot Auth architecture draft builds on — an IETF Internet-Draft that is still being revised and renamed rather than a finished standard — and publishes the matching public key. A site verifies the signature against that key instead of asking anything about the request's IP address at all.
Our bot detection techniques guide covers this mechanism in full in its "Cryptographic Bot Identity: Web Bot Auth" section — worth reading if you want the underlying cryptography, since the point that matters here is narrower: a signature check answers "which key signed this," which is a different question from "which network did this arrive from," and the two can disagree in ways worth knowing about.
Method 4: Operator Directories
2026 added a fourth answer to the same question. Rather than every site inferring identity from a network address or a key on its own, an operator can register once with a directory that does the inferring for everyone. Cloudflare's BotBase for Operators, launched August 28, 2026, lets a bot operator submit and maintain its own directory entry — declaring who it is, what it does, and how it can be verified — and then tracks that submission through review states like waiting, accepted, or rejected before it earns a "Verified" label.
The important part is what happens during that review. Cloudflare doesn't take the declaration at face value: it checks whether the claimed verification method actually holds up, validating the operator's IP lists, reverse-DNS setup, and Web Bot Auth signatures. In other words, a directory doesn't replace methods one through three — it runs them once, centrally, so that individual sites can consume a single answer instead of each rebuilding the same three checks.
The site-owner half of that picture is Bot Preference Sync, which flips the direction: a site owner sets its policy for search, agent, and training crawlers once in a dashboard, and Cloudflare writes the matching rules into that site's robots.txt automatically. That's a policy mechanism, not a verification one — but the two only work together, because a preference expressed to "Googlebot" is worth exactly as much as the site's ability to tell whether the thing reading it really is Googlebot.
Why the Ordering Isn't Arbitrary
These four checks aren't tiers of the same thing done better each time. The first three verify genuinely different objects, the fourth verifies them on your behalf, and each fails in its own way:
- Forward-confirmed reverse DNS and published IP ranges verify a network. They fail if DNS is misconfigured or a range list is stale — both false negatives that lock out a real crawler — or, far less often, if an attacker somehow controls both the forward and reverse zones for an address they've obtained (rare, but not impossible for a well-resourced attacker).
- A signature verifies a key holder. It fails only if the private key leaks — a cryptography and operational-security problem, unrelated to DNS or network topology at all.
- A directory entry verifies whatever the registry checked for you. It's exactly as strong as the checks behind it, and it adds two failure modes of its own: the registry's vetting being weak, and a legitimate operator simply not having registered yet.
A site that only checks one of these is trusting exactly one failure mode without knowing it. Combining them — a directory lookup with your own DNS check as the fallback for operators the directory doesn't list — means an attacker has to defeat more than the weakest link, and a real crawler doesn't get locked out by one stale list.
What This Means for Your Own Browser
None of these four methods are things an ordinary browser can offer. They exist for automated crawlers that declare an identity up front; a person browsing normally never sends a claimed identity to verify in the first place. That's exactly why sites fall back to a completely different toolkit for everyday visitors — browser and network fingerprinting — to build a picture of a session from signals nobody explicitly declared. If you want to see what that looks like from the other side, BrowserInsight's bot detection tool shows the same client-observable signals a detection stack would use on a session that has no claimed identity to check at all.
The scope here is narrow on purpose. This guide is about one thing only — verifying a crawler that has already claimed to be someone specific. It doesn't cover telling unwanted, undeclared automation apart from a real visitor from client-side signals alone (see our bot detection techniques guide), it doesn't cover an AI agent driving a real person's own browser with their own credentials (see AI agent traffic detection), and it doesn't cover a human proving they're a person without becoming trackable in the process (see anonymous credentials on the web). Each of those is a different question with a different answer; this one is specifically about turning "this request says it's Googlebot" into a checked fact instead of a trusted string.
Frequently Asked Questions
Can I just trust the User-Agent header if it says Googlebot?
No. The User-Agent is plain text the client sets, and nothing prevents any script from copying a real crawler's exact string. Treat a User-Agent claim as an assertion to verify, not a fact — using one of the methods above, not the string itself.
What's the difference between reverse DNS and forward-confirmed reverse DNS?
A plain reverse (PTR) lookup only tells you what hostname the IP's administrator chose to publish — which proves nothing if you don't already trust that administrator. Forward-confirmed reverse DNS adds a second step: resolving that hostname forward again and checking it lands back on the original IP. Skipping the forward step is the single most common mistake in this check.
Is a cryptographic signature strictly better than DNS-based verification?
They verify different things, so "better" depends on what you need. A signature proves which private key signed a request, independent of network location, which is stronger against IP spoofing. But it only works for operators that have adopted signing, while forward-confirmed reverse DNS works for any operator with correctly configured DNS, adopted or not.
Do I need to check the request's TLS or TCP fingerprint too?
It's a separate, complementary signal rather than a substitute — our TCP/IP fingerprinting guide covers how network-layer characteristics can flag a mismatch between a claimed client and its actual stack, which is useful alongside identity verification but doesn't itself confirm whose crawler a request is.
Does Googlebot verification protect against every kind of fake crawler?
It protects against one specific threat: a request that impersonates a known, identity-checkable operator. It does nothing for undeclared scraping that never claims to be Googlebot in the first place — that traffic needs the broader bot-detection signals covered in our bot detection techniques guide, not identity verification.
Recommended Reading
- Bot Detection Techniques: How to Identify Bots and Crawlers
- AI Browser Agents: How Sites Tell Them From Bots and Humans
- Anonymous Credentials: Proving Humanity Without Being Tracked
- How to Detect User-Agent Spoofing (and Why It's Easy to Spot)
- What Is a User-Agent String? How to Read and Check Yours
- TCP/IP Fingerprinting: How Servers Detect Your OS Before TLS


