先别急着重跑。打开扫描器留下的原始结果文件或任务日志,按“入口、已完成的层级、最后成功写入的页面、失败边界”四步还原。判断依据不是“扫描了多久”,而是结果里是否存在可验证的页面记录和明确的终止位置。只要拿到这四类信息,就能判断哪些页面值得保留、哪些必须补扫。
全站扫描中断通常有两种表现:进程被杀掉,或网络、权限、超时导致某类请求连续失败后停止。两者留下的痕迹不同。进程被杀掉时,结果文件往往是完整写入到某个页面后突然没有后续记录;连续失败停止时,日志里会出现同一类错误反复出现,然后任务退出。
你需要找的是最后一条成功写入的记录,而不是最后一条日志。日志可能记录了正在请求的页面,但该页面并未写入结果。判断方法:在结果文件里按时间或序号排序,找到最后一条带完整指标(如加载时间、资源数量、状态码)的记录,把它当作覆盖边界。如果结果文件本身是按批次写入的,还要确认最后一批是否完整落盘。
假设一个场景:扫描任务在写到第 1200 条记录时被中断,日志最后一行显示正在请求第 1201 个页面。那么实际覆盖范围是前 1200 个页面,第 1201 个及之后都没有结果。这个数字只是假设,用来说明判断方法,不代表任何工具的实际表现。
扫描器通常从一个或多个入口开始,比如首页、站点地图、栏目页或手动粘贴的 URL 列表。中断后,你手里应该有一份扫描入口清单。把这份清单与结果文件中的页面记录做比对,可以判断覆盖是“按入口顺序推进”还是“按优先级随机推进”。
这里的关键动作是:把入口清单中每个入口对应的页面在结果文件里标记为“已覆盖”“部分覆盖”或“未覆盖”。标记完成后,你才能决定是补扫缺失部分,还是直接放弃旧结果重新扫描。如果已覆盖部分集中在高价值页面,补扫成本低,可以保留;如果覆盖分散且缺失关键入口,重新扫描更省事。
中断后的结果文件不一定能用。你需要确认三件事:文件是否可解析、字段是否完整、时间戳是否连续。
假设你抽查发现最后 50 条记录的状态码字段为空,但页面地址和加载时间存在。这说明扫描器在写入状态码之前被中断,这 50 条记录只能作为“已请求但未完成”处理,不能算作已覆盖。下一步就是把它们放回待扫清单。
判断覆盖范围的目的不是还原一个精确数字,而是决定下一步动作。你可以按以下条件做取舍:
一个实际动作是:在结果文件里新建一列“处理状态”,把每条记录标记为“保留”“补扫”“忽略”。标记完成后,统计“补扫”数量。如果补扫数量超过已覆盖数量,重新扫描通常更划算;如果补扫数量很少,直接补扫。这个比较方法不需要精确的百分比,只需要看两边的大致比例。
如果决定补扫,不要直接从头开始。把最后一条成功写入的页面地址作为起点,或者把未覆盖的入口清单单独导出,作为下一次扫描的输入。同时,在扫描器设置里确认是否支持分批写入和断点续扫;如果不支持,至少把入口清单拆成多个小批次,每批完成后单独保存结果。
这样做的结果是:下一次中断时,你仍然可以用同样的四步判断覆盖范围,而不必重新猜测。对于需要退出旧系统或旧合作关系的场景,保留已覆盖页面中有价值的地址清单,比追求一次完整扫描更重要。