前言#
一如济网
同济大学无线网络提供三种接入服务(SSID):TJ-WIFI
、TJ-GUEST-WIFI
、eduroam
TJ-WIFI
面向所有已开通统一身份认证或上网服务的在校师生及其他用户(tj 开头账户),采用 802.1x 接入方式,用户只需在首次登录时使用用户名及密码完成验证,再次连接时系统将会自动完成身份认证,无需重复输入;TJ-GUEST-WIFI
主要面向校外访客,采用 web 认证方式,通过手机验证码认证登录;eduroam
主要面向所有加入 eduroam 联盟(全球教育和学术领域无线漫游服务联盟)的其他高校师生或科研机构人员,采用 802.1x 接入方式,我校师生在其他提供该无线服务(SSID)的区域也可以使用该服务。
除此之外,在宿舍区域还有一种,TJ-DORM-WIFI
,支持免费使用以及绑定宽带,但是如果长时间不使用,设备会被注销,基本一两天就要登录一次,较为麻烦,这也是写这个脚本的原因,主要针对 Windows 端。
思路#
脚本较为简单,其实核心就是一个 GET 请求,在此基础上进行了一些逻辑判断。
分析验证方式#
- 打开 TJ-DORM-WIFI 的登录页面
页面较为简单,只需要输入账号密码即可登录,此外如果绑定了宽带账号,可以选择【中国移动】、【中国联通】等,这里默认校园网账号登录。
- 检查请求方式
在登录页按 F12 打开开发者工具,切换到
NetWork
选项卡,勾选保留日志
,然后输入学号密码登录,查看请求方式,可以看到是GET
请求方式。 - 分析请求参数
点击第一个资源文件,查看
Header
表头参数,查看 URL 格式,发现请求的 URL 中带有学号密码明文,到这步也就知道了校园网自动认证的原理,甚至学号密码都没有加密,我们可以构造一个 GET 请求,传递此 URL 参数即可完成登录。 - 验证登录
复制请求 URL,注销校园网登录,然后在地址栏粘贴请求 URL,发现返回一些信息,同时校园网登录成功。也就是说最关键的就是构造这个 URL 请求。
参数分析#
LOGIN_IP
描述:登录页面的基础 URL
示例:
"http://172.21.0.54/"
NOT_SIGNED_IN_TITLE
描述:用户未登录时页面的标题
示例:
"上网登录页"
RESULT_RETURN
描述:登录请求返回的成功标识
示例:
'"result":1'
TIMEOUT
- 描述:请求的超时时间(秒)
RETRY_DELAY
- 描述:请求失败后的重试等待时间(秒)
MAX_RETRIES
- 描述:最大重试次数
USERNAME
描述:用户的学号
示例:
"2253666"
PASSWORD
- 描述:用户的密码
SIGN_PARAMETER
- 描述:登录请求的完整 URL,包含用户名和密码
- 示例:
f"http://172.21.0.54/drcom/login?callback=dr1003&DDDDD={USERNAME}&upass={PASSWORD}&0MKKey=123456&..."
SIGNED_IN_TITLES
- 描述:登录成功后可能出现的页面标题
- 示例:
["登录成功页", "注销页"]
配置#
思路:编写脚本通过 GET 方法请求登录页面,传递学号密码参数,完成登录。为了实现自动登录,可以使用任务计划程序实现,也可以借助油猴插件,每次访问网页时自动检测并登录。
01 油猴脚本#
使用大名鼎鼎的油猴扩展插件,编写简单的脚本程序,每次打开浏览器访问网页时检测是否可以访问互联网,如果不能访问,则使用 GET 方法请求登录页面,传递学号密码参数,完成登录,并刷新页面。
02 Python 脚本#
使用 Python 编写脚本,通过 GET 方法请求登录页面,传递学号密码参数,完成登录,然后使用任务计划程序定时执行脚本,实现自动登录。
但是貌似这种方法有点麻烦,因为 Python 需要导入一些第三方包,不如第一种简单。
第一种属于浏览器脚本,不能操作系统设置,借助 Python 及其强大的第三方包,可以使脚本更灵活,比方 version2
相比之前添加了切换 WIFI 的功能,自动切换到 TJ-DORM-WIFI,并且添加了系统通知、错误重连等功能,但是十分简陋,还好勉强可用。
需要导入的库有:
pip install requests
pip install win11toast
pip install asyncio
修改相关参数
login_IP
改为学校校园网登录的 IP 地址,并添加 httpnot_sign_in_title
改为校园网未登录状态的页面标题result_return
改为登录成功页面中的标识(上面响应串中的"result":1)sign_parameter
改为电脑端的请求 URLsigned_in_title
改为校园网已登录状态的页面标题添加任务计划,每次开机自动执行脚本,实现自动登录
- 搜索并打开任务计划程序,创建任务
- 修改权限和配置
- 添加触发器
- 添加条件
- 添加操作
因为 Python 脚本需要解释器,需要配环境,太麻烦,所以把 Python 脚本转成了 exe 可执行文件,这样更方便一些。
- 搜索并打开任务计划程序,创建任务
03 批处理命令#
也可以使用批处理命令,其实方法很多,核心部分就是通过 GET 方法请求登录 URL,而且不涉及任何加解密、验证码验证。
@echo off
REM 使用curl执行GET请求访问校园网登录URL
set USERNAME=你的学号
set PASSWORD=你的密码
set LOGIN_URL=http://172.21.0.54/drcom/login?callback=dr1003^&DDDDD=%USERNAME%^&upass=%PASSWORD%^&0MKKey=123456^&R1=0^&R2=^&R3=0^&R6=0^¶=00^&v6ip=^&terminal_type=1^&lang=zh-cn^&jsVersion=4.1^&v=2952^&lang=zh
curl -X GET "%LOGIN_URL%"
exit
代码部分#
较为简单,可以自行修改