先给结论:中断后不要用“扫描进度条走到哪”或“报告里有没有报错”来判断覆盖范围,而要用可复核的抓取清单重新划定边界。多数工具在中断时不会把已抓取内容写成一份完整台账,进度显示的是任务状态,不是覆盖事实。真正能用的判断依据是:中断前已落地的URL记录、工具日志的时间戳、以及站点自身可对照的URL来源。把这三者交叉,才能确定哪些页面已经进入结果、哪些必须重跑。
这是中断后最常见的分歧。运营看到任务面板写着较高进度,认为大部分页面已经覆盖;技术导出明细后却发现条目明显偏少。两种理解都可能成立,因为它们说的不是同一件事。
解释一:进度百分比统计的是“已处理队列”,包含只做了初步响应、尚未写入结果表的URL。中断后这些记录可能留在临时状态,既没进报告,也不算完全丢失。
解释二:工具按批次写入,最后一批尚未提交就中断,所以明细比进度少一截属于正常的写入延迟,而非漏抓。
能区分这两种解释的证据,是看明细里是否出现“有URL、无字段”的半成品记录。若存在大量只有地址、状态码和抓取时间的行,说明它们属于已响应未完成,重跑时应优先补齐字段而不是重新抓取;若明细里完全没有这些行,说明中断发生在写入之前,这批URL需要整体重来。这个判断直接决定下一步是“补字段”还是“重抓”,两者的耗时差别很大。
中断时刻往往没有精确记录,但日志时间戳可以还原。做法是把工具输出的抓取时间列排序,找到最后一个连续时间点,之后出现明显跳跃或空档的位置,就是实际覆盖的右边界。右边界之前的URL可以视为已进入结果,右边界之后一律按未覆盖处理。
需要注意,时间戳跳跃也可能来自站点响应变慢或限速,而不是中断本身。区分方法是看同一时间段内的响应耗时分布:如果耗时整体抬高再出现空档,属于被动降速;如果耗时正常却突然断档,更接近任务被终止。这个区别影响重跑策略——被动降速时应降低并发,直接重跑容易再次触发限速。
假设一次扫描在约四十分钟处中断,日志显示前三十分钟时间戳连续、响应耗时稳定,后十分钟只有零星记录且耗时翻倍。此时合理的覆盖窗口是前三十分钟,后十分钟的记录不足以证明已完整覆盖,应按未覆盖处理。这是假设示例,用于说明比较方法,不代表任何工具的实际表现。
多个角色对覆盖范围有不同理解时,争论进度数字没有意义,应把分歧拆成可逐项核对的条目。建议按下面顺序处理:
做完这一步,团队讨论的对象就从“扫了多少”变成“哪几组URL分别怎么处理”,分歧自然收敛。
判断覆盖范围的目的,是决定重跑方式。如果半成品记录占比高、时间戳边界清晰,补抓剩余部分通常更省资源;如果明细本身残缺、时间戳无法还原边界,全量重跑反而更可靠,因为补抓容易在去重和合并环节引入新的不一致。
执行补抓时,建议先只跑一小批边界附近的URL,确认字段能正常写入、去重逻辑不会把旧记录覆盖成空值,再放开剩余队列。这个动作的结果会直接影响下一步:若小批补抓后明细条目与预期一致,可以继续;若出现旧记录被清空或重复计数,说明该工具的合并方式不适合补抓,应改为全量重跑。这一步不能省,否则错误会在大批量执行时被放大。
中断是偶发事件,但判断方法可以固定下来。每次扫描前记录起始时间、并发设置和URL来源清单;扫描中定期导出一次明细快照;中断后按时间戳边界和半成品记录两组证据划定范围。这样下次再遇到中断,不必重新争论,直接对照快照即可。
最后提醒一点:请求量归零、抓取量骤降或报告为空,都不能单独证明覆盖判断正确,它们也可能来自限速、站点临时不可达或写入延迟。只有把明细、时间戳和站点URL来源三者对上,覆盖范围才算有据可依。具体工具在中断后的保留策略和导出字段需要以实际界面和文档为准,不同版本可能不一致。