通用校园网自动登录脚本,适用于很多基于 Dr.COM / eportal / JSONP 登录接口的高校校园网。
它的核心思路是:你在浏览器开发者工具里复制一次真实登录请求 URL,脚本会把它转换成可复用的参数模板。后续脚本会自动检测当前 Wi-Fi、判断是否已经联网、获取访问认证服务器时使用的本机 IPv4,然后请求校园网登录接口。
这个工具只适合自动化你自己有权使用的校园网账号。不同学校的认证系统差异很大,如果你的学校使用短信、验证码、二次认证、动态签名或加密挑战,本脚本可能需要额外适配。
- 支持从完整登录 URL 自动生成配置
- 支持常见 eportal / Dr.COM GET 登录接口
- 支持 GET 和 POST 表单请求
- 支持 Windows 用户加密保存密码
- 支持明文密码模式,便于开机后、用户登录前以
SYSTEM计划任务运行 - 自动检测 SSID,避免在非校园网环境误请求
- 自动检测是否已经联网,避免重复登录
- 自动获取
wlan_user_ip/client_ip一类本机 IPv4 参数 - 支持计划任务:用户登录后运行,或开机后用户登录前运行
- Windows 10/11
- Windows PowerShell 5.1
- 校园网登录接口可以被普通 HTTP GET/POST 请求复现
打开 PowerShell,进入项目目录:
cd path\to\campus-net-autologin首次配置:
powershell -ExecutionPolicy Bypass -File .\CampusNetLogin.ps1 -Setup按提示填写:
- 校园 Wi-Fi 名称 SSID,可留空不限制
- 浏览器开发者工具中复制的完整登录请求 URL
- 校园网账号
- 校园网密码
手动运行一次:
powershell -ExecutionPolicy Bypass -File .\CampusNetLogin.ps1 -Once默认配置和日志位置:
C:\ProgramData\CampusNetAutoLogin\config.jsonC:\ProgramData\CampusNetAutoLogin\login.log
- 连接校园 Wi-Fi。
- 打开浏览器,进入任意网页,等待跳转到校园网认证页。
- 打开开发者工具,进入
Network/网络面板。 - 手动登录一次。
- 找到类似下面的请求:
/eportal/portal/login?callback=...&login_method=1&user_account=...&user_password=...&wlan_user_ip=...
- 复制完整 URL,运行
-Setup时粘贴。
脚本会自动把常见字段替换成模板:
user_account,account,username->{{account}}user_password,password,pwd->{{password}}wlan_user_ip,client_ip,user_ip->{{local_ip}}v,t,timestamp等 -> 随机值或时间戳
用户登录后自动运行:
powershell -ExecutionPolicy Bypass -File .\Install-CampusNetTask.ps1开机后、用户登录前自动运行:
powershell -ExecutionPolicy Bypass -File .\CampusNetLogin.ps1 -Setup -PlainTextPassword
powershell -ExecutionPolicy Bypass -File .\Install-CampusNetTask.ps1 -BeforeLogon-BeforeLogon 会把任务注册为 SYSTEM 账户运行。由于 SYSTEM 无法解密当前 Windows 用户加密的密码,所以需要先用 -PlainTextPassword 生成配置。
注意:用户登录前能否成功,取决于 Windows 是否已经在登录界面前自动连接校园 Wi-Fi。请确保该 Wi-Fi 配置为自动连接。
配置文件是 JSON,可以手动调整。核心字段:
{
"CampusSSID": "campus-wifi",
"LoginUrl": "http://portal.example.edu:801/eportal/portal/login",
"Method": "GET",
"UserAccount": "your-account",
"Parameters": {
"user_account": "{{account}}",
"user_password": "{{password}}",
"wlan_user_ip": "{{local_ip}}",
"v": "{{random4}}"
}
}可用模板变量:
{{account}}:配置中的账号{{password}}:配置中的密码{{local_ip}}:访问认证服务器时使用的本机 IPv4{{local_ipv6}}:预留 IPv6,当前为空{{random4}}:1000 到 9999 的随机数{{timestamp}}:UTC Unix 毫秒时间戳
示例配置见 examples/eportal.config.example.json。
查看日志:
Get-Content C:\ProgramData\CampusNetAutoLogin\login.log -Tail 80如果脚本提示已经请求登录但无法联网:
- 确认复制的是登录接口 URL,而不是认证页 HTML URL。
- 检查
config.json里的参数名是否和学校接口一致。 - 如果学校接口需要 POST,把
Method改成POST。 - 如果认证系统返回中文成功提示但脚本不识别,把提示关键词加入
SuccessPatterns。 - 如果访问测试网站被学校拦截,可修改
ConnectivityTestUrls。
默认 -Setup 会使用当前 Windows 用户凭据加密密码。只有当前用户、当前机器能解密。
-PlainTextPassword 会把密码明文保存到配置文件,只建议在你明确需要开机后用户登录前运行计划任务时使用。
MIT