先给结论:扫描中断后,不能靠“跑了多久”或“页面数看起来不少”判断覆盖范围,而要靠可核对的请求日志和任务检查点。缺少完整日志或后台权限时,仍可执行一个最小动作——把已落盘的请求记录按对象类型和批次边界做一次去重统计,得到“可确认覆盖”与“不确定覆盖”两张清单。这个结果只能说明哪些对象已经被请求过,不能推出全站数据完整,也不能证明未出现的对象就是不存在。
同样叫覆盖,实际含义可能完全不同。判断之前先确认自己手里的是哪一种:
扫描被中断时,多数人手上只有请求覆盖。如果直接用这个数字当成全站规模,后续所有比例都会偏高或偏低。更稳妥的做法是先明确本次任务的目标口径,再决定是否值得继续补跑。
全站扫描通常按对象 ID 区间、类目、时间窗口或队列分批。中断发生在哪一批、批内跑到第几个对象,是判断覆盖范围的关键。可执行的动作是:
假设一次扫描按类目分批,共 40 批,第 27 批进行到一半时中断。那么前 26 批可以进入“可确认覆盖”清单,第 27 批进入“部分覆盖”,其余进入“未覆盖”。这个划分只说明请求层面的边界。如果第 27 批里已有部分响应失败,那部分对象即使落在断点之前,也应从可确认覆盖中剔除,转入待重试清单。断点位置决定了下一步是补跑单批还是重跑全量,这个判断比总进度数字更有用。
现实里常见的情况是:任务由他人或其他系统发起,你只能看到落盘结果,拿不到请求日志。此时可执行的最小动作是反向核对——从已保存的结果中抽取对象标识,与目标范围清单做集合比对,得到“已出现”和“未出现”两部分。未出现的对象需要进一步区分原因:可能是扫描未到达,可能是请求失败,也可能是该对象本来就不在目标范围内。这三种原因仅凭结果文件无法区分。
因此,反向核对只能支持一个结论:哪些对象已经有结果可用。它不能支持“未出现即不存在”或“未出现即漏抓”。如果后续要补跑,应优先补“未出现且确认属于目标范围”的对象,而不是重跑全部,这样能把有限的请求额度用在真正缺口上。
判断覆盖范围之后,通常要在继续补跑、调整任务设计、放弃本次结果之间选择。
三种取舍没有通用优先级。如果目标只是了解大致分布,部分覆盖的样本可能够用;如果目标是对比不同对象的完整指标,缺失部分会直接扭曲结果,此时退出或重跑更合理。
有些现象看起来像“跑完了”,实际不能作为覆盖完整的证据:
这些信号可以作为线索,但不能单独下结论。把它们与批次断点、失败记录放在一起看,才能得到可用的覆盖判断。
完成上述核对后,建议输出一张简表:可确认覆盖的对象数、部分覆盖的对象数、未覆盖的对象数,以及各自的标识范围。这张表决定了下一步是补跑、改写还是退出。如果可确认覆盖已能满足当前分析目标,就直接进入分析并在结论中标注样本边界;如果缺口集中在特定批次或特定对象类型,就只补那部分;如果缺口分散且原因不明,先排查中断原因再决定是否重跑。覆盖判断的价值不在于给出一个百分比,而在于让后续每一步都有明确的对象范围可依。