自动发帖推广工具一次全站扫描被中断后怎样判断已覆盖范围

📍 WDQWDWQD987AAAAA:216.73.216.95
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /c2b6d2f81bab.html
📄

自动发帖推广工具一次全站扫描被中断后怎样判断已覆盖范围

判断已覆盖范围不能只看扫描日志的末尾,而要把“中断点”还原成任务队列:先确认扫描是按可枚举的清单推进,还是按动态发现逐层展开。前者可以靠清单比对确认剩余部分,后者只能靠已产出的记录反推边界,并接受一定的不确定性。下面用一个假设情境把决策过程走一遍。

先分清两种扫描结构,再决定能不能算覆盖率

自动发帖推广工具的“全站扫描”通常有两种组织方式,中断后的可判断程度完全不同。

判断动作:打开任务记录,看是否存在一个独立于扫描过程、在开始前就已固定的输入清单。如果存在,覆盖率可以精确计算;如果不存在,只能给出“至少覆盖了这些”的下界,不能给出百分比。这个区分的直接后果是:清单式可以从中断处续跑并合并结果,发现式续跑会产生重复,需要先去重再决定是否重扫。

假设情境:中断后一次续跑为什么反而让范围更难判断

假设有一个自动发帖推广工具任务,对某站点做全站扫描,目标是找出所有可发布目标。任务跑到中途被中止,日志停在某个对象编号。操作者直接点“继续”,工具从断点往后跑。跑完后,记录总数比预期少,但没人能说清少的是“本来就不存在”还是“中断期间被跳过”。

这个假设里暴露的正是发现式扫描的边界问题:中断发生时,正在处理的那个对象可能已经发现了一部分下级对象但没来得及入队,续跑从断点之后开始,这批“已发现未入队”的对象就永久丢失。清单式扫描不会有这个问题,因为清单在开始前就固定了,断点前后只是同一份列表的不同区间。

可区分的证据是:把中断前后的记录按发现来源分组。如果大部分记录来自预先给定的清单,丢失风险低;如果记录大量来自“从上一个对象解析出来”,那么中断点附近就是高风险区,需要单独重扫这一段,而不是整体重跑。

用三个可核对信号反推已覆盖范围

在不重扫的前提下,可以从已有数据里找三类信号,交叉验证边界。

  1. 时间戳的连续性:把记录按处理时间排序,看中断前后是否存在明显空档。空档说明有一段时间没有产出,但空档不等于漏扫——也可能是那段时间处理的对象本来就没有下级目标。所以时间戳只能提示可疑区间,不能单独定论。
  2. 父子引用关系:如果记录里保留了“从哪个对象发现”的字段,就能画出实际的发现树。树上没有子节点的对象,要么是叶子,要么是中断时未展开。把这类对象挑出来,数量就是需要人工确认的上界。
  3. 输入清单的剩余量:如果存在固定清单,直接做差集即可。这一步最可靠,优先做。

动作与结果:先做差集,若差集为空则覆盖率可确认;若差集非空,把差集对象单独跑一遍,而不是重跑全站。这样做的结果是新增记录只可能来自未覆盖区间,不会与已有记录混淆,后续判断是否真正完成时依据更干净。

什么情况下不能照搬“续跑即完成”的做法

个别样本上,续跑看起来能补齐结果,是因为样本量小、发现层级浅,丢失的支路不明显。规模化后例外出现在这些条件同时成立时:扫描对象之间存在多层引用、中断发生在解析密集的阶段、工具没有把“已发现未入队”的状态持久化。此时续跑会系统性地漏掉中断点附近的一整层对象,而日志表面上仍是连续的。

判断是否落入这个边界,可以看一个指标:中断点前后各取一段记录,比较单位时间内新增对象的数量。如果中断后明显低于中断前,且不是对象本身变稀疏造成的,就应按“高风险区重扫”处理,而不是按“已完成”处理。反过来,如果中断前后密度接近,且存在固定清单做差集验证,续跑结果才可以当作可用范围。

把判断结果落到下一步动作上

覆盖范围判断的终点不是一个百分比,而是决定接下来做哪件事:

需要提醒的是,扫描记录数量归零或抓取量骤降,都不能单独证明处理正确。它们同样可能来自目标本身没有下级、请求被目标站点限制、或工具在中断后没有恢复队列。具体工具是否持久化中间状态、是否支持按区间重扫,需要以该工具当前版本的说明为准,不同版本行为可能不一致。把判断建立在可核对的清单和引用关系上,比依赖日志末尾的编号更稳。

图1 图2

nginx