结论先给:如果扫描中断时你保留了任务日志、已完成URL清单或可续跑的任务状态,就可以按“日志时间戳+已抓取URL集合+队列断点”三步界定覆盖范围;如果中断后只剩一个总数或进度百分比,没有逐条记录,那么任何覆盖结论都不可靠,只能重跑或分批补扫。
全站扫描通常包含三个环节:发现URL、抓取页面、写入结果。中断可能发生在任意一层,覆盖范围的含义完全不同。
判断覆盖范围前,先确认日志里最后一条成功记录对应的是哪一层。很多误判来自把“抓取完成数”当成“发现完成数”。
单看进度百分比不够,至少需要三类证据互相印证:
假设一次扫描目标是1万个URL,日志显示中断前完成6200条,但站点地图有8000条、内链又发现1500条未在地图中的URL。此时不能把6200当作覆盖范围,因为发现层可能还没走完,真实分母大于9500。这个例子只说明比较方法,不代表任何工具的实际表现。
把差集按目录或模板分组,能看出缺口是否集中在某一类页面。如果缺口集中在分页、筛选参数或旧栏目,说明中断恰好发生在某类链接展开阶段,补扫范围可以收窄。
一个典型反例:工具在中断后自动清理了临时队列,日志只保留最终统计,没有逐条URL记录。这时你无法区分“没发现”和“发现了但没抓”,也无法确认写入是否完整。进度百分比可能来自估算而非实际计数,继续补扫会重复劳动,且无法证明覆盖完整。
另一个失效条件是站点在扫描期间发生改版、跳转规则变化或大量删除。此时中断前后的URL集合不可直接比较,覆盖范围要按时间切片分别判断,而不是合并成一个结论。
还有一种情况:扫描被限速或封禁触发中断,日志里的失败URL会被误记为“已处理”。需要检查失败原因字段,把超时、403、连接重置的URL单独归入未覆盖,而不是算作已完成。
根据前面的证据做选择:
无论选哪条路,补扫或重跑完成后,用同一份URL清单再做一次差集,确认缺口归零或只剩明确排除的规则外页面。这个动作的结果决定你能否把本次扫描用于后续决策:差集未收敛时,任何基于覆盖率的判断都只是局部结论。