被删除的页面不应从历史对比中消失,而应带着“已删除”状态继续留在数据集里。具体做法取决于你能否在删除前拿到一次完整快照:能拿到,就冻结该页面的最后一份链接记录;拿不到,就只能保留它最后一次被采集时的状态,并在后续对比中把它标记为不可再验证,而不是当成零链接处理。
友情链接检测通常按页面抓取出站链接。页面一旦返回 404、410 或被重定向到站内其他地址,后续抓取就不会再产出该页面的链接清单。此时历史对比会出现一个假象:这个页面的链接数从若干条变成零,看起来像“链接被清空”,实际是页面本身没了。
两种条件对应两种保留方式:
判断依据不是页面现在返回什么,而是你手上有没有一份时间戳明确、可追溯到具体 URL 的链接清单。没有这份清单,任何“它原来有多少条友链”的说法都只是推测。
许多检测流程的问题出在数据落库环节:页面抓不到,就直接跳过,导致历史表里根本没有这条记录。正确动作是保留记录、更新状态。可以按下面的顺序处理:
http_status、fetched_at、outbound_links。removed 或 redirected,outbound_links 保留上一次成功值。这个动作会直接改变下一步:当你发现某页面被删,历史对比不再显示“友链归零”,而是显示“该页已删除,最后快照停留在某日”。你接下来要查的是删除原因和是否有替代页面承接链接,而不是去追查链接为何消失。
假设某站有 A、B 两个页面,都曾各链出 5 个友情链接。某次检测发现 A 返回 404,B 正常但链接只剩 3 个。
如果删除页面直接跳过,对比结果会变成:A 减少 5,B 减少 2,总减少 7,看起来像一次大规模清理。如果保留 A 的最后快照并标记删除,结论会是:B 确实减少了 2 条,A 是页面被删而非链接被撤。两种口径对应完全不同的排查方向——前者会让你去核对链接方是否撤链,后者应先去确认 A 的删除是否影响站内链接结构。
这个例子只用于说明记录方式如何影响判断,不构成对任何具体站点的结论。
有两类情况需要单独对待。第一类是 301 跳转到相关新页面,这更接近地址迁移,历史对比里应把新旧 URL 关联起来,让链接清单延续到新页面,而不是把旧页面永久标为删除。第二类是整站改版导致大量 URL 同时消失,此时逐个页面保留快照成本很高,可以按目录或模板归组,保留代表性页面的最后快照,并在对比说明中写清覆盖范围。
需要提醒的是,第三方估算流量、搜索引擎报告和站内统计口径并不一致,删除页面在外部工具里可能仍显示历史数据,也可能迅速归零。这些现象都不能单独证明链接被撤或页面处理正确,只能作为线索之一。真正可核查的证据链是:带时间戳的抓取记录、HTTP 状态变化、以及每次对比时使用的状态口径是否一致。
无论选择冻结快照还是标记未知,关键是在开始记录时就固定一套状态定义,并在每次对比时沿用。删除页面留在历史数据里,不是为了保留一份好看的报表,而是为了让你在下次友情链接检测时,能分清“链接被撤”和“页面没了”这两件性质不同的事。只要状态字段还在、时间戳还在,这份历史对比就仍然可用;一旦为了省事删掉行,之后再想还原当时的判断依据,成本会高得多。