直接答案:15 个站点先按 robots 判定,再用五个 AI 爬虫 UA 各请求一次首页。14 个站点可比较:5 个完全一致(状态、字节、标题都相同)、7 个仅字节不同(标题相同,多为动态内容)、1 个对 Bytespider 返回 403、1 个对两个 OpenAI UA 连接失败(本机经代理,原因无法确认)。另有 1 个站点 robots 全禁,五个 bot 请求全部跳过。

之前的 robots 扫描测的是“声明”,这一期测“交付”:同一路径,服务器对不同 UA 会不会给出不同结果。结论是大多数站点一视同仁,但声明与交付之间确实存在缺口。

15
站点
14
可比较站点
5
完全一致
7
仅字节差异
1
Bytespider 403
1
OpenAI UA 连接失败

方法:先问 robots,再发请求

按 sample_id 排序取前 15 个可分析首页,确定性抽样。每站先用自报 UA 重新取 robots.txt,只有某个 bot 被判为 allowed(或 robots 缺失)时,才用它的 UA 请求首页;disallowed / unknown 一律跳过,不绕。

UA 为 GPTBot、OAI-SearchBot、PerplexityBot、Bytespider、ClaudeBot,每个都带真实版本号与说明链接;每站最多 7 个请求,间隔 6 秒,20 秒超时,不带 cookie、不执行 JS。记录状态码、最终 URL、响应体 SHA-256、`<title>` 与字节数。

UA200非 200robots 跳过
自报(对照)1500
GPTBot131 连接失败1
OAI-SearchBot131 连接失败1
PerplexityBot1401
Bytespider131 个 4031
ClaudeBot1401

“robots 跳过”的 1 全部来自同一个站点:它用一条规则挡住了五个 bot,我们没有发送任何 bot 请求。

站点层面:三种结果

类型站点数表现
完全一致5五个 bot 与自报 UA 的状态、字节、标题全部相同
仅字节差异7状态与标题相同,哈希不同;多数连字节数也相同
状态差异21 个 403、1 个连接失败(见下节)
无法比较1robots 全禁,只发过自报 UA

“仅字节差异”最容易被误读。7 个站点里,多数连字节数都和自报完全一样(如 214,244 字节、137,484 字节),只是哈希不同——这更像时间戳、随机推荐或 CSRF token,而不是“给 AI 看另一套页面”。我们不把它写成 cloaking。

两个个案

Bytespider 403。 一个站点对 Bytespider 返回 403(307 字节的 Forbidden 页),对自报 UA 与其他四个 bot 返回 200、内容与字节一致。随后连测 3 次,Bytespider 仍是 403,自报 UA 仍是 200——这是明确的 UA 相关差异。但它可能是通用 WAF 规则,不推断“专门针对字节”。

OpenAI UA 连接失败。 另一个站点在用 GPTBot 与 OAI-SearchBot 请求时,本机报 ProxyError,而同站 PerplexityBot、Bytespider、ClaudeBot 与自报 UA 同时正常。连测 3 次结果一致。这无法区分是站点 WAF 断开连接,还是本地代理对这两个 UA 的处理,因此只记录现象,不结论为“站点拦截 OpenAI”。

五条可执行结论

  1. robots 允许不等于一定给内容。 本期就有 1 个站点在 robots 允许的情况下对 Bytespider 403。
  2. 先查 UA 规则,再查页面。 403/连接失败常发生在 WAF 层,与页面本身无关。
  3. 字节差异要结合标题与大小看。 同标题同大小多半是动态内容,不是 cloaking。
  4. 用真实 UA 做一次抽测。 成本低:每站 2–3 个请求就能发现明显的 UA 拦截。
  5. 记录环境。 代理、地区、时间都会影响结果;本期代理报错就是例子。

局限

  • 单次请求:WAF 与 CDN 可能按频率、地区变化;本期只对两个异常点位做了 3 次复测。
  • 代理变量:本机经 HTTP 代理访问,连接失败不能全部归因于站点。
  • 只测首页:深链、API、表单未覆盖。
  • robots 跳过:1 个站点五个 bot 全禁,实际样本更小。
  • 15 家 pilot:确定性抽样,不外推行业。

数据与复算

匿名数据:equipment-ua-response-pilot-2026.csv(90 行:15 站 × 6 UA,含 notes)。仓库内为 docs/research/2026-11-ua-response-pilot.csv。

比较逻辑:scripts/ua_response_probe.py;单元测试 scripts/test_ua_response_probe.py(9 项,无网络)。

python -m unittest scripts.test_ua_response_probe

配套阅读:30 家 robots 扫描(声明层)、robots.txt 分 bot 匹配器、24 站四层观察。

数据来源与口径

  1. robots 判定:RFC 9309:rfc-editor.org。
  2. HTTP 状态与重定向:RFC 9110:rfc-editor.org。
  3. 采样:2026-11-02 07:00 前后(Asia/Shanghai),每站最多 7 个请求、间隔 6 秒;异常点位另做 3 次复测。
关于作者

凌壹信息Official(交付团队),负责企业网站、品牌与智能制造项目的需求梳理、方案与验收协作。本文为 pilot 观察与方法记录,不构成对任何企业的评价、排名或安全判断;单次响应不代表长期行为。

测一次真实的 UA 响应

用五个 bot UA 与自报 UA 各请求一次首页,把状态码、标题与内容差异记录下来,再决定要不要改 WAF 规则。

预约 UA 抽测