HDU Net Auto Login
HDU 的网络每天都需要手动在网页上输入学号和密码登录,不仅非常麻烦
而且经过测试,网络一般在每天凌晨一点多的时候断开,而我至少也要等到早上才会到实验室重新登录
如果有需要长时间保持联网的服务,将导致很长一段时间的网络不可用
因此考虑写一个自动化脚本,每天自动登录
登录方式
首先,HDU 的网络是通过在 http://192.168.112.30 输入学号和密码登录,对此过程观察网络请求

可以发现,登录时的请求中包含了用户名 username 和密码 passowrd
但同时也包括了校验码 chksum 和加密验证信息 info
以及观察登录页面的元素

可以发现,学号、密码和登录按钮分别为 #username,#passowrd 和 #login-account
因此,只需自动填入 #username 和 #passowrd,然后点击 #login-account 即可
Tampermonkey
我首先想到的就是利用 Tampermonkey 脚本,正好符合对网页进行操作的需求,而且非常简单
1 | // ==UserScript== |
这样,访问 http://192.168.112.30 的时候 Tampermonkey 就会自动往文本框中填入学号和密码,并自动点击登录
然而,这虽然很大程度上简化了登录,但仍旧需要手动访问登录页面
我也尝试过使用 Automator.app 定时自动打开网页,但是似乎在 Mac 进入屏幕保护程序之后是无法打开图形化程序的,只好放弃
Puppeteer
Puppeteer 是一个 Node.js 库,可以控制无头浏览器,可以使用它模拟用户在浏览器中的操作,从而自动执行登录流程
安装 Node.js
安装 Puppeteer
1 | npm install puppeteer |
- 编写 Puppeteer 脚本
1 | const puppeteer = require('puppeteer'); |
保存为 HDU-Net-Login.js
- 自动运行登录脚本
每个小时自动运行登录脚本,并把运行结果写入到 HDU-Net-Login.log 中
1 | crontab -e |
/path/to/node通过在 Terminal 中执行which node获取
经过测试,脚本运行正常,可以实现登录功能
但是定时每小时运行还是不够完美,后续可以修改为持续的网络状态检测,发现网络断开后自动运行登录脚本
About this Post
This post is written by OwlllOvO, licensed under CC BY-NC 4.0.