先接受一个前提:如果错误只在特定时段出现,事后翻看当时的日志往往已经不够。正确做法是把“捕捉证据”本身当成一个常驻动作,在错误可能出现的窗口内持续记录,而不是等到问题暴露后再去补查。对旧内容、旧系统或旧合作关系而言,这同时是一次取舍:哪些抓取路径值得继续保留并监控,哪些应当改写,哪些可以直接退出。下面按这个决策顺序展开。
不是所有时段都值得长期记录。判断依据是这段时间内是否存在仍然有价值的抓取行为。
这个判断要在动手之前完成,否则很容易把有限的人力花在已经无价值的时段上。一个实际动作是:列出该时段涉及的所有抓取入口,逐个标注保留、改写或退出,再据此决定记录哪些字段。
短暂错误最难的地方在于它不留下完整现场。可行的替代方案是让记录持续发生,而不是在出错时才触发。
具体做法是:对可疑时段的每一次请求,记录时间戳、请求路径、返回状态、响应耗时和当时生效的抓取规则版本。这里的“规则版本”是关键——如果规则在时段之间被改过,而没有记录版本,事后无法判断错误是规则导致还是服务端导致。
一个假设的例子:某旧页面在每天凌晨的一段窗口内返回异常,白天正常。若只在白天检查,会得出“一切正常”的结论。若在窗口内持续记录,可能看到异常与某项定时任务或缓存刷新在时间上重合。需要说明的是,时间重合只是线索,不能直接当成原因,还需要下一步的对照实验来区分。
这个动作的结果直接影响下一步:如果记录显示异常只在规则版本切换后出现,排查重点就落在规则;如果规则版本不变而异常仍出现,重点转向服务端或上游依赖。
捕捉到证据后,常见的误判是把时段当成原因。时段只是容器,真正的原因可能是时段内执行的某个动作。
可区分的原因至少有三类,各自的证据特征不同:
要区分它们,可以做一个注明假设的短实验:在受控条件下,只改变其中一个变量,其余保持不变,观察异常是否仍然出现。例如保持规则不变、只调整请求频率,若异常消失,则压力是更合理的解释。这个实验的价值在于把“时段相关”收窄为“某个具体变量相关”,下一步的修复才有明确对象。
退出一个旧系统或旧合作关系,不等于必须同时丢弃证据。两者可以分开。
如果决定退出,仍应保留一段时间的只读记录,用于确认退出后异常是否随之消失。若退出后异常消失,说明该时段的行为确实由被退出对象引起;若异常仍在,则说明原因在别处,退出决策本身没有解决问题。这个结果会改变下一步:前者可以结束排查,后者需要回到对照实验重新定位。
同时要清楚几条边界:robots.txt 的抓取限制不等于可靠的索引移除;站点地图不保证收录;HTTPS 不保证安全无漏洞或排名。这些约束在判断“退出是否彻底”时同样适用——限制抓取和移除索引是两件事,不能互相替代。
捕捉短暂证据的最终目的是让后来的人能复查,而不是只留下一段无法验证的描述。记录应当包含足够定位问题的字段,并保持格式一致,便于按时间排序和按路径筛选。
一个可操作的标准是:任何一条记录都能回答“什么时候、对哪个路径、当时规则是什么、结果是什么”。如果缺少其中任何一项,复查时就需要重新猜测,而猜测正是短暂错误最容易复发的原因。做到这一点后,保留、改写或退出的取舍才有可依据的事实,而不是凭印象决定。