🎯 目标读者:使用锐捷 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 打开浏览器的”透视眼”

  1. 打开 ChromeEdge 浏览器
  2. 按下神奇的 F12 键(Mac 用户按 Cmd + Option + I
  3. 切换到 Network(网络) 标签
  4. 勾选 Preserve log(保留日志),不然数据会消失!

1.2 正常登录一次

现在,打开校园网登录页面(比如 http://172.24.255.225),像平时一样:

  1. 输入学号
  2. 输入密码
  3. 选择运营商
  4. 点击登录

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 个变量改成你自己的信息:USERNAMEPASSWORDSERVICEAUTH_SERVER


第三步:部署到路由器

脚本写好了,现在要把它”安装”到路由器里。

3.1 上传脚本到路由器

有两种方式,任选其一:

方式一:通过路由器后台上传

  1. 登录 GL-MT3000 后台(默认 192.168.8.1
  2. 找到 文件管理器(ADVANCED → FILES)
  3. 导航到 /usr/bin/ 目录
  4. 上传 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
# fi

Q2: 提示密码错误?

病因:你的校园网用了 RSA 加密密码

处方

  1. 在抓包时,找到 password 参数的值(那串乱码)
  2. 把这串加密后的密码直接填到脚本里
  3. 同时把脚本里的 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 restart

Q4: 换运营商了怎么办?

处方:改一下脚本里的 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
3rc.local 里添加了启动命令
4手动运行脚本能成功登录
5重启路由器后能自动联网

全部打勾?恭喜你,从此告别手动登录! 🎊


总结

步骤操作
1抓包获取登录参数
2修改脚本配置
3上传到 /usr/bin/
4rc.local 添加启动命令
5重启验证

这个方案我已经稳定用了一个学期,再也没手动登录过一次校园网。

室友每次开机还要掏手机登录的时候,我已经开始看视频了 😎


遇到问题?

第一步永远是查看日志:cat /tmp/campus_login.log


相关阅读