更新:在参考了我派的 这篇文章 后,咱也用 Shortcuts 实现了 iOS 设备上的自动认证,你可以 点这里 安装这个 Shortcut。但是 iOS Shortcuts 做不到抓取NextURL也没法直接获得 MAC 地址,所以实现上不是很完美。
背景及需求
我校的电信有线网络并不会限制路由器的使用。然而,有线网络的认证方式是动态 IP + Web 认证。在每次重启路由器后,访问任意非 HTTPS 页面就会被劫持到电信的认证网页,在该网页上输入账号密码后,才能联网。
虽说不算太麻烦,但每次都要手动输入账号密码,还是让人有些不爽。正好前段时间购买了一台 newwifi 3 路由器并刷入了 Padavan 系统,因此探索一下使用路由器实现校园网自动认证的方法。
原理
我校有线网络 Web 认证的本质,就是发送一个 HTTP-POST 请求到认证服务器。因此,我们只需要用 curl 构造一个 POST 请求,并且在每次路由器重启后都发送一遍即可实现自动认证。
尽管不同学校的 POST 请求可能会有一些差别,但只要使用了 Web 认证,其原理和实现方法都是相同的。
抓取登录所用的 HTTP-POST 请求
这里,我们使用 Chrome 的开发者工具来抓取请求。重启路由器后打开认证页面,按 command - option - I 调出开发者工具,切换到 Network 选项卡并勾选 Preserve log。
随后,我们正常输入用户名和密码登录。此时,开发者工具中会出现一些 HTTP 请求。我们需要在请求中寻找登录所需的项。一般来说,该项的 Request URL 会含有 login 等字段,且 Request Method 为 POST。登录网络的 HTTP-POST 请求
在找到这个请求后,我们在请求上单击右键,选择 Copy > Copy as cURL。将请求复制为 cURL
将复制到的 cURL 粘贴到任意文本编辑器中,以待进一步的处理。待处理的 cURL
修改 cURL 使其永久可用
以我校为例,在上一步中我们获得的 cURL 如下:curl 'http://172.25.249.8/eportal/InterFace.do?method=login' -H 'Connection: keep-alive' -H 'Origin: http://172.25.249.8' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36' -H 'DNT: 1' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: */*' -H 'Referer: http://172.25.249.8/eportal/index.jsp?userip=100.66.137.149&wlanacname=&nasip=171.88.130.251&wlanparameter=78-4f-43-4c-f0-01&url=http://123.123.123.123/&userlocation=ethtrunk/3:691.3201' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh-TW;q=0.9,zh;q=0.8,en;q=0.7' -H 'Cookie: EPORTAL_COOKIE_OPERATORPWD=; EPORTAL_COOKIE_SERVER=; EPORTAL_COOKIE_SERVER_NAME=; EPORTAL_COOKIE_USERNAME=; EPORTAL_COOKIE_PASSWORD=; EPORTAL_AUTO_LAND=; EPORTAL_USER_GROUP=null; JSESSIONID=684400A38AA6F9CAF582BD43C001BDE3' --da