changedetection.io:开源网页变更监控,从降价补货追到合规巡检
阅读时间: 大约 14 分钟
changedetection.io:开源网页变更监控,从降价补货追到合规巡检

changedetection.io(仓库 dgtlmoon/changedetection.io,官网 changedetection.io)是一个 Python 编写的开源网页变更监控工具:你给它一个 URL,它按设定间隔反复抓取、与上次内容做 diff,发现变化就经 Discord、Slack、Telegram、邮件等渠道推送提醒。它的商业化形态是作者 Web Technologies s.r.o. 运营的云订阅,走”开源获取用户、云服务变现”的路线。本文基于 GitHub 仓库 README、官网、CHANGELOG 与 API 文档做一手梳理。
一、背景:把”手动刷页面”自动化
价格监控、补货提醒、政策更新、漏洞公告、竞品页面改版——这些任务的共同模式是”人定期打开同一个页面,用眼睛判断有没有变”。这类检查频率高、单次成本低但累计耗时惊人,且极易错过窗口期(限量补货、限时降价)。商业监控服务(如 Visualping、Distill Web Monitor 等)普遍按月收费且把数据握在自己手里;changedetection.io 的切入点就是把这套抓取—diff—通知流水线完整开源,让用户可以自托管,同时提供托管云服务省去运维。
二、核心概念:Watcher、Fetchers 与 Diff
系统的基本单位是 Watcher(监控项):一个 URL 加一组抓取、过滤、触发、通知规则。每次轮询经历三步:
- 抓取(Fetch):按 Watcher 选择的 fetcher 取页面;
- 过滤(Filter):只保留关心的文本片段;
- 比较(Diff):与上次快照比对,命中触发条件则通知。
抓取器分两类:快速内置 HTTP fetcher(非 JS,开销小,适合静态页与 JSON API)和 JS 渲染 fetcher(Playwright / WebDriver / Puppeteer / Chrome,配合官方配套的 sockpuppetbrowser 容器,可切换移动/桌面视口尺寸)。官方 README 明确:需要真实 Chrome 跑 JavaScript 站点时才启用后者,这也是云订阅”包含一个真实 Chrome Browser”对应的成本项。
三、技术机制:定位、过滤、条件与浏览器步骤
内容定位支持 CSS 选择器、XPath 1.0(基于 lxml,支持 re:test、re:match、re:replace 正则扩展),以及面向 API 的 JSONPath / jq;jq 可做大于/小于等逻辑运算,甚至能解析嵌在 HTML 里的 application/ld+json 商品结构化数据。Visual Selector(可视化点选元素)需要连接 Playwright content fetcher——官方注明该能力在订阅服务中内置,自托管需自行部署 Playwright。
过滤层提供 Trigger on text(出现某文本才触发)、Remove text by selector(剔除导航/页脚)、Ignore text、Extract text 与正则。

**条件引擎(Conditions)**把”抽出的数值”作为二次判断对象:例如对 Filters & Triggers 抽出的数字设置”大于等于 38 或小于等于 -10”,支持 Match all / Match any 组合,界面上会回显本次抽出值(截图中为 9.2),方便调试阈值。
Browser Steps 在正式抓取前先执行一段交互脚本:填表单、点按钮、接受 Cookie 登录框、把商品加入购物车、输入搜索条件,再进入检测页面——这解决了”必须先登录/先操作才能看到目标内容”的场景。
定时调度可逐 Watcher 设置间隔(周/天/时/分/秒),也可用 Time Scheduler 限定每周几、几点到几点运行,并支持独立时区,界面自带”工作时间""周末”两个快捷预设。

