先给结论:测试工具通常只验证“该工具所在网络位置、以该工具声明的身份”能否取到 robots.txt 或目标 URL,它不覆盖用户端的 DNS 解析、CDN/WAF 判定、Cookie/登录态、地区线路和客户端渲染。要复现,必须把“工具通过”拆成可枚举的变量,再逐项在接近真实用户的条件下重放,而不是反复点测试按钮。下面用一个假设情境说明取舍。
假设某站点把 robots.txt 放在根目录,测试工具返回 200 且规则允许抓取,但真实用户访问某些页面时看到拦截页或空白。此时有两种看似合理的做法:做法 A 是直接改 robots.txt 放宽规则;做法 B 是先不动规则,改用能控制来源、身份和地区的请求复现失败。选择依据是:如果失败只出现在特定网络、特定 UA 或特定登录态,改 robots.txt 既无效又会扩大可抓范围;只有当失败在所有条件下都指向同一路径规则时,A 才成立。代价是 B 更慢,但能避免误改。
多数在线 robots 测试工具做的是:从它自己的出口 IP 请求 robots.txt,按它内置的解析器判断某条 URL 是否被 Allow/Disallow。它不会携带你用户的 Cookie,不会经过你用户的运营商线路,也不一定执行 JavaScript。因此“工具能访问”只能证明那份文件在那个位置可读、且规则文本没有语法硬伤,不能证明用户端链路通。要复现,先记录工具返回的状态码、实际取到的文件内容、请求的 User-Agent,再拿这些作为基线去比对用户侧。
一个常见误判是把 robots.txt 的 Disallow 当成“页面已从索引移除”。抓取限制不等于可靠的索引移除:被 Disallow 的 URL 仍可能因外链等原因出现在结果里,只是摘要信息受限。所以复现时不要把“用户搜不到”与“用户打不开”混为一谈,前者要另查索引状态,后者才是链路问题。
复现的核心是控制变量,一次只改一个。可按下面顺序排查,每步都记录结果,再决定下一步:
curl -I 类方式看完整跳转链和最终状态码。robots.txt 只约束抓取路径,不处理登录跳转或 302 到验证页。假设第 1 步换网络后恢复正常,那么可以判定失败与 robots.txt 无关,下一步应转向 CDN/WAF 的规则日志,而不是修改 Allow/Disallow。这个动作的结果直接决定后续排查方向:链路问题查边缘配置,规则问题才回到文件本身。
选做法 A(改 robots.txt) 成立的条件是:失败在多种网络、多种 UA、带与不带登录态时都稳定出现,且日志显示请求被同一路径规则挡住。代价是放宽后可能让本不该抓的目录暴露,且若根因在 WAF,改动只是掩盖现象。
选做法 B(先复现再改) 成立的条件是:失败只在部分条件出现,或你无法确认工具与用户走的是同一条链路。代价是需要可控制的测试出口和更多时间。对多数“工具通过、用户失败”的案例,B 更稳,因为差异本身说明存在工具未覆盖的变量。
还需注意:站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名提升。这些都不能用来解释“用户打不开”,排查时不要把它们当作复现依据。不同搜索引擎对 robots 的支持细节要分别核查,不要用一家工具的结果推断所有抓取方。
复现成功的标志是:你能在受控条件下稳定重现失败,并指出是哪个变量触发的;把该变量改回工具条件后失败消失。此时再决定是否动 robots.txt。若统计上某类请求量归零,也不能单独证明处理正确——它可能来自缓存、线路抖动或客户端未发起请求,需要结合状态码和跳转链一起看。最后用同一组条件再跑一遍,确认结论可复查,再进入修复。