ChangeDetection 安装和使用

序言

最近在等待某个网站上的通知,于是时不时打开网站看一眼。后来觉得太麻烦了,准备写个爬虫自动监测。又发现网上有很多现成的平台(于是懒得写代码了),但是它们的免费方案都只包括监控静态网页,想要处理 JSON 要付费,因此开始寻找开源替代方案。于是,就有了本文的主题 —— ChangeDetection

ChangeDetection 有两个功能:监控 URL 内容变化;通知这些变化。这两个功能足以覆盖大部分日常场景。

Docker compose

ChangeDetection 最基本的配置如下,有一个端口映射、一个容器卷即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: "3"

services:
changedetection:
image: dgtlmoon/changedetection.io:0.46.04
container_name: changedetection
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
ports:
- 55000:5000
volumes:
- changedetection-data:/datastore

volumes:
changedetection-data:
external: true

ChangeDetection 也提供可视化界面,让不懂编程的用户可以像使用浏览器那样选择要监控的内容。其中:

  • Browser Steps 功能可以记录一系列操作;
  • Visual Filter Selector 功能可以选择网页的某一部分;

这些实际上是底层的 Playwright 提供的功能,因此需要 WebDriver。官方提供的 docker compose 中有具体的配置,需要启动一个额外的 Chrome 容器给 Playwright 使用。我没有这个需求,就不配置了。


如果监控某一网站的频率很高,建议加一个代理,防止自己的 IP 被封、导致干不了正事了。

使用

ChangeDetection 的使用很简单,因为页面上一共也没几个按钮。

Filter

『Filters & Triggers』一栏是我们要重点关注的,在这里进行数据清洗。过滤器种类很多,我主要使用 CSS 和 JQ。具体的规则建议让 GPT 来写。

邮件通知

在 『Settings | Notifications』 中可以配置通知服务。我目前使用邮箱来通知,其原理就是自己给自己发一封邮件。规则如下:

1
mailto://{user}:{password}@qq.com

需要注意的是,不同邮箱的 password 不同。Gmail 的就是邮箱的登录密码,而 QQ 的要在『账号与安全 | 安全设置 』生成一个授权码(类似于 API TOKEN)。

邮件的内容使用的是 Jinja2 模板,修改方便。

配置完毕后,测试一下是否可用。

参考