资讯文章 资讯 · NEWS
收录的站点改了名、换了域名:目录站的条目变更检测怎么搭
2026-10-24 约 1,279 字 预计阅读 3 分钟 yiyunkj
收
存活巡检跑得再勤,也只能回答一个问题:这个站还打得开吗。而目录站真正容易过期的是另一类信息——站点改名了、启用新域名了、老域名开始 301 到新地址、logo 换了、从 HTTP 迁到了 HTTPS。
这些信息过期不会报错,只会慢慢失效。等用户发现某条目点进去跳到一个不认识的地址,信任就掉了一次。

图片来源:网络,版权归原作者所有,侵权请联系删除
先决定盯哪些字段
不是页面上所有东西都值得存快照。按"变了要不要处理"筛一遍,目录站通常留下这六项:
- 最终 URL:跟着所有跳转之后落在哪个地址。这是最容易变、也最值得盯的一项。
- canonical 地址:对方自己声明的规范地址,比最终 URL 更能说明意图。
- 站点标题:首页 title 或 og:site_name,去掉前后空格和动态后缀再比。
- logo 与图标地址:图换了但名字没换的情况很常见,比对文件哈希或尺寸更可靠。
- HTTP 状态与协议:200 变 301、http 变 https,这类变化必须落库。
- 描述字段:meta description,变化频繁,通常只用来提示,不做自动改。
diff 之前先规范化
直接拿两次抓取的原文做字符串比较,误报会多到没法看。比之前先做这几步:URL 去掉跟踪参数和末尾斜杠差异、域名统一小写、标题去掉空白折叠和常见后缀、HTML 只取指定节点而不是整页、图片按内容哈希而非文件名。
整页哈希是最不该用的一种比对方式,因为几乎每个站点每次访问都有细微不同,它只会告诉你"变了",却说不清变在哪,等于没有信息。
误报主要来自这五处
| 来源 | 表现 | 怎么处理 |
|---|---|---|
| A/B 测试 | 标题或按钮文案来回变 | 连续两次一致才判定,不一致则维持原值 |
| CDN 缓存 | 不同节点返回不同版本 | 固定抓取区域,或同一轮内抓两次比对 |
| 动态内容 | 轮播、推荐位、时间戳混入 | 只取指定节点,忽略容器外的部分 |
| 个性化 | 按地区或登录态返回不同版 | 用统一的无状态请求,别带 Cookie |
| 临时故障 | 抓到错误页或空内容 | 内容为空时不更新快照,只记一次抓取失败 |
变更分三档处置
把所有变更都推给人工,队列会积压;全都自动改,改错一次就是事故。按风险分三档比较可行:
自动生效:协议升级、最终 URL 发生 301 且目标同主域、图标文件更换。这类变化不影响条目的身份,改了不会错。
进复核队列:站点标题变化、换域名(主域不同)、canonical 指向了别的域名。这些可能意味着站点被转手或者换了主体,要人看一眼。
只记录不动作:描述文案、页面字数、图片数量。留着做趋势参考,不触发任何流程。
留痕和回滚别忘了
每次生效的变更都要记下三样:变更前的快照、变更时间、变更来源(自动规则还是人工)。出问题时能一键回到上一个快照,比重新抓一次可靠。
另外给每个条目加一个"最后确认时间"字段,指的是人工最后一次看过的时间,不是最后一次抓取的时间。自动巡检跑一百次,也不代表这个条目被人核实过。
频率和礼貌
全量条目每天扫一遍对几千条规模的站是够的,但要把请求分散开,别集中在几分钟内打完;对同一目标保持最小间隔;遵守 robots.txt。检测是给自己省事,不能变成对别人的骚扰。
变更检测真正的门槛不是比对算法,是误报率。误报率压不下去,这条线最后一定会被关掉。