脚本的配置教程请直接前往第四节 “配置脚本”
硬件准备
- 一台刷了OpenWRT的路由器
理论上来说只要支持curl与crontab的固件都可以,不一定要用OpenWRT。我这里使用的路由器为红米AC2100,它的刷机教程可以看我的上一篇文章。
接口分析
打开校园网的登录界面,打开浏览器调试,勾选Network选项中的Preserve log,然后正常登录校园网,就能看到在登录时浏览器向http://10.10.244.11:801发送了POST请求。
进一步打开Payload查看POST数据,可以明显看到DDDDD后面的参数就包含了账号,upass就是密码。
在进一步的测试中得知,DDDDD的值的格式为 ,0, + 账号 + 运营商标识
,其中的运营商标识校园网为空,电信为@njxy,移动为@cmcc。
然后把得到的api写到Apifox中测试,完美成功,接下来就能开始写脚本了。
编写脚本
在经过一段时间的测试之后发现,路由器只是登录校园网但是长时间没有设备使用网络,校园网也会自动断开,然后要求重新登录,所以最后的实现思路是在路由器中通过Crontab定时执行脚本,在脚本中判断网络是否可用,如果不可用就发送登录请求。同时,在没有登录校园网时使用curl获取响应头,可以得到http 200的状态码,但是Connection为close(正常为Keep-alive),所以我这里使用http状态码来判断网线是否插好了,用Connection来判断是否需要登录校园网。
最后写出来的代码我这里就不放了,想要看代码的可以在Github上查看。
配置脚本
打开这个链接 NJUPT_AutoLogin – 南邮校园网自动登录脚本,然后在Assets
中下载NJUPT-AutoLogin.sh
到电脑上。
登录路由器后台,记住首页出现的IPv4 WAN 状态中的eth口,如 我这里是eth0.2
。
点击 系统 -> 系统 -> 在 系统属性 常规属性 中同步浏览器时间 -> 保存&应用
点击 系统 -> 文件传输 -> 选择脚本 -> 上传
点击 系统 -> 计划任务,在最后一行添加你的账户信息(请根据实际情况修改里面的汉字)
对于不断网的账号添加
*/5 * * * * sh /tmp/upload/NJUPT-AutoLogin.sh -e eth口 -i 运营商 账号 密码
对于会断网的账号添加
*/5 * * * * sh /tmp/upload/NJUPT-AutoLogin.sh -e eth口 -i 运营商 -l 账号 密码
说明:
- 运营商 校园网是njupt,电信是ctcc,移动是cmcc
- 密码 建议使用” “将密码括起来,避免出现奇怪的错误
更多可选的参数这里就不多介绍了,想了解的可以去看看Github上的介绍;最后的效果如图(复杂的密码请用” “括起来)
确认无误之后,点击提交,之后路由器就会每5分钟确认一次网络状态,如果在没断网的时间内没有登录校园网,路由器就会自动登录了。
现在连上路由器的wifi享受不被登录校园网打扰的日子~。
第一|´・ω・)ノ
您好,运行这个脚本显示网络断开了,但是换别人的脚本可以用,请问是怎么回事?
显示网络断开能不能具体说明一下呢?
我用openwrt自动任务运行没有效果,换ssh运行显示网络错误就结束了,然后我添加了-d,运行显示已连接,可是我并没有成功连接,所有提示文字都能在脚本里找到,不知道哪一步出错了
如果不使用脚本的话,直接连接上路由器的wifi会不会出现登录验证的界面呢?