群晖Docker,走起! 篇十六:群晖搭建changedetection,监听网页内容,提醒降价、秒杀
有的时候需要监听网页内容的变化,比如发了一个新帖,排行榜更新,或者库存更新,但是网站肯定是不会提供API接口给你免费调用的,怎么办?那就需要一个工具定时访问网页内容,一旦发现内容和上次不一致,那就证明网页内容有了更改。今天介绍的开源工具changedetection就可以很简单的帮我们实现这个功能
安装
打开群晖Container Manager,搜索changedetection
,点击dgtlmoon/changedetection.io
镜像,选择最新版本进行下载
在等待下载过程中,先创建好 changedetection
数据存放的目录
回到Container Manager套件,运行刚刚下载好的changedetection
镜像。常规设置可以按需修改。高级设置下的端口映射不能直接设置为5000端口,因为群晖默认已经占用了5000端口,所以这里设置为12500
存储空间设置,需要把容器的/datastore
文件夹映射为前面新建文件夹,这样才不会在容器升级的时候丢失数据
往下找到环境,如果LOGGER_LEVEL
为空是无法运行容器的,这里直接点击减号去掉
其他设置不用更改,直接运行容器。现在用浏览器打开【群晖IP:12500】就能看到changedetection
的主界面了
反代配置
如果需要在公网进行访问,建议配置反向代理并设置SSL证书,不要直接使用端口访问。下面演示两种反代配置方式
群晖反代
可以直接在控制面板->登录门户->高级菜单下设置反向代理服务器
Nginx Proxy Manager
如果搭建了Nginx Proxy Manager,则可以点击Add Proxy Host按钮新增一个反向代理配置。个人也建议使用这样的方式,这样就不用在路由器上打开很多端口,不安全也不方便
在SSL选项下启用SSL证书
初步使用
打开主界面后,直接输入想要监听的网页,点击Watch按钮即可
添加完毕后,可以在下面的表格中看到已经添加的监听任务。最新检查网页的时间为13秒前,网页的最新一次改变为14秒前
点击最右侧的Diff按钮,就能看到变化的状态,红色的为前一个状态,绿色的为当前状态
点击Edit按钮,则可以编辑当前的任务。在Time Between Check中可以设置任务的运行间隔,下图就代表每3小时去请求刚刚的网页链接,并检查网页内容变化
可以在Notifications选项下配置通知方式,比如发送QQ邮箱,在输入框中输入mailto://{user}:{password}@qq.com
即可,配置完成后,可以点击下面的Send test notification进行通知测试。更多的通知方式可以参考https://github.com/dgtlmoon/changedetection.io/wiki/Notification-configuration-notes官方文档
这里的配置都是针对当前任务的,如果要统一进行配置,可以点击右上角的SETTINGS,进行全局配置。如果对任务进行了分组,那么也可以点击前面的GROUPS,对不同的组进行配置
高级用法
看到这里,很多细心的小伙伴就发现问题了,changedetection这样检测整个页面的变化,是根本没有什么应用场景的。如果调用API接口直接返回数据还好,直接通知就完事了,如果要检测网页中的某个元素的变化要怎么办呢?
那就需要WebDriver了,WebDriver可以简单理解为浏览器驱动器,通过代码调用就可以模拟真实用户打开浏览器上网的操作,可以方便的获取网页的任何一个元素
如果要在changedetection上使用WebDriver,需要一个新的容器standalone-chrome-debug
。changedetection是通过群晖Container Manager进行安装的,所以接下来同样演示在Container Manager中进行安装
在注册表中搜索standalone-chrome-debug
进行下载
下载完毕后启动容器,把容器名称改为selenium
,再点击下一步
在端口设置中,容器端口映射为群晖的4444,去掉5900端口映射
下拉到环境变量配置,去掉NODE_APPLICATION_NAME
环境变量。其他配置默认不变,直接运行容器
现在找到最开始启动的changedetection
容器,把它停止
在容器的设置选项下进行编辑容器。找到环境,新增环境变量WEBDRIVER_URL
,值为http://selenium:4444/wd/hub
下拉到最底部,新增一个链接,把selenium
容器链接进来。然后点击右下角的保存,最后再启动容器
重新打开changedetection
网页,现在就可以编辑网页任务,并在Request下开启WebDriver了
现在来演示监听https://www.bjtime.org.cn/
网站下的分钟的变化
在changedetection
主页面添加监听URL,设置监听间隔为1分钟
勾选WebDriver
用浏览器打开https://www.bjtime.org.cn/
网站,点击键盘的F12进入开发者模式(谷歌浏览器),点击工具栏左侧的箭头
再点击网页的内容,就可以定位到当前鼠标所指的页面元素了(工具栏左侧的箭头要蓝色才可以选择)
现在复制分钟所在的XPath路径,选中分钟后,点击右键进行复制
粘贴到Filters下的输入框中,最后点击保存
回到主页就可以看到监听任务了,点击Diff可以对历史状态进行对比
选择一个开始时间,再选择一个结束时间,点击右侧的Go,就可以看到开始时间到结束时间的内容变化,这里就是从39变为了40
如果设置了通知,状态改变的时候也会把历史状态和当前状态推送给你
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
panda12345
校验提示文案
丿纯丶娱乐
校验提示文案
qml689986
校验提示文案
武当山武大郎
校验提示文案
rockglass
校验提示文案
值友3469852116
校验提示文案
夜影小窝
校验提示文案
lyls
校验提示文案
你是一块巧克力
校验提示文案
武当山武大郎
校验提示文案
你是一块巧克力
校验提示文案
lyls
校验提示文案
qml689986
校验提示文案
夜影小窝
校验提示文案
丿纯丶娱乐
校验提示文案
值友3469852116
校验提示文案
panda12345
校验提示文案
rockglass
校验提示文案