先给出结论:测试工具能取到 robots.txt,只说明“该工具所处网络位置和请求方式下拿到了文件”。实际用户失败通常发生在另一条路径上——DNS 解析结果不同、CDN 或 WAF 对真实浏览器特征做了拦截、HTTP 与 HTTPS 分流不一致,或该文件返回了只有特定 UA、IP、地区才触发的状态。要复现,不是再点一次测试按钮,而是把测试工具的请求条件逐项搬到真实用户侧去比对。
测试工具与真实用户的差异可以落在四个层面,每一层的证据不同:
区分方法很直接:先看服务器访问日志里有没有真实用户的这次请求。有记录且状态异常,问题在服务端策略;完全没有记录,问题在用户到服务器之间。这一步决定了后面是改配置还是改排查方向。
如果日志显示真实用户请求正常返回 200,只是测试工具因为 UA 被特殊对待而拿到不同结果,那 robots.txt 本身不需要动。此时要修的是测试方法,而不是线上文件。
可执行动作:用真实浏览器的开发者工具打开目标路径,在 Network 面板查看请求头和响应状态,与测试工具的请求头逐项对照。重点看 User-Agent、Accept-Encoding、Cookie 是否存在、以及是否经过重定向。若发现测试工具带了浏览器不会带的头,或缺少浏览器必带的头,就以浏览器请求为准重建测试条件。
这个动作的结果会直接影响下一步:如果补齐请求头后工具结果与浏览器一致,说明配置可用,退出排查;如果仍然分叉,说明差异不在请求头,需要转向网络层或客户端层。
当证据指向服务端策略时,才考虑改写。典型情形是 robots.txt 所在路径被 WAF 规则或 CDN 缓存规则误伤,导致部分用户拿到 403 或空响应。注意,robots.txt 的抓取限制不等于可靠的索引移除,所以不要用“先全站 Disallow 再放开”这类做法来掩盖访问问题,那会把抓取问题和访问问题混在一起。
假设一个场景:站点在 CDN 上为 /robots.txt 配置了“仅允许已知搜索引擎 IP”的规则,于是普通用户浏览器访问时被拒。此时改写方向不是改 robots.txt 内容,而是改 CDN 对该路径的访问策略,让所有用户都能读取。判断依据是:用多个不同网络的真实设备访问,若全部失败,问题在边缘策略;若只有部分失败,问题更可能在地区或运营商链路。
改写的代价是可能放开原本想限制的抓取来源。所以要先确认该路径是否真的需要按来源区分——robots.txt 按规范应当对所有爬虫可读,对来源做限制通常得不偿失。
有三种情况应当停止在 robots.txt 上继续投入:
退出的实际动作是:把已验证的请求条件(IP 段、协议、UA、地区)记录成一份最小复现清单,交给负责网络或 CDN 的同事,同时在自己的监控里加一条对 robots.txt 的可用性探测,覆盖至少两个不同网络出口。这样下次出现分叉时,能直接判断是新增策略还是偶发链路问题。
按以下顺序操作,每一步的结论决定是否进入下一步:
整个过程的核心是:测试工具的结果只是参照,不是事实来源。真正要复现的是真实用户那条请求路径上的每一个中间环节,包括 DNS、边缘节点、源站策略和客户端环境。只有把差异定位到具体一层,保留、改写或退出才有明确依据。