网页推广软件一次全站扫描被中断后怎样判断已覆盖范围

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

网页推广软件一次全站扫描被中断后怎样判断已覆盖范围

扫描中断后,不要只看进度条停在哪,也不要因为日志里最后一条记录是某个URL就认定它已处理完。更可靠的做法是:把中断前已经落盘的结果按“已确认、待复核、未触及”三档分开,再用可复现的抽样请求去验证边界,而不是凭一次统计数字下结论。

矛盾现象:进度显示接近完成,结果却集中在前半段

网页推广软件的全站扫描通常按队列推进,进度百分比往往按“已出队”而不是“已写入结果”计算。中断发生时,可能出现两种互相矛盾的表现:进度显示已到八成,但导出的结果只覆盖了首页、栏目页和少量详情页;或者进度只显示三成,却已经拿到大部分重要页面的数据。这两种情况都不说明扫描本身失败或成功,只能说明中断点落在不同的处理阶段。

因此,判断覆盖范围的第一步不是看百分比,而是看结果文件里是否存在可区分页面的稳定标识,例如规范化后的URL、页面标题或内容指纹。只有这些标识存在,后续的比对才有依据。

两种解释:是“队列已排空但未写盘”,还是“写盘了但队列未排空”

中断后的状态通常可以归为两类解释。

解释一:结果已经写入,但队列没有跑完。这种情况下,已落盘的数据是可信的,覆盖范围就是结果文件中出现的页面集合。中断只是让剩余页面没有被抓取,而不是让已抓取的数据失效。判断依据是:结果文件能正常打开、字段完整、同一URL没有出现互相冲突的多条记录。

解释二:队列已经出队,但结果没有写入。这种情况下,进度看起来很高,实际可用的数据却很少。判断依据是:结果文件明显偏小、时间戳集中在中断前一小段、或者大量记录只有URL没有正文摘要。此时不能把进度当作覆盖范围。

还有一种容易被忽略的中间状态:部分页面抓取成功但解析失败,结果里只有空壳记录。这类记录既不能算已覆盖,也不能直接算未覆盖,需要单独归入“待复核”。

能区分两种解释的证据:时间戳、标识完整度和抽样回查

要区分上面两种解释,可以按顺序检查三类证据。

  1. 写入时间戳的分布。如果结果记录的时间戳从扫描开始一直均匀分布到中断时刻,说明写盘和抓取基本同步,覆盖范围接近结果文件本身。如果时间戳集中在开头很短一段,后面大段空白,更可能是队列空转而没有写盘。
  2. 页面标识的完整度。随机抽取结果中的若干条记录,检查是否同时具备URL、标题和至少一段可读内容。只有URL没有内容的记录,应归入待复核,而不是已覆盖。
  3. 抽样回查。从结果中取少量页面,用同一软件对单页重新扫描一次,对比两次得到的字段是否一致。如果单页扫描能补全字段,说明原记录只是写入不完整;如果单页扫描也拿不到内容,说明该页面本身可能已失效或需要登录,与中断无关。

这里的关键动作是抽样回查,而不是重新跑全站。抽样回查的结果会直接决定下一步:如果补全后字段一致,说明已覆盖范围可信,只需补扫剩余部分;如果补全后差异很大,说明结果文件本身不可靠,应放弃这次结果,重新规划扫描范围。

一个假设例子:怎样用边界页面确认覆盖到哪里

假设某站点有首页、十个栏目页和若干详情页,扫描在中断前导出了三百条记录。可以从结果中找出最后五条记录,记录它们的URL,然后单独扫描这五个页面。

这个例子的数字仅用于说明比较方法,不代表任何真实站点的规模或软件的固定表现。

决定下一步:先补扫还是先重建任务

判断完覆盖范围后,通常只有两个方向可选。

选择补扫,成立的条件是:结果文件字段完整、抽样回查一致、未覆盖部分有明确的起始边界。此时可以只针对缺失区间重新扫描,保留已有结果,避免重复劳动。

选择重建任务,成立的条件是:结果文件字段大面积缺失、同一URL出现冲突记录、或者抽样回查无法复现原结果。此时继续补扫只会把不可靠的数据混在一起,不如清空结果、调整写入策略后重新扫描。

无论选哪一种,都应在补扫或重建之前,先把这次中断的边界页面单独记录一份清单。这份清单既是下一次扫描的起点,也是判断新结果是否接得上的参照。如果新扫描完成后,边界页面仍然缺失或字段异常,问题就不在中断本身,而在扫描配置或目标站点的可访问性上,需要回到配置层面排查,而不是反复重跑。

图1 图2

nginx