Skip to content

Latest commit

 

History

History
166 lines (107 loc) · 7.3 KB

File metadata and controls

166 lines (107 loc) · 7.3 KB

校园网连接规则与认证说明

本文档记录 NetKeeper 当前使用的校园网连接规则和安徽理工大学 Drcom 网关适配信息。它说明软件如何选择认证出口、如何判断外网是否可用,以及网络异常时如何重新认证。

适用范围

当前配置只针对安徽理工大学校园网认证网关,不是通用的校园网认证客户端。学校网关地址、接口格式或出口规则发生变化时,需要同步更新程序配置和本文档。

当前配置集中在 src/main/aust-drcom-config.ts

  • 认证首页:http://10.255.0.19/
  • 登录接口:http://10.255.0.19/drcom/login

这些地址是校园网内网地址,只有电脑已经接入学校网络或能够访问该网段时才可能完成认证。

账号与认证出口规则

界面中的“校园网账号”只填写学号,不要手动填写运营商后缀。软件会根据“运营商 / 认证出口”自动拼接后缀,提交给网关的 DDDDD 参数。

界面选项 提交后缀 说明
教职工出口 @jzg 需要满足学校网关对接入位置、IP、MAC、NAS、端口等条件的限制
学生电信出口 @aust 学生电信出口
学生联通出口 @unicom 学生联通出口
学生移动出口 @cmcc 学生移动出口

例如,账号填写 20240001,选择“学生电信出口”后,登录请求会提交:

DDDDD=20240001@aust

如果账号、密码或认证出口没有填写完整,软件不会发送登录请求。

教职工出口限制

教职工出口对应后缀 @jzg,登录时提交为 DDDDD=账号@jzg。该出口通常有接入环境限制,必须在学校网关允许的 IP、MAC、NAS 或端口范围内使用。即使账号和密码正确,如果当前接入位置不匹配,也可能认证失败。

典型错误:

Rad:Mac, IP, NASip, PORT err(2)!

这通常不是密码错误,也不是 NetKeeper 拼接参数错误,而是当前接入环境不满足教职工出口要求。可以按以下顺序排查:

  1. 确认当前电脑接入的是教职工网络环境。
  2. 如果当前处于学生网络环境,改选学生电信、学生联通或学生移动出口。
  3. 如果确认接入环境正确仍失败,联系学校网络管理员检查账号、MAC、IP、NAS 或端口绑定。

登录请求流程

网络异常后,NetKeeper 按以下顺序执行一次重新认证:

  1. 访问认证首页 http://10.255.0.19/,尝试建立会话并获取 Cookie。
  2. 构造 Drcom 登录地址并发起 GET 请求。
  3. 请求使用随机 JSONP callback 和随机 v 参数,降低网关缓存影响。
  4. 请求携带账号、密码、认证出口后缀以及网关要求的固定参数。
  5. 根据 JSON、JSONP 或非标准文本中的 result、错误信息和关键字判断成功或失败。

登录请求中的主要参数包括:

callback=dr<四位随机数字>
DDDDD=<学号><运营商后缀>
upass=<密码>
0MKKey=123456
R1=0
R3=0
R6=0
para=00
v6ip=
v=<四位随机数字>

登录请求超时时间为 8 秒,认证首页预热请求超时时间为 5 秒。软件会使用 Referer、User-Agent 和 Accept 请求头模拟正常浏览器访问。

外网检测规则

检测地址与顺序

开启自动重连后,软件会立即检测一次,之后按照配置的检测间隔重复检测。默认间隔为 30 秒,最小值为 10 秒。

检测地址按顺序使用:

https://www.baidu.com
https://www.aliyun.com

每个地址最多等待 5 秒。只要其中一个地址能够确认外网正常,就结束本轮检测,不再请求另一个地址。

判定为网络正常

满足以下条件时,当前检测地址会被判定为在线:

  • HTTP 响应正常(不是 3xx,也不是其他非成功状态码)。
  • 最终 URL 没有回到校园网认证网关或其他内网地址。
  • 响应正文前 3000 个字符没有命中校园网认证页特征关键词。

判定为网络异常

以下情况会被判定为异常:

  • 请求超时、DNS 失败、TLS 失败或连接失败。
  • 返回 3xx 跳转。跳转到 10.255.0.19 时会明确提示被重定向到校园网登录页;跳转到其他地址也会暂时按异常处理。
  • 返回非成功 HTTP 状态码,例如 403 或 500。
  • 最终 URL 是 10.*192.168.*172.16.*172.31.* 的私有 IPv4 地址。
  • 响应内容包含“学生认证网关”“安徽理工大学学生认证网关”“请选择出口”“登录成功页”等认证页特征。

只有百度和阿里云都无法确认外网正常时,本轮检测才会返回网络异常,并进入重新登录流程。

自动重连规则

自动重连的运行状态包括:空闲、检测中、在线、离线、正在登录和登录失败。

  • 网络正常时只更新状态和日志,不会重复登录。
  • 网络从在线变为异常时,会记录“网络异常,准备重新登录”。
  • 网络异常时每个检测周期最多发起一次登录任务。
  • 登录成功后状态恢复为在线。
  • 登录失败后显示失败原因,下一次检测周期仍会再次检测并尝试登录。
  • 软件会阻止检测任务和登录任务重叠执行,但当前没有指数退避机制。

因此,软件不是定时强制登录,而是“检测到外网不可达后才重新认证”。

代理与网络环境

网络检测和校园网认证都使用独立的 Electron Session:

  • Session 分区为 netkeeper-direct-network
  • 代理模式设置为 direct
  • 初始化时会关闭已有连接。
  • 请求会绕过 Electron 自定义协议处理器。

这个通道主要用于减少系统代理或 Electron 代理配置对认证的影响。它不能保证绕过 VPN、Clash TUN、透明代理、iptables 或网络管理器在网络层进行的接管。

Windows 下已实测 Clash 普通代理和 TUN 模式;Linux 下是否能够正常绕过代理取决于发行版、桌面环境、VPN 和网络管理器的配置。

常见问题排查

两个外网地址都检测失败

先确认浏览器是否能够访问百度和阿里云,再检查是否被 VPN、代理、防火墙或 DNS 配置拦截。某个检测站点本身不可访问时,也可能造成误判。

被重定向到校园网登录页

这表示当前电脑仍处于校园网认证拦截状态。软件会尝试重新登录;如果登录失败,需要检查账号、密码、认证出口和接入环境。

返回 Rad:Mac, IP, NASip, PORT err(2)!

优先检查是否误选了教职工出口,或当前接入位置不满足教职工出口限制。学生网络环境通常应选择对应的学生运营商出口。

登录成功但外网仍不可用

等待下一轮检测确认状态,并检查系统是否仍启用了 VPN、TUN 或透明代理。应用层直连设置无法覆盖网络层接管。

需要修改网关时的代码位置

如果学校认证接口发生变化,优先检查并更新:

  • src/main/aust-drcom-config.ts:网关地址、运营商后缀、固定参数和关键字。
  • src/main/campus-login.ts:登录请求构造、响应解析和错误处理。
  • src/main/network-checker.ts:外网检测地址与认证页识别规则。
  • src/main/direct-fetch.ts:独立直连 Session 和代理处理。

修改后应重新运行类型检查、构建,并在真实校园网环境中验证登录和断网重连。