先别急着重跑,也别直接相信界面上的“完成”或“失败”标签。判断已覆盖范围最可靠的办法,是把扫描日志、任务分片记录和实际落库数据三方对齐,看中断点之前哪些页面真正被处理并写入了结果。只有确认了覆盖边界,才能决定是保留已有数据、补扫缺口,还是整站重跑。
全站扫描被中断时,软件内部通常同时存在三种不同状态的数据,混淆它们会直接导致误判:
很多人看到任务进度条走到一半就中断,会直觉认为“至少覆盖了一半”。这个直觉经常是错的:进度条反映的可能是抓取队列的消耗比例,而不是结果写入比例。抓取快、分析慢的工具,中断时写入量可能远低于进度条显示的数字。
要判断覆盖范围,需要三类可以互相印证的证据,缺一类就只能靠猜:
假设某次扫描日志显示批次 1 到 7 完整结束,批次 8 只写了开始没有结束标记,结果表中 URL 记录到第 7 批末尾为止,且与扫描前的 URL 清单比对后差集正好对应第 8 批及之后的内容。这种情况下覆盖范围就是前 7 批,缺口清晰,补扫第 8 批及之后即可,不需要整站重跑。
确认覆盖边界后,实际决策通常落在三个选项上,各有明确前提:
一个实际动作是:先从结果表导出已覆盖的 URL 列表,与扫描前的站点清单做差集,得到缺口清单。如果缺口清单能对应到日志中未完成的批次,且工具提供“按 URL 列表扫描”功能,就补扫缺口;如果缺口清单和日志批次对不上,说明写入过程可能有问题,此时整站重跑比补扫更稳妥。这个动作的结果直接决定下一步是补扫还是重跑,而不是凭感觉选一个。
有一种与直觉相反的结果值得单独警惕:日志显示所有批次都结束了,结果表行数也接近站点 URL 总数,但抽查若干页面发现关键字段为空或明显是旧值。这通常意味着写入过程存在静默失败——批次标记完成,但部分记录没有真正持久化。
区分这种空洞和正常覆盖,可以按固定间隔从结果表中抽样若干 URL,逐个检查排名、标题、更新时间等字段是否有值、是否落在本次扫描的时间窗口内。如果抽样命中空值的比例明显高于预期,就不能把“行数接近总数”当作覆盖完整的证据。此时保留数据的风险大于重跑的成本,更适合整站重跑或至少对可疑区段重扫。
需要说明的是,抓取量或写入量归零、进度条停滞、日志无新行,这些现象都不能单独证明扫描已经正确处理或已经彻底失败。它们还可能是限速等待、目标站点响应变慢、本地磁盘写入阻塞等合理解释。判断覆盖范围最终要回到可核对的落库数据和 URL 比对结果上,而不是界面上的状态标签。
具体到某个工具是否支持按批次续扫、缺口清单如何构造、结果表字段含义是什么,需要以该工具当前的文档和实际版本为准,不同工具之间差异较大,不宜直接套用。