等降价、蹲补货这种事,我交给自托管的 changedetection.io 去刷

它到底能干什么

changedetection.io 的核心就一句话:你给它一堆 URL,它按你设定的频率去抓,发现内容变了就通知你。

但“变了通知你”这件事被它做得很细。它原生支持价格下跌、商品补货、页面被篡改这些场景,也能监控普通的文字改动。底层是 Python 写的,Apache-2.0 协议,完全开源。写这篇的时候最新稳定版是 0.55.8(2026 年 7 月中旬刚发),GitHub 上三万两千多 star,维护相当活跃——光最近一周就有不少提交和修复。

它监控的不只是 HTML。JSON 接口能用 JSONPath 或 jq 过滤;PDF 能追踪文本变化和文件大小;甚至连带登录态的页面,也能在抓之前先跑一段 JS 填表点按钮(官方叫 Browser Steps)。对普通人最有用的是两点:一是“只看我想看的那块”,二是“只在关键变化时才叫你”。

为什么不直接用现成的监控站

市面上有不少“网页变了提醒我”的服务,但用下来总有槽点:要么注册了才有额度,要么免费档几分钟才查一次根本蹲不到补货,要么你的监控列表、甚至你想盯的页面 URL 都留在别人服务器上。

对我来说,这种工具天然适合自托管:它常驻运行、不挑资源、数据全在自己手里。我的 NAS 本来就是 7×24 开着,顺手多跑一个容器毫无压力。部署完之后,凡是“我希望被动知道”的页面都扔进去,剩下的就是等通知。

怎么用

最简单的部署就是一行 Docker:

docker run -d --restart always -p "127.0.0.1:5000:5000" 
  -v datastore-volume:/datastore 
  --name changedetection.io dgtlmoon/changedetection.io

官方镜像默认把端口绑在 127.0.0.1,意思是只听本机——你再在前面套一层内网反代或者隧道,就能在局域网里用浏览器访问,不用直接把端口甩到公网。也支持 Docker Compose 和直接 pip 安装(pip install changedetection.io 然后 changedetection.io -d /数据目录 -p 5000)。

加一个监控(它叫 watch)就三步:填 URL、选检查频率、加过滤规则。频率可以很克制,比如每小时一次,也可以按需求调。

真正好用的是过滤器。默认它会比对整个页面,但很多页面有广告、时间戳这种每次都变的内容,会疯狂误报。你可以:

  • 用 CSS 选择器或 XPath 只盯价格那一行;
  • 用“Trigger on text”只在出现特定文字(比如“有货”“现货”)时触发;
  • 用“Ignore text”把日期、浏览量这类噪音排除掉;
  • 复杂接口直接上 JSONPath / jq。

changedetection.io 变更对比截图

蹲补货和等降价有专门的 Restock 模式:能设价格上限/下限、变化百分比阈值,只有真正满足条件才通知。等于你把“看到降价才买”的判定逻辑,直接写进了监控规则里。

changedetection.io 补货监控截图

通知和 AI 摘要

变化发生时,它支持一大票通知渠道——邮件、Telegram、Discord、Slack、Webhook 等,底层用的是 apprise 库。我用的是 Webhook 转给我的即时通讯,这样手机上第一时间就能收到“XX 降到 XX 了”。

changedetection.io 通知截图

比较有意思的是它现在能接 LLM。你可以把任意兼容 OpenAI 接口的模型(包括本地的 Ollama)接进去,干两件事:一是用自然语言写过滤规则,让 AI 判断“这次变更值不值得通知”;二是把原始的 diff 转成一句人话摘要,比如“价格从 89.99 降到 67.00”。如果你家里本来就跑着本地模型,这个功能几乎是零成本解锁的。

有什么坑

JS 渲染要额外开抓取器。很多现代页面是 JS 动态生成的,默认的快速抓取器抓不到内容,得切到 Playwright 抓取器(基于 Chromium)。这会多吃内存和 CPU,在 NAS 这种小机器上,监控数量别开太猛。

查太勤会被拦。一分钟刷几十次同一个站,轻则被限流,重则 IP 被拉黑。合理设频率,必要时给单个 watch 配代理。

动态内容误报。股票行情、实时人数、随机推荐位都会触发“变更”。过滤器一定要配,否则通知会吵死你。

数据要挂卷。监控列表和抓取历史都存在 /datastore 里,不挂持久卷重启就丢了。

中文界面有翻译,但部分新功能文案偏机翻。不影响使用,配规则时对着英文文档看一眼更稳。

小结

changedetection.io 不是什么花哨东西,但它把一个高频、无聊、容易错过的动作彻底自动化了。我的 NAS 上它和一堆其他常驻服务一起跑着,平时完全无感,只在真的有降价或补货时手机“叮”一声——这种“被动接收”比手动刷页面的体验好太多了。

如果你也经常等某个东西降价、或者蹲某个限量补货,又不想把监控列表交给第三方,花十分钟在 NAS 上起一个容器,基本就再也不用自己刷页面了。

发表评论