编程 changedetection.io 网页变动监控自部署笔记:容器化配置、过滤规则与通知要点

2026-09-02 15:54:10

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 等数十种通知渠道。配置时注意:

  1. 在“设置 - 通知”中按渠道要求填写接收地址/Token/密钥。
  2. 可以针对单个监控项或分组独立配置通知渠道,便于区分不同优先级。
  3. Webhook 通知可用于对接自定义回调服务,适合与内部系统联动。
  4. 通知内容可定义是否包含变更详情、新旧内容对比,避免信息过载。

5. 维护与注意事项

  • 监控数据全部保存在本地 /datastore,升级镜像前务必先备份该目录。
  • 如需批量管理监控项,可使用“分组”功能统一设置过滤器与通知规则。
  • 对于登录后才能访问的页面,需在浏览器插件中完成登录后导入 Cookie,本工具可通过 Playwright 支持 JS 渲染与登录态抓取,但部署时资源消耗会上升。
  • 公共站点抓取需遵守对方 robots 协议与服务条款,避免高频请求造成负面影响。

原文中关于“cpolar 内网穿透”的部分属于特定工具推销内容,本文不做采用。远程访问面板的需求,请根据你自己的网络环境选择合适方案(如 VPN、SSH 隧道、反代或专业穿透工具),并确保服务暴露在公网时有密码或访问控制保护。

推荐文章

程序员茄子在线接单