先给结论:当源站返回的 robots.txt 正常、而边缘节点返回的内容不同,最该保留的不是“哪边错了”的判断,而是能证明差异确实存在、差异范围有多大、以及差异持续了多久的证据链。至少保留三类材料:同一时刻从不同网络位置取得的响应快照、边缘节点与源站的响应头对照、以及能说明影响范围的时间序列记录。下面用一个假设情境把决策过程走一遍。
假设某站点把 robots.txt 放在源站,前面挂了一层 CDN 或边缘缓存。运维在办公室网络访问 https://example.com/robots.txt,看到的是最新版本,允许抓取全站;而抓取诊断工具从另一个地区请求同一地址,拿到的是三天前的旧版本,里面还留着一条 Disallow: /。源站日志显示文件早已更新,边缘节点却仍在返回旧内容。此时不能只截一张图就下结论,因为“一个样本异常”和“规模化异常”是两回事。
要证明差异存在,必须让不同来源的请求尽量落在同一时间窗内,否则先后顺序会混淆因果。具体动作是:在几分钟内分别从源站直连、至少两个不同地区的边缘节点、以及你自己的办公网络请求同一个 robots.txt 地址,把每次响应的完整正文和响应头一起保存下来。保存时记录请求时间(精确到分钟即可)、请求所用的出口 IP 或网络位置、以及返回的 HTTP 状态码。
这一步的结果会直接决定下一步:如果只有某一个边缘节点返回旧内容,问题范围就收窄到该节点或该地区的缓存策略;如果多个边缘节点都返回旧内容,才需要往缓存刷新机制、回源配置或中间层规则去查。不要用“我这边是好的”当作反驳证据,因为不同网络位置本来就可能命中不同缓存。
正文相同不代表行为相同。要保留边缘节点返回的响应头,重点看缓存相关的字段,例如缓存命中标记、缓存过期时间、以及内容版本标识。把边缘节点返回的头与源站直连返回的头并排记录,能帮助判断这是“缓存了旧副本”还是“中间层改写了内容”。
这里有一个常见误区需要点明:robots.txt 的抓取限制不等于可靠的索引移除。即使你通过 robots.txt 屏蔽了某个路径,已经存在的索引结果未必会因此消失;反过来,边缘节点返回旧 robots.txt 也不自动等于搜索引擎一定按旧版本执行。不同搜索引擎对 robots.txt 的缓存时长和处理方式并不一致,须分别核查,不能拿一个引擎的表现推断另一个。
单次快照只能说明“此刻有差异”,无法回答“持续了多久、影响了多少抓取”。要保留的证据包括:边缘节点返回旧内容的首次和末次观测时间、期间源站文件的修改时间、以及能反映抓取请求量的日志片段。如果站点有抓取日志,可以按天统计对 robots.txt 的请求次数和返回状态,观察异常是否与某次发布或缓存刷新时间点重合。
需要克制的一点是:抓取量下降或 robots.txt 请求量归零,不能单独证明处理正确。它还有别的合理解释,比如抓取预算本身波动、站点整体流量变化、或者搜索引擎调整了抓取节奏。只有把日志变化与响应内容差异放在同一时间轴上,才能形成可复查的关联,而不是把统计相关当成因果。
这个顺序的价值在于:如果先刷新缓存再取证,差异可能消失,之后既无法证明问题存在过,也无法判断修复是否真的生效。保留证据的目的不是追责,而是让下一次出现同类异常时,你能用同样的取样方法快速确认它是不是同一个问题。
如果站点没有边缘节点,robots.txt 直接由源站提供,那么“源站正常而边缘异常”这个前提本身不成立,应转向检查源站自身的发布流程和权限。如果差异只出现在某一个抓取工具的缓存里,而多个独立网络位置都拿到正常内容,那更可能是该工具的缓存问题,而不是站点边缘节点的问题。另外,站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名提升,这些都与本文的取证问题无关,不应混进同一份证据清单里。把适用条件写清楚,才能让这套取证方法在真正需要的时候站得住。