先给结论:中断后不要凭“扫到第几页”估算覆盖,而要回到任务的输出记录,用“已产出结果 + 未完成队列 + 可重跑范围”三者交叉判断。最稳妥的做法是:先冻结现有结果,再抽取边界样本做一次小范围复核,确认断点前后的数据是否一致,然后只补跑未覆盖部分,而不是整站重来。下面用一个假设情境把决策过程拆开。
假设你用一款友链检查工具对某个站点做全站扫描,任务跑到第 40 分钟时浏览器标签被关闭或进程退出。工具留下的信息可能只有:已检查 URL 数、已发现的外链数、一个进度条,或者一份中途导出的 CSV。此时“覆盖了多少”不能只看进度条百分比,因为进度条可能按 URL 总数计算,而友链检查真正的覆盖对象是“页面里的出站链接”,两者不是一回事。
判断覆盖范围的第一步,是把已有产物按“页面—链接”两层拆开。如果导出文件里既有来源页 URL,也有目标链接 URL,那你至少能知道哪些来源页已被处理过;如果只有目标链接列表,没有来源页,那覆盖判断就只能退回到“重跑并对比数量”这种更粗的方式。
中断后最怕的是“看起来完整、实际有缺口”。可以按下面三类证据逐项核对:
需要说明的是,抓取量突然归零、进度停在某个数字,并不必然代表那之后的页面没被处理。进程退出、网络超时、目标站返回 403/429、甚至工具自身的写入缓冲未刷新,都会造成类似的表面现象。所以这些现象只能作为线索,不能单独当作“覆盖已完成”或“覆盖已丢失”的结论。
假设导出文件显示已处理 1200 个来源页,而站点地图里约有 3000 个页面。此时不要直接补跑剩余 1800 个,因为中断点未必正好落在这条分界线上。更合理的动作是:从“已处理”和“疑似未处理”的交界处各抽 20~30 个页面,用同一款友链检查工具单独跑一次。如果交界处的已处理页面结果与首次一致,而疑似未处理页面确实没有记录,那就可以把补跑范围定为“未出现在来源页列表中的 URL”,并跳过已确认的部分。
这个动作的结果会直接影响下一步:如果交界处出现大量重复或缺失,说明首次扫描的写入并不可靠,此时应放弃按断点补跑,改为整站重跑;如果交界处一致,就可以安全地做增量补跑,节省时间并降低对目标站的压力。
增量补跑最容易踩的坑,是两次扫描的判定口径不同。补跑前应确认:是否包含 nofollow 链接、是否跟随重定向、是否统计站内链接、是否按域名去重。只要其中一项与首次不同,合并后的结果就会出现无法解释的差异。
一个务实的做法是:把首次导出文件原样保留为“基线”,补跑结果单独存放,合并时只按“来源页 + 目标链接”这一对键去重。如果工具支持导出为结构化格式,优先保留这种格式;如果只能导出文本,至少在补跑前记录下当时的设置项,方便日后复核。
出现以下任一情况时,补跑的收益通常低于重跑:首次结果没有来源页字段,无法判断覆盖边界;交界处抽样发现结果与手动核对明显不符;目标站结构在中断期间发生较大变化,导致两次扫描面对的不是同一批页面。这些条件下,继续补跑只会让数据更难解释。
反过来,如果首次结果结构完整、交界处抽样一致、站点结构稳定,那么按未覆盖 URL 补跑就是更省时的选择。判断的关键始终是证据,而不是进度条上的那个数字。