扫描中断后,不要先看“已扫描多少条”,而要先确认有没有一份可核对的抓取清单:如果工具在中断前已经落盘了逐条记录,你可以据此算出覆盖范围并决定是否续扫;如果只剩一个进度数字或进度条,覆盖范围就不可复原,继续在原任务上追加往往只是重复劳动,更稳妥的做法是缩小范围重扫并保留清单。
全站扫描中断的原因很多:进程被杀、网络断开、配额用尽、手动停止。不同原因留下的证据不一样,判断覆盖范围的方法也不同。你要找的是下面三类东西,而不是进度百分比。
如果只有进度计数,你无法区分三种情况:中断前跑完的范围、跑过但失败的条目、以及从未进入队列的条目。这时“已覆盖范围”这个判断本身就不成立,任何续扫都是在猜。
假设你手上有一份逐条记录(哪怕不完整),可以按下面的顺序核对。这里说的例子是假设的,用来演示比较方法,不是某个工具的实际行为。
这三个信号里,只要有一个明显异常,覆盖范围就应判定为“部分可信”,而不是“基本完成”。
判断完证据后,你要决定怎么处理这次中断的任务。三种做法各有前提,不要混用。
适用前提是:有逐条记录、记录顺序与抓取顺序一致、中断点明确、且工具支持从断点继续而不重置状态。这时续扫的代价最小,覆盖范围可以写成“中断点之前 + 续扫部分”。如果工具每次续扫都会清空已有结果,保留就没有意义。
适用前提是:记录不完整、顺序混乱,或者你其实只需要其中一部分页面。做法是把全站拆成按目录、按分页或按站点地图分片的多个小任务,每个任务单独落盘。这样即使再次中断,你也能准确知道哪一片完成、哪一片没动。代价是总耗时可能增加,但覆盖范围从此可核对。
适用前提是:你发现中断暴露的是更根本的问题,比如目标站点结构已经变化、扫描范围本身定错了、或者这次扫描的结果并不影响你接下来的决策。退出不是失败,而是避免在一个不可复原的任务上继续投入。
具体动作:在决定续扫前,先导出当前已有记录,按URL去重后与你的目标清单做一次差集。差集里包含两类:从未出现的URL,以及出现过但状态为失败或跳过的URL。
这个动作的结果直接决定下一步:
注意,扫描量归零或进度回退并不单独证明任务失败,它也可能是工具在中断后重置了会话、或者把结果写到了另一个位置。遇到这种情况,先找落盘文件,再下结论。
无论最后选择哪种处理,都建议在任务记录里写清三件事:本次实际覆盖的URL范围、判断依据(哪份清单、哪个时间点)、以及未覆盖部分的处理方式。这样下次再遇到中断,你不需要重新推断,直接看记录就能决定是续扫还是重扫。覆盖范围能不能判断,取决于中断前有没有留下可核对的逐条证据,而不是取决于工具本身是否“高级”。具体工具是否支持断点续扫、记录保存在哪里,需要以你实际使用的版本和文档为准。