Skip to content

Releases: demo133/campusnet

校园网助手 v0.1.2 · 图形版

Choose a tag to compare

@demo133 demo133 released this 17 Sep 02:17

v0.1.2

  • 新增新版 eportal 门户支持:认证接口为 portal/login(JSONP)的学校现在可以用了;运营商下拉框对应账号后缀(@cmcc / @unicom / @telecom),在向导里选好即可
  • 探测识别增强:网关重定向地址里的门户参数参与指纹识别
  • 修复开机自启崩溃:图形版里开启「开机自启」后重启弹「NoneType object has no attribute write」的问题已修复;旧版本写坏的启动项会在新版启动时自动修正
  • 双击即可自动连网:已配置账号的情况下,打开程序检测到没联网会自动尝试连接一次

Windows 10 / 11(64 位)。下载 campusnet-gui.zip,解压后双击「校园网助手.exe」。
首次运行如遇 SmartScreen 提示,点「更多信息 → 仍要运行」;解压后找不到 exe 请看压缩包里的《使用说明》第 3 条。

校园网助手 v0.1.1 · 图形版

Choose a tag to compare

@demo133 demo133 released this 16 Sep 05:13

图形版修复(v0.1.1)

  • 设置窗口在小屏 / 高缩放电脑上填不完表单:设置页现在可以滚动(滚轮 / 右侧滚动条),窗口也能缩放,高度自动适应屏幕
  • 探测日志不再挤占填写区域
  • 开机自启不再闪黑色终端窗口
  • 新增守护进程单实例锁,避免重复启动互相干扰

Windows 10 / 11(64 位)。下载 campusnet-gui.zip,解压后双击「校园网助手.exe」即可。
首次运行如遇 SmartScreen 提示,点「更多信息 → 仍要运行」;解压后找不到 exe 请看压缩包里的《使用说明》第 3 条。

campusnet v0.1.0 · 校园网自动登录

Choose a tag to compare

@demo133 demo133 released this 15 Sep 02:43

campusnet v0.1.0

一条命令搞定校园网 Portal 认证。开机自动登录,断网自动重连。

第一个公开版本。零依赖、跨平台,自动识别学校用的认证系统。

已在真实校园网环境实测通过。


亮点

认识市面上主流的四类校园网认证系统,并自动认出来是哪一类

不用你翻文档、抓包、告诉它学校用的哪家。campusnet 会拉门户页面做指纹识别,
按置信度排序后逐个尝试。

Provider 认证系统 状态
drcom Dr.COM 城市热点 ✅ 真实校园网环境实测
srun 深澜 Srun(含 srun_bx1 自研编码) 已实现,待验证
ruijie 锐捷 Ruijie 已实现,待验证
eportal 华为 / 通用 eportal 已实现,待验证
custom 自定义模板 ✅

零第三方依赖

只用 Python 标准库。HTTP 用 urllib,深澜的加密用 hashlib + 手写实现。
宿舍网络再差也能装上,不用担心 pip 拉一堆包失败。

联网判定不被白名单欺骗

很多学校会把 generate_204 这类探测地址加白名单,导致自动化工具误判"已经联上网了"。
campusnet 用两道关卡:先探测劫持,再抓真实网页校验内容,两关都过才算通。

装了就不用管

campusnet autostart install

Windows 走注册表 Run 项(用 pythonw.exe 无窗口启动)、macOS 走 LaunchAgent、
Linux 走 systemd 用户服务——都不需要管理员权限。

守护模式每 10 分钟检查一次;网络恢复(比如学校夜里断网结束)后会自动重新认证。
联网正常时它完全安静,一行日志都不写。


安装

pip install git+https://github.com/demo133/campusnet.git

要求 Python 3.8+,无第三方依赖。也可以克隆后直接 python -m campusnet 使用。

快速开始

campusnet setup               # 交互式生成配置,自动探测你学校的认证方式
campusnet login               # 登录一次试试
campusnet autostart install   # 装成开机自启,完事

想先看它能不能认出你学校:

campusnet detect

实测情况

在 真实校园网环境 的真实门户上跑通:

$ campusnet detect --portal 10.20.30.1

  ✔ 门户地址:http://10.20.30.1
  • HTTP:200  Server:DrcomServer1.0
  • 页面标题:上网登录页
  • client_ip:10.20.30.40

  ✔ 指纹识别结果:
      drcom      1.00  Dr.COM 城市热点
      eportal    0.85  通用 eportal / 华为 AC

自动识别出厂商,并按 1.00 / 0.85 的置信度排好了尝试顺序。43 个单元测试全部通过。


已知限制

  • srun / ruijie / eportal 尚未在真实服务器上验证。 只有单元测试覆盖了
    请求参数拼装和响应解析。如果你学校用的是这三家,欢迎跑一次并反馈结果——
    成功和失败都有价值。
  • detect 在已联网状态下探测不到门户(Portal 页面只在未认证时出现),
    这时需要手动指定:campusnet detect --portal 10.0.0.1。
  • 少数私有 Portal 没有任何可调用的接口,只能靠 custom provider 自己描述请求格式。

反馈

最需要的是更多学校的指纹样本。跑一下:

campusnet detect --verbose

把输出发到 Issues
(记得先把账号、IP、MAC 打码)。通常加一条指纹规则就能支持一所新学校。

想自己动手加支持的,见 docs/providers.md。


致谢

感谢 @workbuddy 在协议勘察和实现过程中的协助。

License

MIT