跳至正文
网络安全

如何通过 IP 验证 Googlebot 并识别假冒的 Googlebot

如何验证 Googlebot:反向与正向 DNS 检查、Google 公布的 IP 段,以及一次真实查询,将经过验证的 Googlebot 与伪造的 Googlebot 并排对比。

作者GeoIPHub 团队发布于阅读时长阅读约 13 分钟
两个外形相同的爬虫图形,一个带有稳定的光环,一个轮廓开裂,分别代表经过验证的 Googlebot 和假冒的 Googlebot

User-Agent 正是冒充者可以控制的部分。在 Search Engine Journal 发布的一项针对某个新网站、为期 14 天的测试中,799 个自称 Googlebot 的请求里只有 107 个来自经过验证的 Google 地址。这只是一个小网站,所以应把它看作一个警示,而不是普遍比例。下文介绍手动检查方法、自动化检查方法,以及对一个真 Googlebot 和一个假 Googlebot 的真实查询对比。

节点与铭牌之间形成的闭合光环,代表反向与正向 DNS 检查
先反向 DNS,再正向 DNS:这个环必须闭合。

为什么 Googlebot 的 User-Agent 什么也证明不了

User-Agent 字符串是客户端对自身的声明,任何客户端都可以发送任意字符串。爬虫程序之所以复制 Googlebot 的 User-Agent,是因为许多网站对它格外宽容:没有限流、没有登录墙、没有 bot 质询。这使得这个名字成了一件值得披上的伪装。

轻信它的代价是双向的。放行一个假 Googlebot,抓取程序就能以爬虫的速度获取您的内容(我们关于在访问日志中检测抓取 bot 的指南展示了这种情况的样子)。误拦一个真 Googlebot,您的页面就会从 Google 索引中消失。两种情况的解决办法相同:验证地址。我们更全面的通过 IP 验证 AI 爬虫指南涵盖了 GPTBot、ClaudeBot 和带签名的代理,而我们对 OpenAI 主要 bot(GPTBot、OAI-SearchBot 和 ChatGPT-User)的比较则说明了应该拦截其中哪些;本文只讨论 Google 的爬虫。

如何手动验证 Googlebot:先反向 DNS,再正向 DNS

Google 文档中描述了一个两步 DNS 检查,两步都很重要。下面是 2026 年 10 月 5 日在一个真实 Googlebot 地址上运行的结果:

GeoIPHub API
# 1. Reverse lookup: which hostname does the IP claim? dig +short -x 66.249.66.1 # crawl-66-249-66-1.googlebot.com. # 2. Forward lookup: does that hostname point back to the same IP? dig +short crawl-66-249-66-1.googlebot.com # 66.249.66.1

主机名以 googlebot.com 结尾,并且能解析回原始 IP,因此该请求来自 Google。跳过第 2 步是常见错误。控制某个 IP 的人同样控制着它的反向 DNS 记录,因此抓取程序可以把自己的服务器命名为 crawl-fake.googlebot.com。但它无法让 Google 的 DNS 将这个名字指回它的服务器。正是正向查询让这项检查无法伪造。

对于您正在调查的单个地址,这种方法很有效。但对于繁忙的日志来说它太慢了,因为每个新 IP 都需要两次 DNS 查询,而且 DNS 故障会变成误判的“假冒”。

Googlebot IP 段:三类爬虫,三类 IP 段文件

Google 的爬虫分为三组,每组都有自己的主机名和公布的 IP 列表。将 IP 与正确的文件进行匹配,就是 DNS 检查的自动化版本,也是大多数大规模验证的做法。

类型示例反向 DNS 形式IP 段文件是否遵守 robots.txt
常见爬虫Googlebotcrawl-*.googlebot.com 或 geo-crawl-*.geo.googlebot.comcommon-crawlers.json自动抓取时始终遵守
特殊爬虫AdsBotrate-limited-proxy-*.google.comspecial-crawlers.json可能遵守,也可能不遵守
用户触发的抓取程序Google Site Verifier、由用户请求的抓取*.gae.googleusercontent.com 或 google-proxy-*.google.comuser-triggered-fetchers.json、user-triggered-fetchers-google.json、user-triggered-agents.json不遵守,抓取是用户发起的

有两个细节会让较旧的脚本出错。第一,文件位置变了:旧的 googlebot.json URL 现在会返回 301 重定向,指向 /static/crawling/ipranges/common-crawlers.json,因此不跟随重定向的代码会悄无声息地什么也拿不到。第二,Google 的验证页面没有说明更新周期。我们在 2026 年 10 月 29 日获取的文件日期是前一天;我们在 2026 年 10 月 5 日获取的版本生成于 2026 年 10 月 2 日,列出了 317 个前缀,其中 170 个是 IPv4。可以缓存该文件,但至少每天刷新一次。

