小羊驼的家

在命令行环境下完成深澜校园网认证

好久没更新了……最近搞了不少项目,先更新一篇简单的教程吧。

来自2025年6月的更新

此前推荐的开源项目更新了代码,似乎去除了旧版认证系统支持,但是学校的深澜认证一直没有更新(笑)

以下脚本脚本改编自以为东北大学的学长在8年前写的脚本,经过测试可以在安装有curl的Linux Bash 环境下正常运行并完成认证;由于站长比较懒,没有检查注销功能是否有效,也没有适配其他环境的动力,可能需要读者自行尝试。

完整脚本代码如下:

#!/bin/bash

ip=`ifconfig enp1s0-ovs |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " "`
#echo $ip
option="${1}"
username=直接输入数字
passwd=直接输入密码

echo "账户名: ${username}";
# --login  登录
# --info   信息

case $option in
    --login) curl -s -H "rz.muc.edu.cn" --data "action=login&username=${username}&password=${passwd}&ac_id=5&user_ip=${ip}&nas_ip=&user_mac=&save_me=1&ajax=1" 'http://rz.muc.edu.cn/srun_portal_pc.php?url=&ac_id=1&' | grep -o -E "已经在线了|网络已连接"
    ;;
    --info) curl -s -H "rz.muc.edu.cn" --data "action=get_online_info" 'http://rz.muc.edu.cn/include/auth_action.php' | awk 'BEGIN{FS=","} {if($1=="not_online"){status="not online" } else {status="online"; total=$1/1073741824; time=$2/3600}} END{printf "账号状态: %-s\n", status; printf "已用流量: %-8.2f GB\n", total; printf "已用时长: %-8.2f hours\n", time;printf "账户余额: %-8s Yuan\n", $3; printf  "ip  地址: %-s", $6;}'
        echo 
        ;;
    --help) echo "--login 登录"
        echo "--info 信息"
        ;;
    *) echo "please input operation command, command --help"
    ;;
esac

注意其中的enp1s0-ovs需要换成连接校园网的网卡,可以通过ip addr命令查看;usernamepasswd后直接写对于内容即可,无需任何特殊符号包裹;相比之前推荐的 BitSrunLoginGo 项目,此脚本没有提供DDNS功能,如有需要,推荐使用 DDNS-go 或其他类似项目实现此功能。

以下是原文:

TL;DR

form:
  domain: 10.210.2.100 #登录地址 ip
  username: "填入你的账号" #改为你的账号
  usertype: #运营商类型,不填
  password: "填入你的密码" #改为你的密码
meta: #登录参数,以MUC环境为例
  "n": "200"
  type: "1"
  acid: "4"
  enc: srun_bx1

折腾过程

在宿舍里放了一台无头Linux小主机作为内网服务器使用,没有安装桌面环境,因此在完成必须使用浏览器完成的校园网登录认证出现了问题;在晚上查阅了许多资料,尝试使用wget命令传递参数、w3m命令行浏览器登录认证都没有解决问题,不过找到了具有参考价值的资料:

经过尝试,发现下面两个下面对MUC的校园网认证

在此更推荐第一个项目,使用Go语言使得其不需要额外配置运行环境,也支持更多平台

不过,使用默认登录参数登录失败,通过使用开发者工具分析登录页面发现acid参数不同于北理环境,修改后就能成功登录。

(顺便吐槽一下,Portal.js 中明文注释是认真的吗……)

#MUC #校园网 #Linux