结论先说:扫描中断后,不要凭“跑了多久”“抓了多少条”判断覆盖范围,而应回到工具的任务记录或日志,看它是否留下了已完成对象的清单、断点位置和本轮配置。如果这三样都无法确认,这次扫描的覆盖范围就不可判定,应当视为不完整,而不是按比例估算。一个常见的反例是:任务日志显示“已处理 8000 条”,但其中可能包含大量重复 URL、跳转页或参数页,真正有效页面未必有 8000 个,因此条数不能直接等同于覆盖。
全站扫描通常要经过取 URL、请求页面、解析排名数据、写入结果四步。中断点不同,判断覆盖范围的依据也不同。
判断动作:打开任务详情,找到中断时间点对应的最后一条成功记录,记录它的对象标识或排序位置。下一步用这个位置作为续跑起点,而不是从头重跑。
单一证据容易误判,至少用以下三类信息交叉核对,才能对覆盖范围形成可用的判断。
如果三者一致,可以认定覆盖范围明确;如果结果表条数明显少于断点位置,说明存在写入丢失,应缩小续跑范围重新核对,而不是直接补跑全站。
假设某次全站扫描计划覆盖 5000 个对象,任务在日志记录到第 3200 个对象时中断,结果表中去重后只有 2900 条。此时不能认为已覆盖 3200 个,因为中间可能有 300 条因写入失败丢失。合理的做法是把续跑起点设为第 2900 条对应的对象位置,先补跑第 2900 到 3200 这一段,确认结果补齐后,再从第 3200 个对象继续。这个例子只说明比较方法,具体数字需按实际日志和结果核对。
如果工具没有保留断点记录,或者结果表在中断时被部分覆盖、清空,那么上面基于断点的判断就不成立。另一个失效条件是:本轮扫描使用了动态参数或随机抽样,每次运行的对象顺序不同,此时“第几个对象”无法对应到固定位置,只能以对象标识清单为准。遇到这两种情况,应放弃按位置续跑,改为按对象清单逐项比对,确认哪些对象已有结果、哪些没有。
需要核对工具是否提供断点续跑、结果导出和对象去重功能时,应查看该工具当前的说明文档或界面提示,不要依据旧版本经验推断。
先导出当前结果表的对象清单,与预期全站对象清单做差集,得到未覆盖对象列表。然后只对差集对象发起一轮小范围扫描,而不是重跑全站。如果小范围扫描能正常完成并补齐差集,说明中断只是偶发,可以按原计划继续;如果差集对象仍然缺失或反复中断,说明问题出在对象本身或工具配置,应先处理这些对象,再决定是否重跑。这个动作的结果直接决定下一步是续跑、补跑还是排查配置,而不是凭感觉重复全站扫描。