先别急着改页面。把无法复现的异常当成“待分类信号”,用同一份资料在固定条件下做三次对照:原始样本、去掉变量后的最小样本、以及规模化抽样。只有能稳定重现的差异才进入修复清单,否则先标记为误报候选并记录触发条件。
假设你有一份页面清单,某个工具对其中一页报出标题重复或抓取异常,但你在浏览器里打开正常。此时要区分三类变量:抓取环境(UA、IP、渲染方式)、页面状态(登录、地区、缓存、A/B 版本)、以及工具自身的判定口径(截断长度、忽略标签、编码处理)。把这三类写成一行备注,贴在异常条目旁边。动作是:对同一条目分别用原始 URL、加参数后的 URL、以及去掉动态片段的 URL 各查一次。结果如果只有带参数的版本异常,下一步就不是改标题,而是检查参数是否被工具当作独立页面处理。
规模化后出现例外,通常是因为个别样本的成立条件没有被写下来。取一条异常记录,删到只剩核心元素:一个静态路径、一段纯文本标题、无脚本、无重定向。若最小样本不再报错,说明原页面里有某个条件触发了判定;若最小样本仍报错,才可能是工具口径或数据源问题。这个判断会直接影响下一步:前者要回到页面找触发条件,后者要换一个独立来源交叉验证。不要把“我手动打开正常”当作反证,因为手动访问和工具抓取走的路径常常不同。
至少用两个互不依赖的来源比对同一字段。可用的证据包括:服务器返回的状态码与最终 URL、页面源码中标题的实际字符、以及站点地图里声明的地址。不能单独作为结论的证据包括:单一工具的评分变化、某次抓取量突然归零、以及你自己的浏览器缓存结果。抓取量归零也可能是限流、任务排队、或抓取窗口错开,不必然说明页面被处理。把两项以上证据一致的情况标为“可复现”,只有一项来源异常的先留在观察区。
按下面的顺序处理,每一步都写下动作和它改变的下一个判断:
这样做的结果是:误报候选不会挤占修复队列,真实异常也不会因为一次无法复现而被忽略。若复测后异常仍在,说明触发条件比最初假设更基础,下一步应转向抓取环境或工具口径,而不是继续改页面内容。
个别样本成立不等于规则可推广。把这次结论写成一条带条件的备注,例如“仅当 URL 含某类参数时该判定成立”,并注明未验证的范围:其他参数、其他目录、其他语言版本。下次批量检测时,先抽几条符合和不符合该条件的样本对照,再决定是否扩大处理。没有这条边界,一次误报的处理方式很容易被当成通用规则套到整站,反而制造新的异常。