部署changedetection.io,一个网站更改检测、监控和通知的开源工具
官方Github: https://github.com/dgtlmoon/changedetection.io
Web Site Change Detection, Monitoring and Notification.
Live your data-life pro-actively, Detect website changes and perform meaningful actions, trigger notifications via Discord, Email, Slack, Telegram, API calls and many more.
网站更改检测、监控和通知。
主动体验您的数据生活,检测网站更改并执行有意义的操作,通过 Discord、电子邮件、Slack、电报、API 调用等触发通知。
准备工作
Docker 安装教程 (菜鸟教程):网页链接
Docker-Compose 安装教程 (菜鸟教程):网页链接
宝塔面板,反代环境
部署
执行以下命令,新建目录
1 | mkdir -p /opt/docker/changedetection.io && cd /opt/docker/changedetection.io |
新建docker-compose.yaml
文件
然后输入以下配置内容:
1 | version: "3" |
输入执行以下命令后台启动容器
1 | docker compose up -d |
访问 https://ip:20041
进入主页
修改网页抓取方式
点击SETTINGS
,Fetching
中的Fetch Method
,将其改为Playwright Chromium/Javascript via 'ws://playwright-chrome:3000/'
,然后Save
即可!
监控
可以改监控间隔,点击 Edit:
1 | General: |
最新案例:
想象一下,你想添加你最喜欢的网站 Opensource.com 进行监控。你只想知道主要标注文章何时包含 “python” 一词,并且通过 Matrix 收到通知。
要做到这点,首先要使用“视觉选择器Visual Filter Selector”工具。(这需要连接 playwright 浏览器界面)。
该工具会自动计算出针对内容的最佳 Xpath 或 CSS 过滤器。否则,你会从每天的页面更新中得到大量的噪音。
接下来,访问“Filters & Triggers
”标签。
在 “CSS/JSON/XPATH Filter
”区域(蓝色圆圈),你可以看到上一步自动生成的 CSS 过滤器。
有几个有用的过滤器,比如“Remove elements
”(适合移除嘈杂的元素)、“忽略文本Ignore text
”、“触发/等待文本Trigger/wait for text
”,和“如果文本匹配则阻止变化检测Block change-detection if text matches
”(用于等待一些文本消失,如“售罄”)。
在“触发/等待文本Trigger/wait for text
”(红色圆圈)中,输入你想监测的关键词。(在这个例子中是 “python”)。
最后一步是在“通知Notifications
”选项卡中,你要在那里配置你想收到的通知。下面我使用邮箱、telegram添加了一个 通知目标。
JSON API 监控案例
找一个天气预报的 JSON API
,请求是restfull
风格,city_code 为 9
位数字。只要拼接在地址 “http://t.weather.itboy.net/api/weather/city/+
city_code” 后面即可。
city_code
可以在这里查询: https://github.com/baichengzhou/weather.api/blob/master/src/main/resources/citycode-2019-08-23.json
比如上海的 city_code
为 101020100
所以在浏览器中输入 http://t.weather.itboy.net/api/weather/city/101020100
就能看到上海的天气信息
将网页上的文本全部复制(Ctrl+A
然后 Ctrl+C
),接着打开网页:https://jsonpath.com
这个网址可用于
JSON
的语法测试
将前面复制的内容粘贴到左侧的 Inputs
,因为希望返回所有的数据,所以在 JSONPath Syntax
中输入了 $
右侧的 Evaluation Results
不仅返回了所有的数据,并且对 JSON
数据进行了格式化处理,更易于阅读
如果只是需要获取温度,可以在 JSONPath Syntax
中输入 $.data.wendu
准备工作到这里就差不多了,返回到 Changedetection
新增一个监控,分别填入下面的内容后,点 Watch
- 网址:
http://t.weather.itboy.net/api/weather/city/101020100
- tag:
天气
在 CSS/JSON Filter
中输入 json:$.data.wendu
,其中前缀 json:
是必须要的
通知
邮箱推送
点右上角的 SETTINGS
是 default global settings
,只需要在 Notification URL List
中设置通知方式
Changedetection
采用了 apprise
项目来实现 通知
功能,可惜除了 邮件
,老苏没找到手机上已经安装的应用
所有支持的通知方式都在这里:https://github.com/caronc/apprise
邮件发送的 URL
地址是