数字营销软件:一次全站扫描被中断后怎样判断已覆盖范围

📍 WDQWDWQD987AAAAA:216.73.216.56
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /08761887582b.html
📄

数字营销软件:一次全站扫描被中断后怎样判断已覆盖范围

结论先说:中断后不能只看扫描进度条或“已处理 URL 数”,而要用可复现的边界证据判断覆盖范围——即扫描器在中断前最后写入的检查点、已抓取 URL 的分组计数、以及未处理队列是否可恢复。如果扫描器没有持久化检查点,那么“已覆盖范围”只能按最后一次完整导出的批次来界定,而不是按内存里的进度估算。

先确认中断发生在哪一层,覆盖判断才成立

全站扫描通常分三层:URL 发现(从站点地图、内链、日志中收集地址)、抓取(请求页面并读取内容)、规则评估(对已抓取内容执行检查项)。中断可能只打断其中一层。判断覆盖范围前,先看日志里最后一次成功写入的记录属于哪一层。

实际动作:打开扫描任务的日志或运行记录,找到最后一条带时间戳的写入记录,记录它对应的阶段。这个动作的结果决定下一步是恢复队列、重新发现 URL,还是只重跑评估规则。

用三个可区分原因判断覆盖是否可信

中断后常见的“看起来已覆盖”有三种来源,需要分开验证:

  1. 计数一致但集合缺失:进度显示处理了 8000 个 URL,但导出文件只有 6000 条。原因可能是部分结果写在缓存中未落盘。验证方法是比较进度计数与导出文件行数,若差值明显,覆盖范围应以导出文件为准。
  2. 集合完整但状态未知:导出文件包含全部 URL,但每条记录缺少“是否已评估”的状态字段。此时不能判断检查项是否跑完,只能确认抓取层覆盖。
  3. 检查点存在但队列不可恢复:扫描器写入了检查点,但中断导致内存队列丢失。恢复后可能从检查点继续,也可能跳过一部分未处理 URL。验证方法是恢复后先跑一个小范围抽样,对比抽样 URL 是否出现在新结果中。

假设一个场景:某次扫描在 40% 处中断,日志显示最后写入的检查点覆盖了前 3000 个 URL,导出文件有 3000 条记录,但其中 400 条缺少评估状态。此时可判断抓取覆盖约 3000 个 URL,评估覆盖约 2600 个 URL。这个数字只是示例,用来说明比较方法,不代表任何工具的实际表现。

一个反例:站点地图完整不等于全站覆盖

很多人会用站点地图文件作为覆盖基准,认为站点地图里的 URL 都被扫描过就算全站覆盖。这个判断在一种情况下会失效:站点地图本身只包含主要栏目页,而实际站点还有大量由筛选参数、分页或用户生成内容产生的 URL。这些 URL 不在站点地图中,但可能被内链或日志发现。

如果中断前扫描器已经通过内链发现了站点地图之外的 URL,那么“站点地图完整”只能说明发现层的一部分完成,不能说明抓取层覆盖了全站。反过来说,如果扫描器只依赖站点地图且未开启内链发现,那么中断后的覆盖范围确实可以按站点地图条目来估算,但需要明确这个边界条件。

实际动作:检查扫描配置中是否启用了内链发现、日志导入或参数化 URL 处理。如果启用了,覆盖判断必须把已发现但未抓取的 URL 单独列出;如果未启用,覆盖范围可以按站点地图条目核对,但要在报告中注明“未覆盖动态 URL”。

恢复扫描前先做一次小范围对照

在决定是否续跑、重跑还是只补跑缺失部分之前,先做一次小范围对照:从已覆盖集合中抽取少量 URL,手动确认它们是否真的被检查过;再从疑似未覆盖集合中抽取少量 URL,确认它们是否确实缺失。这个动作的结果会直接影响下一步:

这个对照不需要全量执行,但抽样要覆盖不同栏目、不同 URL 类型和不同深度。抽样结果只用于判断覆盖边界,不能替代全量扫描结论。

把覆盖范围写成可交接的记录

判断完成后,把结论写成一条可交接的记录,至少包含:中断时间、最后检查点位置、已覆盖的 URL 数量与来源、未覆盖的 URL 数量与来源、评估层是否完整、以及下一步动作。这样下次扫描或换人处理时,不需要重新猜测覆盖范围。

如果扫描器支持导出未处理队列,优先导出并保存;如果不支持,至少保存已发现 URL 列表和已抓取 URL 列表的差集。这个差集就是恢复扫描时最需要关注的边界。记录中不要只写“扫描了 40%”,而要写“已抓取 3000 条,已评估 2600 条,未处理队列约 1200 条,其中 400 条来自内链发现”。

最后提醒一点:中断后的覆盖判断依赖扫描器是否持久化检查点、是否区分抓取与评估、以及是否保留未处理队列。如果这些信息在中断后无法获取,那么覆盖范围只能按最后一次完整导出的批次来界定,并明确标注“无法确认中断前未落盘的部分”。具体工具是否提供这些能力,需要以你实际使用的版本和配置为准。

图1 图2

nginx