表格来源:Google 的 Verify requests from Google crawlers and fetchers 页面。

真 Googlebot 与假 Googlebot 并排对比

看清差别最快的方法是查询这两个地址。我们在 2026 年 10 月 5 日运行了两次查询(随着 IP 段变动,结果会有所变化)。第一个是 66.249.66.1,即 Google 官方文档中的 Googlebot 地址。第二个是 104.248.50.21,一台 DigitalOcean 服务器:假设您的日志显示它发送了 Googlebot 的 User-Agent。

GeoIPHub API
[ { "ip": "66.249.66.1", "asn": { "asn": 15169, "org": "GOOGLE - Google LLC", "asn_type": "hosting", "user_type": "search_engine_spider" }, "detection": { "is_hosting": true, "is_vpn": false, "is_proxy": false, "is_tor": false }, "threat": { "is_crawler": true, "crawler": { "verified": true, "name": "Googlebot", "operator": "Google", "category": "search_engine", "verification_method": "ip_range_list" } }, "scoring": { "fraud_score": 0, "recommended_action": "allow", "detection_methods": ["datacenter_ip", "no_ptr_datacenter", "verified_crawler"] } }, { "ip": "104.248.50.21", "asn": { "asn": 14061, "org": "DIGITALOCEAN-ASN - DigitalOcean, LLC", "asn_type": "hosting", "user_type": "hosting" }, "detection": { "is_hosting": true, "is_vpn": false, "is_proxy": false, "is_tor": false }, "threat": { "is_crawler": false, "crawler": { "verified": false, "name": "none", "verification_method": "none" } }, "scoring": { "fraud_score": 15, "recommended_action": "allow", "detection_methods": ["datacenter_ip", "no_ptr_datacenter"] } } ]

第一个地址位于 Google 的 IP 段列表中,因此 threat.crawler.verified 为 true,而 verification_method 说明了验证方式:ip_range_list。verified_crawler 信号将其 fraud_score 拉低到 0。第二个地址是一台普通的云服务器。它不是任何类型的爬虫,因此从它发出、携带 Googlebot User-Agent 的请求,按定义就是假冒的。

请注意风险评分没有做什么。假冒者得分 15,结果为 allow,因为云服务器本身并不是恶意的。“假冒 Googlebot”这一结论来自两个事实的组合:您的日志说是 Googlebot,查询结果说不是 Google。API 看到的是 IP,而不是您的请求头,所以这一比较需要由您来完成:

