先看扫描日志里最后一次成功写入的记录,再看中断时正在处理的那一批是否已提交入库。如果工具只在整批完成后写库,那么最后一条成功记录之后的所有页面都应视为未覆盖;如果工具逐条写库,则中断点之前的页面大概率已覆盖,但需要抽查确认。两种情况的判断动作不同,直接决定你是补扫全站还是只补扫尾段。
全站扫描被中断后,最常见的分歧是:进度条或日志显示已处理大部分页面,但导出或报告里的URL数量远低于预期。有人据此认为覆盖已接近完成,只是导出环节出了问题;也有人认为覆盖本身就不可信,必须从头重扫。这两种解释都成立,区别在于工具把"已处理"和"已写入"算作同一件事还是两件事。
解释一:工具在内存中累计进度,只有到批次边界或扫描结束时才批量写库。中断发生在批次中间,进度已计入但数据未落盘,导出偏少是覆盖缺失的真实反映。解释二:工具逐条写库,进度与写入同步,导出偏少是因为导出时套用了筛选条件,比如只导出有排名变化的URL、只导出特定目录、或只导出某个时间窗口内更新的记录。此时覆盖范围比导出结果大,问题出在导出口径而非扫描本身。
要区分上述两种解释,不需要重跑全站,只需核对三类证据。
这里要避免一个误判:抓取量或处理条数突然归零,不能单独证明中断点就是覆盖边界。归零也可能来自目标站点临时限流、工具主动暂停、或队列切换阶段。需要结合日志中是否出现限流提示、暂停标记来排除这些解释。
假设某站点共两千个URL,日志按每两百个一批写入。扫描进行到第1200个时中断,日志显示前六批已完成,第七批只有开始标记没有完成标记。此时可判断已覆盖约一千二百个URL,第七批的两百个URL状态未知,剩余六百个URL确定未覆盖。补扫动作应为:先重扫第七批,再扫剩余六百个,而不是全站重扫。如果日志是逐条写入,中断在第1200条,则前一千一百九十九条已覆盖,只需从第1200条继续。
这个例子里的数字只是说明比较方法,实际批大小和写入方式需要以工具日志为准。不同工具对"已处理"的定义可能包含排队、请求发出、响应解析等不同阶段,核对时以实际落盘记录为准,而不是以界面进度为准。
当多个角色对覆盖范围有不同理解时,最有效的做法是建立一个比对清单,而不是争论进度条是否可信。清单包含三列:日志中存在的URL、导出结果中的URL、以及两者差集。差集里如果出现连续区段,标记为疑似未覆盖;如果零散分布且集中在特定条件,标记为疑似导出筛选。这个清单可以直接决定下一步是补扫尾段还是调整导出条件重新导出。
如果比对后发现差集既包含连续区段又包含零散缺失,说明两种原因可能同时存在。此时先按连续区段补扫,再用放宽筛选条件的方式重新导出,两次结果合并后才能得到相对完整的覆盖视图。整个过程中,不要用单次导出数量去反推扫描是否完整,导出范围受筛选条件控制,与扫描覆盖不是同一件事。
最后需要确认工具本身的写入策略。部分工具允许配置批量写入大小或强制逐条写入,具体选项名称和位置需要在该工具的当前版本中核对,不同版本可能不同。在无法确认写入策略时,保守做法是把断点所在批次整体视为未覆盖,补扫成本通常低于漏扫带来的判断偏差。