先看中断类型,再看扫描器留下的状态记录:如果是任务被手动停止或超时退出,已覆盖范围通常只能从“已提交URL/已返回状态”的日志里推断;如果是进程崩溃或网络断开,则要按分片或批次边界判断,不能把最后一条日志当成全站覆盖终点。下面以你手里的一份扫描日志和站点URL清单为对象,给出可执行的处理顺序。
全站扫描一般分三层:URL发现、请求抓取、结果写入。中断发生在不同层,已覆盖范围的含义完全不同。
判断动作:打开日志,先找中断前最后一条带批次号或分片号的记录。假设日志显示“batch 17/40 completed”,那只说明前17批完成,第18批之后不能算已覆盖。这个动作的结果决定你下一步是补扫剩余批次,还是重扫整个站点。
单看一条“扫描已停止”的提示不足以定论,至少用三类证据交叉核对:
这里要注意一个反常现象:请求量归零不一定代表扫描完成,也可能是队列为空、被限流或进程已退出。三者需要靠日志级别和退出码区分,不能只凭数量下结论。
假设你手里有一份CSV日志,字段为url、status、batch、timestamp。可以按下面的顺序处理:
如果工具支持断点续扫,优先用补扫清单续跑,而不是全量重扫。全量重扫会重复请求已覆盖URL,可能触发限流,反而拉长整体时间。如果不支持续扫,就按批次边界重新组织任务,把未完成批次作为下一轮输入。
补扫完成后,不要直接拿覆盖率当结论。先确认补扫清单里的URL是否真的返回了有效状态,再确认结果写入是否完整。可以用一个小样本做核对:从补扫清单里抽若干条,手动请求并比对日志记录。如果手动结果与日志一致,说明写入层没有丢数据;如果不一致,说明问题在写入环节,需要先修复再谈覆盖范围。
只有当日志、导出文件和抽样核对三者一致时,已覆盖范围才可作为后续分析的基础。否则,宁可把范围标为“部分覆盖”,也不要把它当成全站结果使用。