GeoIPHub API
const claimsGooglebot = /Googlebot/i.test(req.headers["user-agent"] ?? ""); const res = await fetch(`https://api.geoiphub.com/v1/lookup/${clientIp}`, { headers: { "x-api-key": process.env.GEOIPHUB_KEY }, }); const ip = await res.json(); const isRealGoogle = ip.threat.crawler.verified && ip.threat.crawler.operator === "Google"; if (claimsGooglebot && !isRealGoogle) { // Treat as an ordinary unverified bot: rate-limit or challenge it. }

您可以在免费的 IP 查询工具中试试这两个地址,无需密钥。

如何处理假冒的 Googlebot

把检查失败视为“未验证的 bot”,而不是攻击。该请求来自冒充 Google 的人,这说明他们想获得爬虫待遇。取消这种待遇,像对待其他自动化客户端一样处理他们即可。

  • 取消爬虫放行待遇。 对未通过验证的 Googlebot 名称,不绕过限流、付费墙或 bot 质询。
  • 按网络而非按地址限流。 抓取程序会在同一提供商内部轮换 IP。对于 IPv6 来源,应以前缀为键,参见我们的按 /64 前缀对 IPv6 限流指南。
  • 绝不误拦经过验证的 Google 地址。 在任何黑名单规则之前先运行验证,这样宽泛的托管或 ASN 拦截规则就不会误伤真正的 Googlebot。
  • 验证真实的客户端 IP。 使用建立连接的地址;只有当转发请求头由您自己的代理或 CDN 设置时,才使用该请求头。客户端可以在 X-Forwarded-For 中写入任何内容,包括一个真实的 Googlebot 地址。
  • DNS 出错时默认放行。 如果反向查询超时,这并不能证明是假冒。回退到 IP 段文件检查,或者先放行请求,稍后再检查。
  • 保留证据。 记录声明的 User-Agent、IP 和验证结果,这样您就能衡量有多少“Googlebot”流量是真实的。

同样的模式也适用于结账和注册环节,越来越多的自动化代理在这些环节自称是知名 bot。我们关于在结账时拦截 AI 购物代理欺诈的指南展示了已验证或未验证的爬虫标记如何融入支付决策。至于 IP 查询能够和无法识别的其他 bot 类别,请参阅我们的概述:IP 数据能揭示 bot 的哪些信息。

IP 验证的不足之处

IP 段匹配能告诉您某个地址属于 Google 的爬虫。在依赖它之前,有一些局限值得了解。

  • 我们覆盖了 Google 的全部文件,并分别以各自的名称标记。 GeoIPHub 根据 19 个官方 IP 段数据源验证爬虫,其中包括上表中全部五个 Google 文件:常见爬虫、特殊爬虫以及三个用户触发的文件。2026 年 10 月 8 日,来自 user-triggered-fetchers.json 的 107.178.192.1 返回了 verified: true 和 name: "GoogleUserTriggeredFetcher",而不是 Googlebot。请检查 threat.crawler.name,而不仅仅是 verified。
  • 可能存在短暂的延迟。 Google 没有说明其文件的更新周期。我们每天重新获取这些文件,并每天重建查询数据库,因此一个全新的 Google 前缀最多可能需要大约两天才能在我们这里通过验证。DNS 检查则没有延迟。
  • 我们的记录中没有这些地址的反向 DNS。 这就是为什么上面真正的 Googlebot 会出现 no_ptr_datacenter,尽管 dig 返回了 crawl-66-249-66-1.googlebot.com。判定结果来自 IP 段列表,这是可靠的途径,但这个方法标签具有误导性。我们已将其记录为一个 bug。
  • 签名请求即将到来,但 Googlebot 尚未采用。 Google 正在其基础设施上的部分 AI 代理中测试 Web Bot Auth,它允许代理对其请求进行加密签名。它并不会为每个请求签名,Google 表示应回退到上述既有的检查方法。我们的 AI 爬虫验证指南介绍了如何验证签名。
  • 真实的 Google 地址不一定是 Googlebot。 Google 的网络 AS15169 还承载着 Google Public DNS(8.8.8.8)等服务,我们的查询将其评为普通托管地址,而不是爬虫。只有爬虫 IP 段文件才算数,因此绝不要将整个 AS15169 加入白名单。

先从您自己日志中的一个数字开始:上周有多少请求自称 Googlebot,其中又有多少 IP 通过了正向确认的 DNS 检查。两者之间的差距就是您的假冒 Googlebot 流量,而它通常比人们预想的要大。

常见问题

Googlebot 的 IP 地址是什么?

Googlebot 没有单一的 IP 地址。它从许多前缀发起抓取,这些前缀由 Google 发布在 common-crawlers.json 中,且没有说明更新周期;我们在 2026 年 10 月 5 日获取的版本列出了 317 个前缀,其中 170 个是 IPv4。Google 官方文档中的示例地址 66.249.66.1 就是其中之一。请始终对照最新文件检查地址,而不是使用硬编码的列表。

如何验证一个请求确实来自 Googlebot?

检查 IP,而不是 User-Agent。对该 IP 执行反向 DNS 查询,确认主机名以 googlebot.com、google.com 或 googleusercontent.com 结尾,再对该主机名执行正向查询,确认返回的是同一个 IP。在大规模场景下,改为将 IP 与 Google 公布的 IP 段文件进行匹配,对 Googlebot 而言应从 common-crawlers.json 开始。

Google 在哪里公布 Googlebot 的 IP 段?

在 Google 的“Verify requests from Google crawlers and fetchers”页面所链接的 JSON 文件中。Googlebot 和其他常见爬虫位于 common-crawlers.json。旧的 googlebot.json 地址现在会以 301 重定向到该文件。AdsBot 等特殊爬虫以及用户触发的抓取程序有各自独立的文件。

每个 Google IP 都是 Googlebot 的 IP 吗?

不是。Google 的网络(AS15169)还承载着其他 Google 服务,例如位于 8.8.8.8 的 Google Public DNS。只有位于爬虫 IP 段文件中的地址才是 Google 爬虫,因此基于 ASN 的白名单范围过宽。在我们的查询中,66.249.66.1 被验证为 Googlebot,而一台自称同名的 DigitalOcean 服务器则没有通过验证。

对于自称 Googlebot 但验证失败的请求,应该拦截吗?

把它们当作普通的未验证客户端,而不是 Googlebot。像对待其他 bot 一样对其限流或发起质询。不要给予它们真正 Googlebot 所享有的抓取放行待遇,同时检查您自己的规则绝不会拦截经过验证的 Google 地址。

作者

GeoIPHub 团队

GeoIPHub API 背后的团队

由 GeoIPHub 团队撰写,即构建 GeoIPHub IP 情报 API 及其扫描器的团队。草稿在 AI 辅助下完成,并由团队编辑;除非标注为示例,API 示例均为针对线上 API 的真实查询。

分享本文
更多文章

相关 文章