判断已覆盖范围,不能只看工具最后停在哪个页面,而要把“已完成的输出”与“未完成的队列”分开:先确认中断前已经落盘的结果覆盖了哪些URL、哪些字段,再决定是补扫剩余部分还是整站重扫。如果结果文件完整、有断点记录或可导出已处理清单,通常可以续扫;如果结果只存在内存、没有处理日志,最稳妥的做法是缩小范围重扫,而不是凭页面进度条猜测。
全站扫描中断后,进度条、日志末尾和结果文件给出的信息并不等价。进度条往往只反映当前任务在浏览器或客户端中的状态,中断后可能停留在某个百分比;日志末尾可能只记录了最后一个开始处理的URL,而不是最后一个成功写入的URL。真正能用来判断覆盖范围的,是已经生成的结果文件或数据库记录。
你可以先做这个动作:打开结果导出文件,按URL字段排序,统计去重后的URL数量,并与扫描前准备的URL清单对比。如果导出文件里有“处理时间”或“状态”字段,再按时间排序,找到最后一条成功记录。这样得到的覆盖范围是“已落盘结果”,而不是“工具曾尝试访问的范围”。
这一步的结果会直接影响下一步:若导出文件中的URL数量与清单差距很小,且缺失部分集中在扫描顺序的尾部,可以只补扫缺失段;若导出文件为空或字段残缺,说明中断发生在结果写入之前,继续补扫可能造成重复或遗漏,应改为重新规划扫描范围。
同样是“扫描被中断”,发生在不同阶段,覆盖范围的判断方法不一样。可以用下面三类证据来区分:
假设一个场景:你扫描了500个URL,中断后导出文件中有480条记录,其中30条缺少外链数量字段。此时已覆盖的抓取范围是480个URL,但可用于分析的范围只有450条。下一步应补扫剩余20个URL,并对30条缺字段记录重跑分析,而不是把500个URL全部重扫。
判断覆盖范围时,最容易被忽略的是“扫描前有没有一份独立URL清单”。如果扫描任务本身就是从站点地图或站内链接生成的,中断后你手里可能只有工具内部的队列,没有外部参照。这时补扫容易变成凭记忆挑选页面,导致部分栏目重复、部分栏目遗漏。
可执行的做法是:先从站点地图、站内链接导出或内容管理系统生成一份URL清单,保存为文本或表格;再将工具已导出的结果中的URL提取出来,做一次差集。差集结果就是“清单中有、结果中没有”的URL。这个差集比工具显示的剩余数量更可靠,因为它不受工具队列状态影响。
得到差集后,还要检查两类特殊情况:一是带参数的URL是否被工具归一化处理,导致差集中出现大量看似缺失、实际已覆盖的地址;二是重定向URL是否只记录了最终地址,导致原始地址在差集中出现。若差集中主要是这两类,补扫范围可以进一步缩小。
不同外链工具对中断任务的处理方式不同,有的支持从上次进度继续,有的只能新建任务。具体是否支持、入口在哪里,需要以你所用工具的当前说明为准,不能套用其他工具的经验。
在决定续扫前,先核对三件事:
如果工具不支持断点恢复,但已导出结果完整,可以把已完成的URL清单作为排除条件,新建一个只包含差集URL的任务。这样做的结果是:新任务范围更小,中断风险更低,且不会覆盖已有结果。若工具既不支持断点恢复,也无法导入排除清单,那么缩小到按栏目或按目录分批扫描,通常比整站重扫更容易判断每批的覆盖范围。
无论最终选择续扫还是重扫,都建议在动作完成后记录三个数字:扫描前清单中的URL总数、本次实际写入结果的URL数、差集补扫后的URL数。这三个数字不需要追求完全相等,但要能解释差异来源,例如参数归一化、重定向合并、页面返回错误等。
这样做的实际影响是:下一次再遇到中断,你可以直接拿这份记录对比,而不是重新猜测哪些页面已经处理过。覆盖范围一旦能被核对,补扫和重扫就不再是二选一的直觉判断,而是根据差集和字段完整度做出的具体决定。