自托管服务
dgtlmoon/changedetection.io avatar
dgtlmoon/changedetection.io

changedetection.io:一个把网页变动监控做成本地服务的开源工具

用于网站更改检测、网页监控和网站更改警报的最佳和最简单的工具。非常适合跟踪内容更改、降价、补货警报和网站篡改监控:全部免费或享受我们的 SaaS 计划!

34,208 个 Star2,054 个 ForkPythonApache-2.0

秒懂

它是什么?
changedetection.io 是一个 Python 写的自托管网页变更检测工具,支持多种通知渠道、浏览器渲染和 AI 过滤。它适合想自己掌握监控数据的个人和团队,但部署和日常维护需要一定的技术投入。
适合谁用?
适合需要频繁监控网页变化且不想把数据交给第三方服务的个人开发者、运维人员和电商从业者。不适合完全不懂 Docker 或命令行、只想开箱即用的普通用户,这类人更适合直接使用官方 SaaS 或商业监控服务。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的痛点:网页变化没人盯着

网页内容每天都在变,但没有人会手动刷新每一个页面。价格变动、商品补货、政府公告更新、招聘信息出现,这些变化往往只在短时间内有价值。changedetection.io 要解决的就是这个问题:定期抓取网页,对比前后版本,发现变化后通过 Discord、Email、Slack、Telegram、Webhook 等渠道通知你。它面向的是需要监控大量 URL 但不想依赖商业监控服务的用户。README 里明确提到一个场景:你有一批敏感的 URL 要监控,但不想用付费替代品,因为“你才是产品”。这句话点出了自托管的核心动机,数据留在自己手里。

核心机制:抓取、对比、过滤、通知

工作流程分为四步。第一步是抓取,它支持两种方式:默认的快速非 JS 抓取,以及通过 WebDriver 或 Playwright 的 Chrome 渲染抓取。后者能执行 JavaScript,适合单页应用或需要登录的页面。第二步是对比,它会把抓取到的内容与上一次的结果做差异比较,支持按词、按行或按字符查看变化。第三步是过滤,这是它减少误报的关键。你可以设置“触发文本”“忽略文本”“按选择器移除文本”等规则,也可以用正则表达式。对于 JSON 接口,它支持 JSONPath 或 jq 来提取关心的字段。第四步是通知,检测到变化后通过你配置的渠道发送消息,甚至可以附带网页截图。

AI 过滤:把“有变化”变成“有意义的变变化”

2026 年 6 月起,订阅版加入了 AI 功能,但 AI 能力在开源版本中也能通过配置使用。它的思路是:你写一句自然语言意图,比如“只在价格低于 50 美元时通知我”或“忽略导航和底部栏的变化”,AI 会评估每次检测到的差异,只保留符合意图的部分。另一个功能是 AI 摘要,通知不再显示原始 diff,而是生成“价格从 89.99 美元降到 67.00 美元”这样的描述。它通过 LiteLLM 接入模型,支持 OpenAI、Gemini、Anthropic、Ollama 以及任何 OpenAI 兼容的自托管端点。这意味着你可以用本地模型处理敏感页面,不必把内容发给外部 API。但请注意,AI 功能在托管服务中从 2026 年 6 月才可用,开源版本的具体配置方式需要查阅 wiki。

部署与上手:Docker 是主要路径

README 没有给出完整的安装命令,但项目主页和 wiki 提供了 Docker 部署指南。常见的做法是拉取 ghcr.io/dgtlmoon/changedetection.io 镜像,映射端口和存储目录。启动后通过浏览器访问 Web UI,添加一个 URL,设置检查频率和通知渠道即可。关键配置项包括:每个监控任务可以单独指定代理、请求头、HTTP 方法(GET 或 POST)、检查间隔。对于需要登录的页面,可以在抓取前执行 JavaScript。它还支持监控 PDF 文件,对比文本变化、文件大小和校验和。

浏览器步骤与视觉选择器:针对复杂页面的工具

对于需要交互才能看到内容的页面,它提供了 Browser Steps 配置。你可以定义一系列步骤,比如填写文本框、点击按钮、接受 Cookie、添加商品到购物车,然后才执行变更检测。步骤执行完后,可以用 Visual Selector 工具点击页面元素来精确指定要监控的区域。这个工具需要连接 Playwright 内容抓取器,在订阅服务中已经包含,自托管时需要自己配置 Playwright。这个功能让它可以监控那些需要登录或动态加载的内容,但也意味着更高的资源消耗和更复杂的配置。

价格监控与补货提醒:电商场景的专门优化

项目为电商监控做了专门设计。开启“Re-stock & Price detection for single product pages”选项后,它会提取 HTML 中的元数据,识别产品价格和库存状态。你可以设置价格上下限、价格变动百分比等参数,当价格下降或商品补货时收到通知。这对于追踪特定商品的降价很有用,比如 README 里提到的威士忌促销、宝可梦卡牌补货。但要注意,这个功能依赖页面中的结构化数据,如果目标网站没有相应的 meta 标签,它可能无法正确识别价格。

局限性与替代方案:不是万能的监控器

最大的局限是它需要你自建基础设施。Docker 容器需要持续运行,抓取频率越高,消耗的 CPU、内存和带宽越多。如果监控大量网站,可能会被目标网站封禁 IP,这时需要配置代理,README 推荐了 Bright Data 的付费代理服务。另一个问题是它依赖页面结构,如果网站改版,选择器可能会失效,需要重新配置。它也不是为高频率监控设计的,默认检查间隔以分钟计,不适合需要秒级响应的场景。替代方案是商业监控服务,比如 Visualping 或 Distill Web Monitor,它们提供托管基础设施和更友好的界面,但数据不掌握在自己手里。

维护成本与许可证:Apache-2.0 带来的自由度

项目采用 Apache-2.0 许可证,这意味着你可以自由使用、修改和分发,甚至用于商业目的,只要保留版权声明。维护成本主要在于:跟进版本更新,项目最近一次提交是 2026 年 7 月,版本 0.55.8,说明开发活跃;定期检查监控任务是否正常运行,因为目标网站的变化可能导致抓取失败;以及管理存储空间,历史快照会占用磁盘。如果你部署了 Playwright,还需要维护浏览器依赖。总体来说,这个项目适合愿意投入时间换取数据自主权的用户。

编辑结论

适合需要频繁监控网页变化且不想把数据交给第三方服务的个人开发者、运维人员和电商从业者。不适合完全不懂 Docker 或命令行、只想开箱即用的普通用户,这类人更适合直接使用官方 SaaS 或商业监控服务。部署前先确认你的目标网站是否允许频繁抓取,以及能否接受自托管带来的维护成本。建议从 Docker 安装开始,先监控一个低频率变化的页面,验证通知渠道和过滤规则是否符合预期,再逐步增加监控任务。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记