changedetection.io 网页变动监控自部署笔记:容器化配置、过滤规则与通知要点
1. 工具定位与适用场景
changedetection.io 是一个开源、可自托管的网页变动监控工具,核心逻辑是定时抓取目标网页内容并做快照对比,检测到变化后通过通知渠道推送。适合替代人工反复刷新页面,常见用途包括:
- 监控商品价格、库存、补货状态
- 跟踪官网公告、政策页、招聘信息更新
- 关注开源项目 Release、文档变更、JSON 接口返回数据
- 监控竞品页面变动或指定信息区域
需要说明的是:该工具只是“检测变化”,并不负责外网访问你的面板。如需远程访问,请自行使用 VPN、端口转发等成熟手段或内网穿透工具解决,但本文不再展开营销性配置。
2. 部署方式:Docker 命令与 Compose
2.1 基础说明
- 默认容器端口:
5000 - 官方镜像:
dgtlmoon/changedetection.io - 数据目录:
/datastore - 推荐使用命名卷保存数据,便于升级与迁移
普通静态网页监控占用资源很低;若开启 Playwright 监控 JS 动态渲染页面,建议为容器预留 1GB 以上内存。
2.2 Docker CLI 部署
映射宿主机 5025 端口到容器 5000,并设置自动重启:
docker run -d \
--restart always \
-p "0.0.0.0:5025:5000" \
-v datastore-volume:/datastore \
--name changedetection.io \
dgtlmoon/changedetection.io
验证运行状态:
docker ps
2.3 Docker Compose 部署
创建 docker-compose.yml:
services:
changedetection.io:
image: dgtlmoon/changedetection.io
container_name: changedetection.io
restart: always
ports:
- "0.0.0.0:5025:5000"
volumes:
- datastore-volume:/datastore
volumes:
datastore-volume:
启动:
docker compose up -d
启动后,浏览器访问:
http://<服务器IP>:5025
3. 使用与配置要点
3.1 初始配置
首次进入面板后可完成以下基础设置:
- 切换界面语言与明暗主题
- 批量导入监控 URL,格式为“每行一个 URL,空格后跟逗号分隔的标签”
- 设置访问密码(可选)
- 配置全局检查周期、历史快照保留数量、过滤器缺失告警触发次数等
3.2 检查间隔与误报取舍
检查间隔越短,发现变化越及时,但从目标网站抓取频率也越高,可能带来 IP 封锁或对方服务器压力。建议按场景权衡:
- 普通静态页面可使用较短的间隔(系统最小支持 3 秒,但不建议对陌生站点设置如此高频)。
- 电商商品、公告页面一般 5~15 分钟即可。
- 变化频繁的页面可适当延长间隔,降低噪声和资源占用。
- 若目标页面含广告、时间戳、动态 token 等易变内容,应优先使用“忽略元素”或区域过滤,而不是一味拉大间隔。
面板提供“空页面视为变更”“仅检测指定区域”等选项,应根据实际抓取结果合理勾选,减少无效告警。
3.3 JSON/局部区域过滤示例
以监控上海天气 JSON API 为例:
监控地址:
http://t.weather.itboy.net/api/weather/city/101020100
创建监控时选择“JSON”检测模式,并在 JSON Filter 中填写想要监视的字段:
json:$.data.wendu
这样只有温度数值发生变化时才会触发告警,避免整个 JSON 因其他字段变动而误报。
对于普通页面,同样可以使用 CSS/文本过滤或区域选择,只关注目标信息区块,忽略广告、页脚等冗余内容。
4. 通知渠道配置要点
系统支持邮件、Telegram、ntfy、Discord、Webhook 等数十种通知渠道。配置时注意:
- 在“设置 - 通知”中按渠道要求填写接收地址/Token/密钥。
- 可以针对单个监控项或分组独立配置通知渠道,便于区分不同优先级。
- Webhook 通知可用于对接自定义回调服务,适合与内部系统联动。
- 通知内容可定义是否包含变更详情、新旧内容对比,避免信息过载。
5. 维护与注意事项
- 监控数据全部保存在本地
/datastore,升级镜像前务必先备份该目录。 - 如需批量管理监控项,可使用“分组”功能统一设置过滤器与通知规则。
- 对于登录后才能访问的页面,需在浏览器插件中完成登录后导入 Cookie,本工具可通过 Playwright 支持 JS 渲染与登录态抓取,但部署时资源消耗会上升。
- 公共站点抓取需遵守对方 robots 协议与服务条款,避免高频请求造成负面影响。
原文中关于“cpolar 内网穿透”的部分属于特定工具推销内容,本文不做采用。远程访问面板的需求,请根据你自己的网络环境选择合适方案(如 VPN、SSH 隧道、反代或专业穿透工具),并确保服务暴露在公网时有密码或访问控制保护。