结论先行:如果扫描中断时留下了逐条状态记录,你可以按“已确认成功处理”的条目判断覆盖范围;如果只留下一个总进度百分比,那么覆盖范围基本不可判断,应把这次扫描视为未完成而不是部分完成。这个结论有一个重要反例:当工具把“已抓取”和“已处理”分开记录,且中断发生在抓取之后、处理之前,那么抓取日志能告诉你页面被发现的范围,却不能告诉你内容是否被真正分析过,两者不能互相替代。
全站扫描通常包含发现、抓取、分析、写入四个阶段,不同工具对阶段的命名和记录粒度不一样,具体字段需要在你使用的工具里核对。判断覆盖范围的第一步,是找到日志或任务详情里最后一次成功写入的时间点,而不是最后一次活动时间。
一个可操作的动作是:导出中断前最后一批状态记录,按“最后写入时间”排序,取时间连续且没有跳变的那一段作为可靠区间。如果中间出现时间断层,断层之后的数据不能算入覆盖范围。这个动作的结果会直接决定下一步是补扫还是重扫。
覆盖范围看起来不完整时,至少有三类原因,处理方式不同:
区分方法:看失败条目是否带有响应状态或错误码。如果失败条目集中在同一类状态上,说明是环境或权限问题;如果失败条目随机分布,更可能是超时或限流。这里要注意,失败数量归零或某项统计归零,并不能单独证明处理正确,也可能是日志未写入或统计口径变了。
假设某次扫描计划处理 5000 个地址,中断时日志显示成功写入 3200 条,失败 180 条,剩余条目没有状态记录。此时可以判断:已确认覆盖 3200 条,失败 180 条需要单独复核,剩余约 1620 条属于未知范围。未知范围不能按“未处理”直接补扫,因为其中可能有一部分已经抓取但未写入。
下一步动作是:先对 180 条失败记录按错误类型分组,如果同一类型超过一定比例,先修复该类型对应的配置再补扫;如果失败类型分散,则直接对未知范围做一次小批量试扫,确认写入正常后再全量补扫。这个顺序能避免在环境仍有问题的情况下重复消耗时间。
前面按状态记录判断覆盖范围的方法,在一种情况下不成立:工具采用去重队列或增量模式,第二次扫描会跳过上次已处理的条目。此时中断留下的状态可能被合并或覆盖,你看到的记录不再是本次扫描的真实范围。遇到这种情况,应改用任务级的独立标识来区分批次,而不是依赖全局去重结果。
另一个会使结论失效的因素是并发写入。如果多个任务同时写同一份结果,最后写入时间可能来自另一个任务,按时间排序得到的区间会混入无关数据。判断前先确认结果表是否有任务标识字段,没有的话,时间排序的可靠性要打折。
如果这次扫描的目的,是决定旧内容、旧系统或旧合作关系是否退出,那么覆盖范围不完整时不要直接下结论。先完成对已确认覆盖部分的复核,标出仍然有价值的部分;对未知范围,用小批量试扫确认写入链路正常,再决定是补扫还是直接按业务规则处理。保留哪些、退出哪些,应以已确认覆盖部分的结果为依据,未知部分单独列出待确认,不混入最终决策。