googlebot user agent 实测:34 个首页里 24 个返回一样的字节,3 个把门关了
googlebot user agent 是一行谁都能写的字符串。对 34 个首页各抓两次,24 个对浏览器 UA 和 Googlebot UA 返回一模一样的字节,3 个给得更少,3 个用 403 把假 Googlebot 挡了。

实测 · 2026-10-09 · 34 个首页 · 两个 user agent
样本 / 口径:沿用本站自 2026-08-15 的固定 34 域面板,每个首页在 2026-10-09 抓两次——一次用 Chrome 浏览器 UA,一次用 Googlebot UA,同一台机器,不渲染、不重试。有 4 个站对浏览器 UA 也返回 403,剔除,剩下 30 个站可比。
googlebot user agent 就是你自己往请求头里写的一行字:不需要钥匙,抄一份就能发。我们拿它和普通浏览器 UA 分别抓了 34 个首页,结果几乎什么都没变——能比的 30 个站里,24 个给两种字符串返回了一模一样的字节,3 个返回的页更小,还有 3 个干脆用 403 把假 Googlebot 挡在门外。一句话:user agent 是个标签,不是钥匙。
怎么测的
每个域名每个 UA 发一次 GET,不重试、不跑 JS、不渲染。面板是一组面向开发者、新闻和 SaaS 的首页,外加我们自己运营的四个站,不是全网的随机抽样,所有计数都读成「这 30 个里」。我们记下状态码、解压后 HTML 的字节数、页面的 <title>,以及去掉标签后的可见正文长度。
两次抓取之间,唯一不同的就是那行字符串。浏览器 UA 是普通的 Chrome 126;第二个是公开、可照抄的 Googlebot 移动端 UA:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1;
+http://www.google.com/bot.html) Chrome/126.0 Safari/537.36
有一条前提要先说清楚,它决定了下面那些 403 该怎么读。我们的请求全来自同一个数据中心 IP,而真正的 Googlebot 来自 Google 公布的 IP 段、反向 DNS 也对得上。任何按 IP 做校验的站,都会把我们这条「Googlebot」当成冒充者——这正是那道校验存在的意义。所以这里的 403 只能说明该站不轻信字符串,不能说明它把真 Googlebot 挡了。
googlebot user agent 换来了什么
34 个首页里,有 4 个对浏览器 UA 也回 403——nytimes.com、stackoverflow.com、medium.com、canva.com 拦的是数据中心地址,跟 UA 无关,无从比较,剔除。剩下 30 个正常响应浏览器抓取,Googlebot 抓取相对它们的表现如下:
| 结果 | 首页数 | 含义 |
|---|---|---|
| 字节完全一致 | 24 | 服务器根本不看 user agent |
| 字节数不同 | 3 | 服务器按 user agent 改返回 |
| 对假 Googlebot 回 403 | 3 | 站点拒绝自封的 Googlebot |
真正有差异的只有六个站,其中三个值得点名。Google 自己的首页给 Googlebot 字符串返回 66,485 字节,给浏览器返回 298,383 字节——自家服务器上,HTML 少了约 78%。slack.com 对 Googlebot 少了约 12 KB,github.com 只差 1 个字节,那更像是一处随机数或时间戳,不是有意为之。剩下三个是拒绝。
| 站点 | 浏览器 | Googlebot UA | 差值 |
|---|---|---|---|
| google.com | 200 · 298,383 B | 200 · 66,485 B | −231,898 B |
| slack.com | 200 · 252,783 B | 200 · 252,764 B | −19 B |
| github.com | 200 · 577,246 B | 200 · 577,245 B | −1 B |
| notion.com | 200 | 403 | 拒绝 |
| reddit.com | 200 | 403 | 拒绝 |
| en.wikipedia.org | 200 | 403 | 拒绝 |
其余 24 个首页——从 mozilla.org、bbc.com 到 stripe.com、figma.com,再到我们自己的四个站——两种字符串拿到的 HTML 一个字节都不差。这才是常态,也是对的:一个对谁都是同一份的页面,服务器没有理由去读 user agent。
这对你意味着什么
由此有两条该做的、两条别做的。该做的第一条:日志里出现「Googlebot」并不能证明真爬虫来过,伪造的字符串在日志里长得一模一样,唯一可靠的判据是反向 DNS 加 Google 公布的 IP 段,做法见 googlebot ip 怎么验。该做的第二条:对每个 user agent 都发同一份 HTML。别做的那条更尖锐:不要按 user agent 字符串给不同内容。那行字谁都能伪造,它也不是 Google 用来识别自己的机制,按它变页面就是伪装(cloaking)的形状。
- 记 user agent,但采信之前先验——反向 DNS 加公布的 IP 清单。
- 对所有 user agent 发同一份 HTML;如果某类爬虫确实需要更少的标记,那是渲染问题,不是 UA 问题。
- 别拿 user agent 字符串当门禁,它是自封的,谁都能照抄。
- 别把你伪造 Googlebot 换来的 403 读成「这站挡了 Google」——从数据中心 IP 发,那恰恰是它在做对的事。
常见问题
你们是怎么测的
2026-10-09,对 34 个首页各抓两次:一次用 Chrome 浏览器 UA,一次用公开的 Googlebot UA 字符串,都在同一台机器上,比对状态码、解压字节数和 <title>。不渲染、不重试。原始计数就是上面两张表。
Googlebot 看到的页面和普通浏览器不一样吗
在这批站上,通常一样。30 个可比的首页里 24 个对两种字符串返回了相同字节。例外是 Google 自家首页给 Googlebot 发了更小的页,以及三个站直接拒绝。没有一例是「给 Googlebot 更多或更丰富的内容」。
我把 UA 改成 Googlebot,就能看到 Google 看到的东西吗
不能,这正是这次测试要说明的。user agent 字符串只是众多信号之一,而 Google 真正用来验证的还不是字符串——是 IP 地址和它的反向 DNS。你从自己电脑发一条带 Googlebot 字符串的请求,到服务器那儿看起来就是个冒充者,本站三个站就是这么回你 403 的。
为什么有四个站连浏览器抓取也挡了
因为它们挡的是数据中心 IP,不是 user agent。nytimes.com、stackoverflow.com、medium.com、canva.com 对一条普通 Chrome UA 同样回 403,因为来源地址明显不是家常访客。这是普通的机器人管理,也提醒一句:任何「我抓了一下、拿到 403」的结论都要小心,挡住你的往往是「从哪来」,不是「自称是谁」。
这次测试诚实的边界是:我们发的是一行字符串,不是一个真爬虫。notion.com、reddit.com、en.wikipedia.org 会不会给来自 Google 真实 IP 段的请求返回别的东西,我们无从知道,因为我们造不出那样的请求。数据能说明的更窄,但仍然有用——user agent 字符串本身能改变的东西很少,真改了,也只是拒绝或更小的页,从不是更丰富的内容。把力气花在这里划不来;如果你要的是让爬虫读到你的内容,真正值钱的是可达性那一环,这正是 AI 爬虫实际读到了什么 和 AI 爬虫可达性检查 在做的事。


