友情链接检测:被删页面数据如何留在历史对比里

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

友情链接检测:被删页面数据如何留在历史对比里

被删除的页面不应从历史对比中消失,而应带着“已删除”状态继续留在数据集里。具体做法取决于你能否在删除前拿到一次完整快照:能拿到,就冻结该页面的最后一份链接记录;拿不到,就只能保留它最后一次被采集时的状态,并在后续对比中把它标记为不可再验证,而不是当成零链接处理。

先分清两种删除条件,再决定保留哪种数据

友情链接检测通常按页面抓取出站链接。页面一旦返回 404、410 或被重定向到站内其他地址,后续抓取就不会再产出该页面的链接清单。此时历史对比会出现一个假象:这个页面的链接数从若干条变成零,看起来像“链接被清空”,实际是页面本身没了。

两种条件对应两种保留方式:

判断依据不是页面现在返回什么,而是你手上有没有一份时间戳明确、可追溯到具体 URL 的链接清单。没有这份清单,任何“它原来有多少条友链”的说法都只是推测。

实施动作:给每条记录加状态字段,而不是删行

许多检测流程的问题出在数据落库环节:页面抓不到,就直接跳过,导致历史表里根本没有这条记录。正确动作是保留记录、更新状态。可以按下面的顺序处理:

  1. 抓取时对每个目标 URL 记录 http_status、fetched_at、outbound_links。
  2. 遇到 404、410 或跳转到非原地址时,把该 URL 标记为 removed 或 redirected,outbound_links 保留上一次成功值。
  3. 对比时先按状态分组,只对状态为正常的页面计算链接增减,删除页面单列展示。

这个动作会直接改变下一步:当你发现某页面被删,历史对比不再显示“友链归零”,而是显示“该页已删除,最后快照停留在某日”。你接下来要查的是删除原因和是否有替代页面承接链接,而不是去追查链接为何消失。

一个假设的短例子:两种口径带来的不同结论

假设某站有 A、B 两个页面,都曾各链出 5 个友情链接。某次检测发现 A 返回 404,B 正常但链接只剩 3 个。

如果删除页面直接跳过,对比结果会变成:A 减少 5,B 减少 2,总减少 7,看起来像一次大规模清理。如果保留 A 的最后快照并标记删除,结论会是:B 确实减少了 2 条,A 是页面被删而非链接被撤。两种口径对应完全不同的排查方向——前者会让你去核对链接方是否撤链,后者应先去确认 A 的删除是否影响站内链接结构。

这个例子只用于说明记录方式如何影响判断,不构成对任何具体站点的结论。

例外:重定向与整站改版不能一律按删除处理

有两类情况需要单独对待。第一类是 301 跳转到相关新页面,这更接近地址迁移,历史对比里应把新旧 URL 关联起来,让链接清单延续到新页面,而不是把旧页面永久标为删除。第二类是整站改版导致大量 URL 同时消失,此时逐个页面保留快照成本很高,可以按目录或模板归组,保留代表性页面的最后快照,并在对比说明中写清覆盖范围。

需要提醒的是,第三方估算流量、搜索引擎报告和站内统计口径并不一致,删除页面在外部工具里可能仍显示历史数据,也可能迅速归零。这些现象都不能单独证明链接被撤或页面处理正确,只能作为线索之一。真正可核查的证据链是:带时间戳的抓取记录、HTTP 状态变化、以及每次对比时使用的状态口径是否一致。

把状态口径固定下来,历史对比才有意义

无论选择冻结快照还是标记未知,关键是在开始记录时就固定一套状态定义,并在每次对比时沿用。删除页面留在历史数据里,不是为了保留一份好看的报表,而是为了让你在下次友情链接检测时,能分清“链接被撤”和“页面没了”这两件性质不同的事。只要状态字段还在、时间戳还在,这份历史对比就仍然可用;一旦为了省事删掉行,之后再想还原当时的判断依据,成本会高得多。

图1 图2

nginx