扫描中断后,不要先看“跑了多少条”,而要先固定一个可复算的核对对象:把本次任务的范围定义、已落盘的结果文件和中断时的进度记录三样东西放在一起,逐项对账。只要范围定义本身模糊,后面的数字再大也无法判断覆盖到哪。
全站扫描的覆盖范围,本质上等于“扫描入口 + 抓取规则 + 排除规则”三者共同圈定的集合。中断后第一件事,是回到任务配置里把这三项抄出来,而不是凭印象回忆。
如果这三项在中断前后被改过,那么“已覆盖范围”就没有唯一答案,必须先确定以哪个版本为准。假设某次任务最初设定深度为5,中途改成3,那么深度4、5的页面即使被访问过,也不能算进当前版本的覆盖集合。范围定义变了,覆盖分母就变了,这是判断一切比例的前提。
中断时界面显示的进度条或计数,往往只是内存中的临时状态,进程结束后可能丢失或回退。更可靠的依据是已经写入磁盘的结果文件。
可以按下面的顺序核对:
这里有一个常见分歧:界面显示已扫描8000条,但结果文件只有6200条唯一URL。差额可能来自重复URL、被排除的URL,或尚未刷盘的缓冲。此时应以文件中的唯一URL为下限,界面计数为上限,真实覆盖落在两者之间。不要用单一数字下结论。
覆盖不等于成功。一个URL被访问过,可能返回超时、403、重定向或空内容。判断覆盖范围时,需要把状态分层看:
如果中断发生在解析阶段,那么“已请求”的数量会明显大于“已解析”的数量。此时若直接拿请求数当覆盖数,会高估可用结果。可以随机抽取中断点附近的若干条记录,检查它们是否包含完整字段;如果大量记录只有URL没有解析结果,说明覆盖实际停留在获取层。
假设团队里三个人对同一次中断扫描给出三种说法:A说覆盖了全站,B说只覆盖了栏目页,C说数据不可用。可以把分歧拆成下面这张核对表(示例为假设,用于说明方法):
把四个问题分别指派给能给出证据的人,分歧就会从“谁说得对”转成“哪个数字对不上”。可核对的项目一旦列出,判断覆盖范围就从争论变成了对账。
对账之后,通常有三种处理方向,选择依据是缺口性质:
无论选哪种,都应先记录本次的范围定义和已落盘数量,作为下一次的基线。这样即使再次中断,也能快速判断是接着跑还是从头来。中断本身不是问题,无法复算的覆盖范围才是。