先给结论:中断后不要只问“跑到第几页”,而要确认三件事——扫描起点与遍历顺序、已写入结果是否完整、以及剩余范围能否用同一条件续跑。如果工具只显示一个进度百分比,它通常不足以支撑“已覆盖多少”的判断;你需要回到任务配置和结果表里找可核对的项目。
一次全站扫描被中断后,常见分歧是:执行的人看到进度条走到约六成,认为大部分页面已经扫过;使用结果的人打开导出文件,却发现结果条数远低于预期,于是判断这次扫描基本不可用。两种说法都可能成立,因为它们描述的不是同一件事。
进度条通常反映任务调度层面的推进,例如已分发的URL数量、已完成的请求批次或已处理的队列位置。结果条数反映的是最终落库或导出的记录数量,中间可能经过去重、过滤、超时丢弃、写入失败等环节。进度到六成,不等于六成页面的数据完整可用;结果条数少,也不等于前面的扫描没有发生。
把分歧拆开,通常只有两类解释。
解释一:范围缺口。中断发生在遍历尚未走完的位置,剩余URL根本没有进入队列。此时结果少是因为没扫到,继续补扫需要从断点或重新规划剩余范围。
解释二:结果缺口。URL已经进入队列并被请求,但部分响应因为超时、状态码异常、解析失败或写入中断而没有形成记录。此时范围可能接近完整,缺的是可用数据,处理方式应是重试失败项,而不是把整站重扫一遍。
这两种解释对应的动作不同:前者要补范围,后者要补结果。如果混在一起处理,常见后果是重复抓取大量已成功页面,既拖长时间,也让两次结果难以合并。
要判断属于哪一种,可以按下面几项核对。它们不依赖某个特定工具的界面,只看任务配置和结果本身。
这里有一个假设例子:某次扫描配置为跟随内链、不读取站点地图,中断时进度显示约六成。结果表里文章目录记录完整,产品目录只有零星几条,而产品目录本身有独立分页。仅看进度会认为覆盖了六成;按目录抽样后更合理的判断是:产品目录的分页尚未进入遍历,属于范围缺口。下一步应先补齐产品目录的入口和分页规则,再决定是否重扫,而不是直接对全站发起第二次任务。
判断清楚后,续跑方案要写成别人能复核的形式,至少包含以下项目:
一个实际动作是:先从结果中导出全部失败和超时记录,单独重试,而不是重跑全站。这样做的结果会直接影响下一步——如果重试后失败项大多转为成功,说明原任务是结果缺口,剩余工作只是合并;如果重试仍大量失败,则需要检查目标站点对请求频率或访问条件的限制,再调整任务参数,而不是继续加大扫描量。
分歧往往不是判断能力问题,而是每个人看的指标不同。执行者看进度,分析者看结果条数,负责人看交付时间。要让三方对同一事实有共同理解,可以在任务开始前就约定:进度只作为过程参考,覆盖范围以“结果中可核对的URL集合”为准;中断后先输出一份范围与结果的分组说明,再讨论是否重扫。
如果使用的工具提供断点续跑或任务恢复,需要先核对恢复条件是否与原任务一致,例如遍历规则、过滤条件和请求设置是否被保留。具体工具是否支持、入口在哪里、保留多久,属于需要按当前版本文档核对的信息,不宜凭印象假定。
最后提醒一点:请求量下降、抓取量归零或结果条数骤减,都不能单独证明扫描处理正确。它们也可能是目标站点响应变慢、访问被限制、任务被暂停或写入环节异常造成的。把现象和解释分开记录,续跑时才有可核对的依据,也才能在下次中断时更快判断已覆盖范围。