本文档记录 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 拼接参数错误,而是当前接入环境不满足教职工出口要求。可以按以下顺序排查:
- 确认当前电脑接入的是教职工网络环境。
- 如果当前处于学生网络环境,改选学生电信、学生联通或学生移动出口。
- 如果确认接入环境正确仍失败,联系学校网络管理员检查账号、MAC、IP、NAS 或端口绑定。
网络异常后,NetKeeper 按以下顺序执行一次重新认证:
- 访问认证首页
http://10.255.0.19/,尝试建立会话并获取 Cookie。 - 构造 Drcom 登录地址并发起 GET 请求。
- 请求使用随机 JSONP callback 和随机
v参数,降低网关缓存影响。 - 请求携带账号、密码、认证出口后缀以及网关要求的固定参数。
- 根据 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 配置拦截。某个检测站点本身不可访问时,也可能造成误判。
这表示当前电脑仍处于校园网认证拦截状态。软件会尝试重新登录;如果登录失败,需要检查账号、密码、认证出口和接入环境。
优先检查是否误选了教职工出口,或当前接入位置不满足教职工出口限制。学生网络环境通常应选择对应的学生运营商出口。
等待下一轮检测确认状态,并检查系统是否仍启用了 VPN、TUN 或透明代理。应用层直连设置无法覆盖网络层接管。
如果学校认证接口发生变化,优先检查并更新:
src/main/aust-drcom-config.ts:网关地址、运营商后缀、固定参数和关键字。src/main/campus-login.ts:登录请求构造、响应解析和错误处理。src/main/network-checker.ts:外网检测地址与认证页识别规则。src/main/direct-fetch.ts:独立直连 Session 和代理处理。
修改后应重新运行类型检查、构建,并在真实校园网环境中验证登录和断网重连。