🎯 目标读者:使用锐捷 ePortal 认证的校园网用户,拥有 GL-MT3000 或其他 OpenWrt 路由器,希望实现开机自动登录的同学
“室友还在掏手机输密码,我已经开始追剧了”
每次开机都要打开浏览器 → 输入学号 → 输入密码 → 选运营商 → 点登录?
作为一个合格的懒人,我决定让路由器替我干活。一个脚本,一劳永逸,从此开机即上网!
适用场景
在开始之前,先确认你是不是目标用户:
| 你的情况 | 适合度 |
|---|---|
| 📍 学校用锐捷 ePortal 认证 | ✅ 完美适配 |
| 🔌 用 GL-MT3000 或 GL.iNet 系列路由器 | ✅ 完美适配 |
| 🌐 每次上网要打开网页登录 | ✅ 完美适配 |
| 📱 需要选运营商(移动/联通/电信) | ✅ 完美适配 |
| 💻 有基础的命令行操作能力 | ⚠️ 小白可能需要多查查 |
如何判断是否为锐捷认证?
看看你的登录页面 URL 有没有
/eportal/或者页面底部写着”锐捷网络”就知道了!
效果对比
改造前:
开机 → 连WiFi → 打开浏览器 → 加载登录页 → 输学号 → 输密码 → 选运营商 → 点登录 → 等待跳转 → 上网
耗时:约 30-60 秒,操作步骤 8 个
改造后:
开机 → 连WiFi → 直接上网
耗时:0 秒(路由器后台静默完成),操作步骤 0 个
🎮 省下来的时间,够打好几把游戏了!
准备工作
开始之前,请确保你手边有:
- 一台 GL-MT3000(或其他 OpenWrt 路由器)
- 校园网账号和密码
- 一台电脑(用于抓包分析)
- SSH 工具(Windows 用 PuTTY,Mac/Linux 直接终端)
第一步:抓取登录参数
🎯 目标:搞清楚登录时浏览器到底发送了什么数据
别被”抓包”这个词吓到,其实就是看看浏览器偷偷发了什么请求。跟着做,3 分钟搞定!
1.1 打开浏览器的”透视眼”
- 打开 Chrome 或 Edge 浏览器
- 按下神奇的 F12 键(Mac 用户按
Cmd + Option + I) - 切换到 Network(网络) 标签
- 勾选 Preserve log(保留日志),不然数据会消失!
1.2 正常登录一次
现在,打开校园网登录页面(比如 http://172.24.255.225),像平时一样:
- 输入学号
- 输入密码
- 选择运营商
- 点击登录
1.3 寻宝时间!找到关键请求
登录成功后,在左边的请求列表里找一个叫 InterFace.do?method=login 的请求。
找到了?点它!在右边的 Payload(载荷) 或 Form Data 里面,你会看到这些宝贝参数:
| 参数名 | 含义 | 示例值 |
|---|---|---|
userId | 你的学号 | 2402****** |
password | 密码(可能被加密了) | xxxx |
service | 运营商代码 | cm / unicom / chinanet |
queryString | 认证相关参数 | wlanuserip%3D172.25.8.88... |
找不到请求?
试试在 Filter(过滤)框里输入
login缩小范围!
密码显示乱码?
别慌,可能是 RSA 加密了,后面「常见问题」章节会讲怎么处理。
1.4 另一个取巧方法
如果上面的方法没找到,试试去 Application → Cookies 里看看,可能有:
EPORTAL_COOKIE_USERNAME→ 你的学号EPORTAL_COOKIE_SERVER→ 你选的运营商
第二步:编写自动登录脚本
现在我们来写一个脚本,让路由器每次开机自动帮你登录。
在电脑上创建一个文件 campus_login.sh,复制下面的代码:
#!/bin/sh
# ╔════════════════════════════════════════════════════════════╗
# ║ 🎓 校园网自动登录脚本 v1.0 ║
# ║ 适用于:锐捷 ePortal + GL-MT3000 ║
# ╚════════════════════════════════════════════════════════════╝
# ============ 【必改】你的个人信息 ============
USERNAME="你的学号" # 例: 2402******
PASSWORD="你的密码" # 例: password123
SERVICE="cm" # cm=移动, unicom=联通, chinanet=电信
AUTH_SERVER="http://172.24.255.225" # 认证服务器地址
# ============ 以下是脚本逻辑,不用动 ============
# 日志函数,方便排查问题
log_info() {
logger -t "campus_login" "$1"
echo "[$(date '+%H:%M:%S')] $1"
}
# 检测网络是否通畅
check_internet() {
# 方法1:ping 阿里DNS
ping -c 1 -W 3 223.5.5.5 > /dev/null 2>&1 && return 0
# 方法2:HTTP检测
local result=$(curl -s --connect-timeout 5 "http://connect.rom.miui.com/generate_204" -w "%{http_code}" -o /dev/null)
[ "$result" = "204" ] && return 0
return 1
}
# 获取路由器的 WAN 口 IP
get_wan_ip() {
ip addr show eth0 2>/dev/null | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1 | head -1
}
# 执行登录请求
do_login() {
local wan_ip=$(get_wan_ip)
[ -z "$wan_ip" ] && wan_ip="172.25.8.88" # 备用默认值
local query="wlanuserip%3D${wan_ip}%26wlanacname%3DBRAS"
curl -s -X POST "${AUTH_SERVER}/eportal/InterFace.do?method=login" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "userId=${USERNAME}&password=${PASSWORD}&service=${SERVICE}&queryString=${query}&operatorPwd=&operatorUserId=&validcode=&passwordEncrypt=false"
}
# ============ 主程序开始 ============
log_info "🚀 ========== 校园网自动登录启动 =========="
# 等待网络接口就绪
sleep 5
# 检测是否已经联网
if check_internet; then
log_info "✅ 网络已通,无需登录,收工!"
exit 0
fi
log_info "❌ 检测到未联网,开始自动登录..."
# 最多尝试 3 次
for i in 1 2 3; do
log_info "📡 第 ${i} 次尝试登录..."
response=$(do_login)
log_info "📨 服务器响应: $response"
sleep 3
if check_internet; then
log_info "🎉 登录成功!网络已连通!"
exit 0
fi
sleep 2
done
log_info "💔 登录失败,请检查账号密码或网络配置"
exit 1必须修改的配置
记得把前 4 个变量改成你自己的信息:
USERNAME、PASSWORD、SERVICE、AUTH_SERVER
第三步:部署到路由器
脚本写好了,现在要把它”安装”到路由器里。
3.1 上传脚本到路由器
有两种方式,任选其一:
方式一:通过路由器后台上传
- 登录 GL-MT3000 后台(默认
192.168.8.1) - 找到 文件管理器(ADVANCED → FILES)
- 导航到
/usr/bin/目录 - 上传
campus_login.sh
方式二:用 SCP 命令行上传
scp campus_login.sh root@192.168.8.1:/usr/bin/3.2 添加执行权限
SSH 连接到路由器,执行:
chmod +x /usr/bin/campus_login.sh不知道怎么 SSH?
- Windows:下载 PuTTY,输入
192.168.8.1,用户名root- Mac/Linux:终端输入
ssh root@192.168.8.1
3.3 设置开机自动运行
这一步是关键!我们要让路由器每次开机都自动执行这个脚本。
vi /etc/rc.local找到 exit 0(通常在最后一行),在它上面加一行:
sleep 20 && /usr/bin/campus_login.sh >> /tmp/campus_login.log 2>&1 &保存退出(按 Esc,输入 :wq,回车)
懒人专用一键配置命令
sed -i '/exit 0/i sleep 20 && /usr/bin/campus_login.sh >> /tmp/campus_login.log 2>&1 &' /etc/rc.local
3.4 确认配置成功
cat /etc/rc.local看到类似下面的内容就对了:
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
sleep 20 && /usr/bin/campus_login.sh >> /tmp/campus_login.log 2>&1 &
exit 0
第四步:验证成果
激动人心的时刻到了!
4.1 手动测试
/usr/bin/campus_login.sh如果看到 🎉 登录成功!网络已连通!,说明脚本没问题 ✅
4.2 重启测试
reboot等待约 30 秒,然后连接 WiFi,直接打开网页试试——能上网了吗? 🎮
4.3 查看运行日志
想知道脚本干了啥?看日志:
cat /tmp/campus_login.log你会看到类似这样的记录:
[12:30:15] 🚀 ========== 校园网自动登录启动 ==========
[12:30:20] ❌ 检测到未联网,开始自动登录...
[12:30:20] 📡 第 1 次尝试登录...
[12:30:21] 📨 服务器响应: {"result":"success","message":"..."}
[12:30:24] 🎉 登录成功!网络已连通!
脚本暂停恢复代码
暂停
sed -i 's|sleep 20 && /usr/bin/campus_login.sh|# sleep 20 \&\& /usr/bin/campus_login.sh|' /etc/rc.local恢复
sed -i 's|# sleep 20 && /usr/bin/campus_login.sh|sleep 20 \&\& /usr/bin/campus_login.sh|' /etc/rc.local常见问题排查
Q1: 显示”已联网”但实际上不了网?
病因:网络检测误判了
处方:编辑脚本,把 check_internet 函数里的检测逻辑注释掉,让它每次都尝试登录:
# 临时方案:直接注释掉联网检测
# if check_internet; then
# log_info "✅ 网络已通,无需登录"
# exit 0
# fiQ2: 提示密码错误?
病因:你的校园网用了 RSA 加密密码
处方:
- 在抓包时,找到
password参数的值(那串乱码) - 把这串加密后的密码直接填到脚本里
- 同时把脚本里的
passwordEncrypt=false改成passwordEncrypt=true
Q3: 登录成功但过一会儿又断了?
病因:校园网有心跳检测,长时间不活动会被踢下线
处方:设置定时任务,每 10 分钟检测一次:
# 添加定时任务
echo "*/10 * * * * /usr/bin/campus_login.sh >> /tmp/campus_login.log 2>&1" >> /etc/crontabs/root
# 重启定时服务
/etc/init.d/cron restartQ4: 换运营商了怎么办?
处方:改一下脚本里的 SERVICE 变量就行:
| 运营商 | 代码 |
|---|---|
| 🔴 中国移动 | cm |
| 🔵 中国联通 | unicom |
| 🟢 中国电信 | chinanet |
Q5: 脚本完全不工作?
排查步骤:
# 1. 检查脚本是否有执行权限
ls -la /usr/bin/campus_login.sh
# 2. 检查 rc.local 配置是否正确
cat /etc/rc.local
# 3. 手动运行看报错
/usr/bin/campus_login.sh
# 4. 检查网络接口
ip addr show eth0文件结构一览
配置完成后,你的路由器里应该有这些文件:
📂 /usr/bin/
└── campus_login.sh ← 主脚本
📂 /etc/
└── rc.local ← 启动配置(我们加了一行)
📂 /tmp/
└── campus_login.log ← 运行日志(自动生成)
最终检验清单
完成所有步骤后,用这个清单确认一下:
| 步骤 | 检查项 | 状态 |
|---|---|---|
| 1 | 脚本已上传到 /usr/bin/campus_login.sh | ☐ |
| 2 | 脚本有执行权限(chmod +x) | ☐ |
| 3 | rc.local 里添加了启动命令 | ☐ |
| 4 | 手动运行脚本能成功登录 | ☐ |
| 5 | 重启路由器后能自动联网 | ☐ |
全部打勾?恭喜你,从此告别手动登录! 🎊
总结
| 步骤 | 操作 |
|---|---|
| 1 | 抓包获取登录参数 |
| 2 | 修改脚本配置 |
| 3 | 上传到 /usr/bin/ |
| 4 | 在 rc.local 添加启动命令 |
| 5 | 重启验证 |
这个方案我已经稳定用了一个学期,再也没手动登录过一次校园网。
室友每次开机还要掏手机登录的时候,我已经开始看视频了 😎
遇到问题?
第一步永远是查看日志:
cat /tmp/campus_login.log