利用puppeteer实现路由器自动定时重启

家里的路由网非常差,有次请了师傅来看,交了我如何登陆路由器的管理员界面,经过我的观察,管理员页面可以控制路由器的重启,自己手动试了一下,重启之后网络确实表现的好一点,于是打算写个脚本来定时自动重启路由器,这样就不用操心了。

技术就是用puppeteer + node,利用puppeteer自动启动一个浏览器来访问管理员页面,模拟点击重启按钮。

puppeteer浏览器级账号密码输入

访问路由器管理员页面遇到的第一个问题,就是如何输入账号密码。就像下图这样。

通常我们使用puppeteer实现登陆功能的时候,登陆按钮一般都是DOM级的,意味着我们可以根据类名、元素标签或其他特性拿到目标元素,再想办法将账号密码填写进去

上图中的这种登陆界面,并不是DOM的一部分,他是属于chrome浏览器原生的登陆框。

幸运的是,puppeteer对于这两种情况都有解决办法。puppeteer提供page.authenticate() 方法来登陆原生登陆框。

await page.authenticate({'username':'YOUR_BASIC_AUTH_USERNAME', 'password': 'YOUR_BASIC_AUTH_PASSWORD'});

选取目标元素点击

事实上,只要可以登陆,能够拿到对应的html结构,我们就可以根据puppeteer程序的dom选择和操作的api进行模拟点击了

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。