先看中断前是否留下可核对的进度标记,例如已处理列表、最后一条成功记录或导出文件。若只有“扫描中”状态而没有落盘结果,就不能把中断当成“已扫完一部分”,只能视为覆盖范围未知。此时最小动作是:用同一批已知页面做一次小范围复扫,对比新旧结果,确认工具是否按固定顺序处理,再决定是重跑全站还是从断点续扫。
一次全站扫描可能中断在三个不同位置:请求层、解析层、写入层。三者的覆盖范围含义完全不同,判断方法也不同。
区分的依据是看你手里剩下什么:只有任务日志,说明大概率停在请求层;有原始HTML缓存但没有结果表,说明停在解析层;结果表条数远少于日志条数,说明写入层出了问题。三种情况对应的下一步动作不同,不能一律重跑。
假设你手头有一份30个URL的清单,其中包含首页、栏目页和几个深层文章页,并且你知道这些页面里各自埋了哪些友链。中断后,把这30个URL单独导入工具再跑一次,得到一份小结果。这个动作的目的不是补齐数据,而是校准。
对比时重点看三件事:
如果小范围复扫的结果与预期完全对不上,说明工具的处理逻辑和你假设的不一致,此时任何“已覆盖比例”的估算都不成立,应该先解决口径问题再谈续扫。
在没有完整导出、也没有后台权限的情况下,仍然可以执行一个最小动作:从已获得的结果里抽取出现频率最高的若干外链域名,逐个手工访问其来源页面,确认这些页面确实存在该链接。这一步能验证“已覆盖部分”的数据是否可信,但不能推出未覆盖部分的情况。
常见的错误推论有三种:
如果请求量、抓取量或结果条数在中断后归零,也不能单独证明处理正确。归零可能来自任务被取消、配额用尽、站点临时拒绝访问,或工具主动限速。要区分这些原因,只能看同一时间段的日志和响应状态,而不是看总数。
根据前面的核对,你会落到下面几种情形之一,对应动作也不同:
一个可操作的检验是:重跑后,把新结果与中断前残留的结果做交集比对。如果交集部分完全一致,说明工具输出稳定,可以信任续扫数据;如果交集部分出现差异,说明存在时间或状态波动,此时应把两次结果都保留,而不是合并成一份。
为了让这次中断的判断在以后还能复查,记录里至少要包含:扫描时的URL范围定义(全站、子目录还是手工清单)、中断时工具给出的最后状态、以及你用来校准的那份已知清单。缺了第一项,后面无法判断漏了哪些页面;缺了第二项,无法区分是工具停了还是任务被取消了;缺了第三项,无法验证结果口径是否一致。
这三项写清楚之后,即使这次扫描最终没有跑完,你也能明确说出一句话:在某个URL范围内、按某种处理顺序、覆盖到某个位置为止。这句话比一个没有前提的覆盖率数字更有用,因为它直接决定了下一步该补扫哪里、以及哪些结论暂时不能对外使用。