JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

群晖搭建changedetection,监听网页内容,提醒降价、秒杀

wys521 2024-10-14 14:55:52 精选教程 22 ℃ 0 评论

有的时候需要监听网页内容的变化,比如发了一个新帖,排行榜更新,或者库存更新,但是网站肯定是不会提供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-debugchangedetection是通过群晖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

如果设置了通知,状态改变的时候也会把历史状态和当前状态推送给你

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表