Loading... # 哆点校园网自动登录 本教程只介绍了一种方式,当然还有更多种方法,不做赘述。 本篇思路和脚本出处: <div class="tip inlineBlock share"> [github](https://github.com/skyland22/NTU_Network_Auto-Login_OneStep-Logout) </div> <div class="tip inlineBlock warning"> 理论上这种方法适合所有的,使用哆点作为验证的高校。 </div> ## 原理 - 使用批处理文件。 - 程序依赖curl命令。 - 自动获取当前ip并储存在变量ip中。 ``` for /f "delims=: tokens=2" %%i in ('ipconfig ^| find /i "IPv4"') do set ip=%%i echo current ip address =%ip% ``` - 自动检测是否断线。 - 访问一个百度不存在的页面 `curl -s -O http://baidu.com/1.txt` - 保存返回值,并记录是否经过转跳。 ``` set File=D:\1.txt ::返回值保存在D盘的1.txt中 set Str=error ::检测返回值中有没有特征值error ``` - 判断并跳到需要的地方运行,没连上跳到NO,连上跳到OK `findstr /i /c:"%Str%" "%File%" >nul 2>nul && goto OK || goto NO` - 发包。 - 进入循环,一秒判断一次。 ## 准备工作 <div class="tip inlineBlock error"> 既然是基于curl,那么就必须得装curl,对吧? </div> 什么?你说你懒~,那就直接看[这里](#jump) ### 下载curl [**直接下载 7.54.0**](https://curl.se/windows/dl-7.75.0_4/curl-7.75.0_4-win64-mingw.zip) [**最新版本**](https://curl.se/windows/) ### 添加curl到全局变量 1. 解压上一步下载的压缩包到任意你<u>***不会删除的***</u>地方(以C盘为例) 2. 进入 **高级系统设置** 3. 点击 **高级** **系统变量** 4. 在 **系统变量** 中 **新建** 5. 写入压缩包中 **bin文件夹** 的位置 ![步骤5](https://img.rruu.net/image/6056396bab423) ## 修改bat脚本 <div class="tip inlineBlock warning"> 这里把脚本直接引用的 [github](https://github.com/skyland22/NTU_Network_Auto-Login_OneStep-Logout) 中的脚本,但要加以完善,以适应全部的哆点环境。 </div> 由于源作者 [skyland22](https://github.com/skyland22) 把脚本和curl环境直接打包压缩在一起了,并且我不是南通大学的校园网。所以我以矿大哆点校园网为例,在下面直接演示如何修改。 ### 不怎么要更改的 ``` @echo off echo System is working ! %1(start /min cmd.exe /c %0 :&exit) ::默认最小化运行窗口 for /f "delims=: tokens=2" %%i in ('ipconfig ^| find /i "IPv4"') do set ip=%%i echo current ip address =%ip% ::获取当前ip地址 :OPEN curl -s -O http://baidu.com/1.txt set File=C:\1.txt set Str=baidu findstr /i /c:"%Str%" "%File%" >nul 2>nul && goto OK || goto NO :NO echo Error Network is resuming... ``` ``` :OK ::echo OK TIMEOUT /T 1 >null ::间隔1S goto OPEN ``` ### 需要更改的 ``` curl "http://210.29.79.141:801/eportal/?c=Portal&a=login&callback=dr1003&login_method=1&user_account=%%2C0%%2C学号%%40运营商&user_password=密码&wlan_user_ip&wlan_user_ip=%ip%&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=3.3.2&v=123" ``` <div class="tip inlineBlock warning"> 为了获取get地址,你需要一个有调试的浏览器。这里以chrom为例。 </div> 1. 打开浏览器访问校园网登陆页面 ![登陆页面](https://img.rruu.net/image/6056db3145cff) 2. 按下`F12`唤出控制台,进入 `Network` 选项卡 ![Network](https://img.rruu.net/image/6056db3158835) 3. 这个时候登录。**别关控制台** 4. 找到发出的包的链接并复制(图中蓝色选项) ![蓝色选项](https://img.rruu.net/image/6056db3165fd6) 5. **用 `%ip%` 来代替上文复制的链接的ip部分,上图中有一个 `%40` 用 `@` 符号代替** 6. 综上可以写出以下请求 ``` curl "http://10.2.5.251:801/eportal/?c=Portal&a=login&callback=dr1616304593014&login_method=1&user_account=[账号]@cmcc&user_password=[密码]&wlan_user_ip=%ip%&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=3.0&_=1616304564458" ``` ### 总节 - 代码部分如下 ``` @echo off echo System is working ! %1(start /min cmd.exe /c %0 :&exit) ::默认最小化运行窗口 for /f "delims=: tokens=2" %%i in ('ipconfig ^| find /i "IPv4"') do set ip=%%i echo current ip address =%ip% ::获取当前ip地址 :OPEN curl -s -O http://baidu.com/1.txt set File=C:\1.txt set Str=error findstr /i /c:"%Str%" "%File%" >nul 2>nul && goto OK || goto NO :NO echo Error Network is resuming... curl "http://10.2.5.251:801/eportal/?c=Portal&a=login&callback=dr1616304593014&login_method=1&user_account=[账号]@cmcc&user_password=[密码]&wlan_user_ip=%ip%&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=3.0&_=1616304564458" ::echo 当result=1时表示连接成功 ::explorer.exe open="http://210.29.79.141/a79.htm" :OK ::echo OK TIMEOUT /T 1 >null ::间隔1S goto OPEN ``` - 复制修改后的总代码,随便找个位置,开个新 `.txt` 文件粘贴进去,并重命名为后缀名 `.bat` ,双击运行即可。 ## 完善 - 需要添加到开机启动的话可以直接把脚本加入启动文件夹。![](https://img.rruu.net/image/6056e48a64891) - 此脚本可以在 [github](https://github.com/skyland22/NTU_Network_Auto-Login_OneStep-Logout) 下载,解压后在 `curl-7.70.0-win64-mingw\bin` 文件夹中找到,更改请求链接之后也可以直接使用。因为原作者整合了curl,并且脚本放在了curl根目录,所以不需要添加环境变量也可以运行。 <span id = "jump"> 最后修改:2021 年 03 月 21 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