通知基于开源库 caronc/apprise,官方称支持 85 种以上通知格式,覆盖 Discord、Slack、Telegram、Rocket.Chat、Email、Matrix、NTFY、Office 365、Teams、Webhook/JSON、syslog 等;通知标题与正文可用 Jinja2 模板自定义,变化时可附带整页截图。
补货与价格检测是单独的标签页:从 HTML 元数据解析商品价格与库存状态,可选”仅 Out of Stock → In Stock 触发""任意可用性变化""关闭”三档;跟随价格变化时可设低于触发价、高于触发价、相对首次检查的百分比阈值(截图中示例为原价基础上变动超过 10%),并在仪表盘上记录价格/库存趋势图。
四、LLM 能力:意图规则与白话摘要
README 的 AI 板块提供两件事:AI change detection rules(用一句自然语言写意图,如”只在价格跌破 $50 时通知""忽略导航和页脚变化”,LLM 对每次 diff 判断是否符合意图并静默抑制无关变化)和 AI change summaries(把原始 diff 转成”价格从 $89.99 降到 $67.00”这类白话)。模型层经 LiteLLM 接入 100+ 提供商,可用 OpenAI、Gemini、Anthropic,也可指向本地 Ollama / vLLM / LM Studio 的 OpenAI 兼容 /v1 端点。官方注明该能力在订阅托管服务中于 2026 年 6 月上线;开源代码同样带有 LLM 设置区,但密钥与 API 费用由使用者承担。
五、关键数据与口径
| 项目 | 官方口径(2026-10-22 调研) |
|---|---|
| 许可证 | Apache-2.0 |
| 主语言 / 最新版本 | Python;0.60.9(2026-10-12 发布) |
| GitHub 规模 | 约 35.2k stars、2.2k forks(API 实时 35,183 / 2,170) |
| 云订阅价格 | README 写 US$8.99/月;官网首页按地区显示 S$12.52/月(货币本地化,以结账页为准) |
| 云订阅额度 | 最多 5,000 个 URL 监控;每个 runner 最快 5 分钟复检;含 1 个真实 Chrome;内置欧洲/美国/Tor 代理 |
| 部署方式 | Docker / docker compose / ghcr 镜像 / pip install changedetection.io,默认端口 5000;支持 arm(树莓派) |
| 接口 | 完整 REST API v1 + OpenAPI 规范;另有 Chrome 扩展;支持 Excel/纯文本 URL 批量导入 |
口径偏差需要写明:
- 官网首页的 S$12.52/月是新加坡元本地化展示,与 README 的 US$8.99 不是同一币种,不能直接比较;“5,000 URLs、5 分钟复检”是云订阅额度,自托管实例的检查频率只受自身资源约束。
- README 的”AI-powered”描述未给出误报抑制率、摘要准确率等任何量化评测,官方也未提供基线对比,属于产品宣传口径。
- README 推荐 Bright Data 代理并注明”匹配首充最高 $150”,这是带返利的推荐链接,不是中立选型结论。
六、官方自己声明的责任边界(nuance)
README 法律条款里有两段必须原文级转述:
- 监控合规责任在用户:使用者须自行保证监控行为符合目标网站服务条款、
robots.txt与访问策略,作者与贡献者不对使用后果承担任何责任。 - AI/LLM 风险:开启 AI 后,页面 diff 与抽取文本会被发送到用户选择的第三方模型;用户自行负责目标站 ToS 允许性、GDPR 等个人数据合规、全部 API 费用;官方明确”LLM 已知会幻觉,输出看似合理但可能错误、不完整甚至编造,摘要可能静默遗漏相关信息,AI 输出绝不能被当作完整准确的依据”,并要求使用者就此对作者免责。
七、适用与不适用场景
适合:
- 个人蹲降价、限量补货(球鞋、树莓派、集换卡),用免费自托管或低价云订阅即可;
- 数据记者、RegTech 与合规团队追踪政府网页、监管文件、PDF 公告的变化;
- 安全团队做网站防篡改(defacement)巡检;
- 监控 JSON API 响应变化、把页面变化转成自建 RSS、经 Webhook 串联内部系统(有完整 REST API)。
不适合:
- 需要登录态长期保持、强反爬/验证码拦截的站点:Browser Steps 只能处理基础交互,过验证码仍需自备方案;
- 对变化语义要求严格审计的场景:LLM 摘要可能静默漏报,关键决策应以原始 diff 为准;
- 零运维预算又要监控大量 JS 重站点的团队:自托管要自己跑 Playwright/Chrome 与代理,成本会转移到运维侧。
八、客观分析:优势与局限
优势:
- 功能密度高且开源 Apache-2.0:定位、过滤、条件、调度、补货、API、扩展一应俱全,35k+ stars 说明社区采用度;
- 双 fetcher 架构务实:静态页走轻量 HTTP,复杂页才上 Chrome,资源开销可控;
- 通知生态借船出海:复用 apprise 获得 85+ 渠道,不必自己逐个集成;
- 部署门槛低:一条 Docker 命令或 pip 安装即可跑,还支持 arm 设备。
局限:
- UI 与配置项密集:CSS/XPath/jq/条件阈值组合学习曲线明显,非技术用户更适合云订阅或简化模板;
- JS 重站点成本外置:真实 Chrome、住宅代理都要自备或购买,官方代理推荐含返利;
- AI 能力无量化背书:意图过滤与摘要缺少官方评测数据,且幻觉免责条款被写进 README;
- 开源版与云版功能不完全对等:Visual Selector 等体验向能力优先内置在订阅服务里。
九、谁该关注
有重复性”刷页面”需求的个人玩家可以直接 Docker 起一个实例试水;做竞品跟踪、合规巡检、舆情监控的中小团队应先评估自托管的 Chrome/代理运维成本,再决定是否直接买云订阅;希望把变更信号接入自有系统的工程师,其 REST API 与 Webhook 通知比商业 SaaS 的封闭生态更值得接入。