用docker在树莓派上部署网页监控软件WebMonitor
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
,输入部署时设定的用户名和密码登录管理页面。
点击设置——通知方式——增加
,如下图所示增加自定义通知
。自定义网址
格式如下,appToken
和uids
换成刚才记下的内容。
1 | http://wxpusher.zjiecode.com/api/send/message{data={ |
添加网页监控任务
我这里监控的是搬瓦工最具性价比的50刀CN2 GIA套餐,先到该网页取得监控位置的XPath
。
按F12
调出开发者工具,按左上角的小箭头(Ctrl+Shift+C)开启选择模式,选定区域后右键高亮的代码,COPY——COPY XPath
,如下图所示。
点击任务管理——网页监控管理——增加
。填写相关信息,如下图所示,然后点保存
。
保存任务后不会立即执行,像上图那样5分钟后手机微信将收到第一次抓取的信息,之后有变化才会再次通知。