扫描中断后,最危险的做法是直接点“继续”或重新开始,因为这两种选择都可能让后续判断建立在错误前提上。更稳妥的顺序是先冻结现场:不关闭当前窗口、不清理缓存、不触发第二次全站任务,然后把能证明“扫到哪”的证据找出来,再决定是续跑、补跑还是重跑。
全站扫描通常有三层进度:任务层(总任务是否结束)、队列层(还有多少URL待处理)、结果层(已经写入多少条记录)。中断可能只发生在其中一层,另外两层仍保留状态。
判断方法很直接:打开结果列表,按URL去重后统计条数,再和站点已知URL总数对比。如果结果条数明显少于预期,但队列文件仍存在,说明大概率是队列层中断;如果结果条数接近预期却出现重复或字段缺失,问题更可能在结果层。
不要只看进度百分比,那个数字可能来自任务层而非结果层。更可靠的是下面三类证据,任一类单独出现都不足以定论,需要交叉验证。
把这三类证据对齐后,你会得到一个可核对的覆盖区间,而不是一个模糊的百分比。覆盖区间才是后续决策的依据。
三种处理方式各有成立条件,不要凭感觉选。
假设一个例子:某站点已知约两千个可抓取URL,中断后结果列表去重后约一千二百条,队列剩余约七百条,两者相加约一千九百条,接近总量。这个假设下,续跑是合理选择,因为缺口主要来自队列未消费部分。如果结果只有八百条、队列也只剩两百条,缺口接近一千条,就需要先检查任务范围是否一开始就漏掉了某些子域或参数页,再决定补跑范围。
覆盖范围之外,还有两个问题会直接影响后续判断,容易被忽略。
按URL去重后统计,而不是按记录条数统计。带参数的URL、大小写差异、末尾斜杠都可能让同一页面出现多条记录。去重后条数才是真实覆盖数。
如果中断持续了较长时间,期间新增或删除了页面,那么“已覆盖范围”对应的站点状态和当前状态已经不一致。此时应记录中断前后的时间点,并对变化部分单独补扫,而不是把两次结果直接混在一起比较。
完成上述核对后,你会得到一份明确的覆盖清单:哪些URL已扫、哪些未扫、哪些需要补扫。接下来只做一件事:根据缺口大小和站点稳定性选择续跑或补跑,并在任务结束后立即做一次去重和差集校验。校验通过,这份扫描结果才具备进入分析环节的资格;校验不通过,说明覆盖范围仍不可信,应回到队列和结果层重新核对,而不是直接拿现有数据下结论。