在线推广工具:一次全站扫描被中断后怎样判断已覆盖范围

📍 WDQWDWQD987AAAAA:34.122.173.216
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ShapBot/0.1.0
🔗 /c1f00c8668e6.html
📄

在线推广工具:一次全站扫描被中断后怎样判断已覆盖范围

结论是有条件的:如果扫描任务留下了可核对的任务日志或进度记录,并且记录能对应到具体URL清单,那么你可以按“已处理清单+日志时间戳”判断覆盖范围;如果工具只显示了一个百分比进度条、中断后连已处理列表都打不开,那么这次扫描的覆盖范围实际上不可判断,只能重跑或缩小范围重跑。下面说明怎么区分这两种情况,以及一个会让判断失效的反例。

先看中断后还剩哪些可核对痕迹

判断覆盖范围不靠回忆,靠中断那一刻留下的痕迹。按可靠程度从高到低排,大致有这几类:

实际操作上,先做一件事:把工具里所有和本次任务有关的输出(日志、导出、任务详情页)全部保存下来,再动手重跑。原因是很多工具在重新发起任务时会覆盖或清空上一次的会话记录,一旦覆盖,可核对痕迹就没了。保存动作的结果直接决定你下一步是“按差集补跑”还是“整站重跑”。

用总表做差集,而不是相信进度条

覆盖范围=总表里被处理过的部分。所以你需要一份独立于工具的全站URL总表,来源可以是自己维护的链接清单、站内链接抓取结果,或从后台导出的内容列表。把日志或已完成清单与总表对齐后,未覆盖部分就是差集。

这里有个容易踩的坑:进度条显示的百分比,分母往往是工具自己估算的总量,可能包含重定向、参数页、重复URL。所以进度条到60%中断,不代表总表里60%的URL被处理过。以总表差集为准,不以百分比为准。

如果差集很小,比如只剩一小段列表页,那补跑差集就够;如果差集很大或无法对齐(URL格式、大小写、参数规范化不一致),整站重跑更省事。

一个会让上述判断失效的反例

假设你的日志里有完整的URL和处理时间,看起来覆盖范围很清楚。但如果这次扫描是并发执行的,日志写入顺序不等于实际处理顺序,而且中断时可能有若干条记录“已发出请求但结果还没写回”。这种情况下,日志末尾会缺失一批实际已处理的URL,也可能出现已处理但未落盘的重复。此时按日志尾部切分覆盖范围就会偏小或错位。

判断方法:看日志里是否存在大量时间戳相同或极接近的连续记录。如果有,说明是并发批次写入,尾部不可信,应该把最后一批整体视为“状态未知”,而不是精确的断点。这个反例说明:有日志不等于覆盖范围可精确判断,还要看日志的写入方式是否与处理方式一致。

中断原因会影响你该不该信任这次结果

不是所有中断都值得挽救。可以按原因分两类处理:

  1. 外部原因中断(网络波动、本机休眠、手动停止):已处理部分通常有效,适合按差集补跑。
  2. 工具自身原因中断(崩溃、超时、被目标站限流封禁):已处理部分可能包含不完整结果,比如只拿到响应头没拿到正文。这类情况建议缩小范围重跑,而不是直接续跑。

区分证据:看已处理记录里是否有异常状态(大量超时、空结果、重复请求同一URL)。如果异常比例明显偏高,续跑会把问题带进最终结果。

下一步动作:先补跑差集并抽样验证

确定覆盖范围后,建议的动作顺序是:先对差集发起一次范围更小的补跑,补跑完成后从补跑结果和原结果中各抽少量URL做人工核对,确认两批结果口径一致。如果抽样发现补跑结果与原结果字段、判定标准不一致,说明两次任务参数不同,此时应放弃拼接,改为整站一次性重跑。这个动作的结果会告诉你:覆盖范围是可以拼回来的,还是必须推倒重来。

如果工具本身不提供日志、导出或断点信息,具体能力需要以你所用工具的当前版本说明为准,不要假设它一定有续跑或导出功能。在无法核对的情况下,把任务拆成若干小范围分批执行,是比追求“一次全站”更可控的做法。

图1 图2

nginx