直接答案:15 个站点先按 robots 判定,再用五个 AI 爬虫 UA 各请求一次首页。14 个站点可比较:5 个完全一致(状态、字节、标题都相同)、7 个仅字节不同(标题相同,多为动态内容)、1 个对 Bytespider 返回 403、1 个对两个 OpenAI UA 连接失败(本机经代理,原因无法确认)。另有 1 个站点 robots 全禁,五个 bot 请求全部跳过。
之前的 robots 扫描测的是“声明”,这一期测“交付”:同一路径,服务器对不同 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>` 与字节数。
| UA | 200 | 非 200 | robots 跳过 |
|---|---|---|---|
| 自报(对照) | 15 | 0 | 0 |
| GPTBot | 13 | 1 连接失败 | 1 |
| OAI-SearchBot | 13 | 1 连接失败 | 1 |
| PerplexityBot | 14 | 0 | 1 |
| Bytespider | 13 | 1 个 403 | 1 |
| ClaudeBot | 14 | 0 | 1 |
“robots 跳过”的 1 全部来自同一个站点:它用一条规则挡住了五个 bot,我们没有发送任何 bot 请求。
站点层面:三种结果
| 类型 | 站点数 | 表现 |
|---|---|---|
| 完全一致 | 5 | 五个 bot 与自报 UA 的状态、字节、标题全部相同 |
| 仅字节差异 | 7 | 状态与标题相同,哈希不同;多数连字节数也相同 |
| 状态差异 | 2 | 1 个 403、1 个连接失败(见下节) |
| 无法比较 | 1 | robots 全禁,只发过自报 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”。
五条可执行结论
- robots 允许不等于一定给内容。 本期就有 1 个站点在 robots 允许的情况下对 Bytespider 403。
- 先查 UA 规则,再查页面。 403/连接失败常发生在 WAF 层,与页面本身无关。
- 字节差异要结合标题与大小看。 同标题同大小多半是动态内容,不是 cloaking。
- 用真实 UA 做一次抽测。 成本低:每站 2–3 个请求就能发现明显的 UA 拦截。
- 记录环境。 代理、地区、时间都会影响结果;本期代理报错就是例子。
局限
- 单次请求: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 站四层观察。
数据来源与口径
- robots 判定:RFC 9309:rfc-editor.org。
- HTTP 状态与重定向:RFC 9110:rfc-editor.org。
- 采样:2026-11-02 07:00 前后(Asia/Shanghai),每站最多 7 个请求、间隔 6 秒;异常点位另做 3 次复测。