WebMonitor是一款python写的网页监控程序,优点是UI简洁,可视化操作简单,通知方式多样。弄了个支持树莓派(arm32v7)的镜像方便部署。

网页监控软件比较

Page Monitor

👍可视化选择网页监控位置
👍免费,功能无限制
👎只支持Chrome插件,官方已停止开发
👎仅能通过浏览器发声来提醒
👎无法对抓取内容进行判定,如只提醒降价
visualping.io提供的网页监控插件,已停止插件开发,转向web服务。如果你的通知必须以某台机器已开Chrome为前提处理倒是适用。

Distill

👍可视化选择网页监控位置
👍多平台支持
👍通知方式多样
👍可云端同步
👍可对抓取内容进行判定,如只提醒降价
👎免费版功能受限
付费的话Distill就是网页监控的最终选择。免费版如果是选择浏览器插件离线跑则基本无限制。但我需要一些24*7监控间隔小于6小时且通知到手机的任务。

Huginn

👍定制程度高,有Java Script Agent这种万能插件
👍可对抓取内容进行判定,如只提醒降价
👍可模拟浏览器抓取,但要利用第三方服务PhantomJs Cloud
👎硬件要求高,官方推荐至少2C 2G,docker容器占用至少0.5G内存
👎不支持ARM,排除掉树莓派和一些arm64的NAS之类的低功耗设备(已支持)
👎设置任务略复杂
在x64的机子上试用过,建了一些简单的网页监控任务发送到Server酱,只是这些机器不适合24*7开机。如果能支持树莓派的话这就现已支持ARM是自建网页监控的最终选择。

WebMonitor

👍操作简单
👍通知方式多样
👍可用内置PhantomJs直接模拟浏览器抓取
👍轻量,docker容器仅占用不到100M内存
👍支持设置监控规则
👎暂不支持对特定网站走代理
其实刚试用时已经很好用,不过我自己也有一些需求,做了些改进:优化docker镜像大小 #43增加arm64支持 #45增加Bark通知方式 #46增加自定义GET/POST通知方式 #50
在增加对arm支持时本来想一并对树莓派的arm32v7提供,结果由于arm32v7下的依赖有点特殊,不易在不影响其他架构镜像的情况下整合到一起,故单独构建了。
一开始也试过在树莓派上直接运行,但要解决一些raspbian上gcc编译报错的问题,比较繁琐。如果每次重装系统都要这样就有点浪费时间,故还是docker部署方便。

部署docker镜像

1
docker run -d --name webmonitor -v /home/yourname/docker/webmonitor:/app/db -p 8000:8000 -e PORT=8000 -e USERNAME=yourname -e PASSWORD=yourpassword mjysci/webmonitor:arm32v7

注:arm32v7的tag是针对树莓派的,其他平台换成latest即可。

使用示例

注册WxPusher

首先要增加通知方式,这里以WxPusher为例展示自定义GET/POST通知
打开上述页面微信扫码登录。右上角点击创建新的应用,如下图所示只需填必填的三项即可。

创建完毕后会显示appToken,只会显示一次,记下来。
打开左边栏应用管理——关注应用,微信扫码关注你刚创建的应用。然后点用户管理——用户列表查看你的UID,如下图所示记下来。

添加通知方式

打开http://IP:8000,输入部署时设定的用户名和密码登录管理页面。
点击设置——通知方式——增加,如下图所示增加自定义通知

自定义网址格式如下,appTokenuids换成刚才记下的内容。

1
2
3
4
5
6
7
http://wxpusher.zjiecode.com/api/send/message{data={
"appToken":"AT_xxx",
"content":{content},
"summary":{header},
"contentType":3,
"uids":["UID_xxxx"]
}}

添加网页监控任务

我这里监控的是搬瓦工最具性价比的50刀CN2 GIA套餐,先到该网页取得监控位置的XPath
F12调出开发者工具,按左上角的小箭头(Ctrl+Shift+C)开启选择模式,选定区域后右键高亮的代码,COPY——COPY XPath,如下图所示。

点击任务管理——网页监控管理——增加。填写相关信息,如下图所示,然后点保存

保存任务后不会立即执行,像上图那样5分钟后手机微信将收到第一次抓取的信息,之后有变化才会再次通知。