前言:本教程通用于可以网页认证上网的校园网,但不能防检测
如果你的校园网支持网页认证,且没有UA检测,特征码检测等瞎扯淡的检测(不知道的话也可以直接试试)
1.电脑直连校园网,打开浏览器(以edge为例),进入校园网认证网页,F12键打开开发者工具,Network(网络),保留日志,输入账号密码,(选择运营商),连接,记下认证绑定的电脑MAC地址(开启无感认证)
如上图,点击连接后出现一个InterFace.do?method=login开头的请求,这一条就是发送认证请求的,右键复制为cURL(bash)命令,如果是多行就把命令改为一行(edge可能是多行,需要删除所有 斜杠回车俩空格 四个字符),
2.以padavan固件为例
代码如下,或直接下载附件
#!/bin/sh
#/etc/storage/xyw.sh
### Custom user script
#copyright by autumoon
logger -t "【校园网】" "脚本开始"
logger -t "【校园网】" "ping 114.114.114.114"
ping -c 1 114.114.114.114
if [ $? -eq 0 ];then
logger -t "【校园网】" "网络连接正常"
else
logger -t "【校园网】" "网络无法连接,开始校园网认证"
varcurl命令
logger -t "【校园网】" "$var"
logger -t "【校园网】" "脚本完成,10秒后将再次检查网络"
sleep 10
logger -t "【校园网】" "ping 114.114.114.114"
ping -c 1 114.114.114.114
if [ $? -eq 0 ];then
logger -t "【校园网】" "网络连接正常"
else
logger -t "【校园网】" "网络连接异常,请自行检查问题所在"
fi
fi
logger -t "【校园网】" "脚本结束"
以ping 114判断是否连接互联网,var=``(键盘左上角esc键下的英文上角标键,不是回车键左侧的引用号)是请求认证的结果,logger -t 可以输出到padavan系统日志里,sleep 10是等待10秒,
把刚刚在网页抓取的curl请求改为一行,并替换脚本里第12行的curl命令,即夹在var=``的两个上角标之间
3.脚本保存为xyw.sh ,连接路由器,外部网络配置,MAC地址填电脑认证用的地址
4.用winscp导入xyw.sh到路由器 /etc/storage 目录下(脚本目录,重启还在),文件权限改为0777(需要‘执行’权限,否则可能报错)
打开SSH终端会话窗口,输入 . /etc/storage/xyw.sh (点+空格+脚本地址)
出现success,已经在线等信息(padavan网页日志有信息输出),校园网认证成功
5.脚本没有使用循环,故需要在padavan里开启网络持续检测,路由器后台 高级设置 自定义设置 网络检测
持续检测 网络改变时运行脚本:
#!/bin/sh
. /etc/storage/xyw.sh
在自定义设置 脚本 在WAN上行下行启动后执行
#!/bin/sh
. /etc/storage/xyw.sh
也可以直接在自定义 Crontab 定时任务配置里加入
0 */1 * * * /etc/storage/xyw.sh #每隔一小时执行一次xyw.sh脚本
openwrt固件同理,但好像只能用自定义 Crontab 定时任务让它每隔一段时间执行一次了,可能有些地方需要改一下,问题不大
路由器WAN口MAC地址一定要改为上述第一步认证时使用的MAC地址,不然可能一直认证一直失败一直MAC冲突(路由器开启NAT模式,并作为NTP服务器提供服务)