Esurfing-go-webui:带 Web 管理界面的天翼校园网认证客户端

基于 Esurfing-go 的增强版本,支持多网卡管理、实时日志、会话恢复,单二进制零依赖部署。

很多学校的天翼校园网需要客户端认证才能上网,原版 Esurfing-go 已经能用命令行完成认证和心跳保活,但配置多张网卡、查看运行状态时仍然离不开手敲命令和编辑配置文件。

Esurfing-go-webui 在它的基础上加了一层 Web 管理界面,把多网卡管理、实时日志、会话恢复这些常用功能做成了可视化操作。单二进制零依赖,下载即用。


解决什么问题

一台设备(软路由、随身 WiFi、宿舍小主机)上往往有多张网卡,每张网卡可能对应不同的认证账号。原版只能靠命令行和配置文件管理,状态不直观,出问题要翻日志;进程崩溃或重启后认证状态丢失,需要重新登录。

Esurfing-go-webui 针对这些痛点,提供了浏览器里就能完成所有操作的管理面板。


相比原版的增强

Web 管理面板

响应式设计,手机、平板、电脑都能正常访问。卡片式展示每张网卡的状态,支持启用/禁用、登录/登出/强制登出等操作。系统网卡自动发现,新增网卡时不用手动猜接口名。

会话持久化与恢复

认证状态、心跳信息会持久化保存。进程崩溃或重启后自动恢复会话、续上心跳,无需重新走一遍完整的认证流程。

实时日志

通过 SSE(Server-Sent Events)实时推送日志到浏览器,支持按级别过滤。日志落盘持久化,自动清理过期条目,避免磁盘被写满。

认证冷却机制

多接口认证间自动冷却,避免短时间内并发认证导致的冲突和异常。

RESTful API

所有界面操作都有对应的 HTTP API,方便接入自动化脚本、Home Assistant 或其他自研工具。

打包与系统集成

提供 Deb 包(systemd 服务)和 Opkg 包(OpenWrt init 脚本),开箱即用,开机自启。


认证流程

了解认证流程有助于排查问题:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
HTTP 204 在线检测
  → 302 重定向(未在线)
  → GetSchoolInfo(获取学校信息)
  → GetEConfig(获取加密配置)
  → GetUserAndAcIP(获取用户与 AC 设备 IP)
  → GetAlgoId(获取算法 ID)
  → NewCipher(构造加密器,支持 AES/3DES/SM4/ZUC/XTEA)
  → GetTicket(获取 ticket)
  → Login(登录认证)
  → 心跳保活

会话持久化保存的就是登录后的会话与心跳信息,进程重启后直接续上心跳,跳过前面整套认证流程。


技术栈

项目 说明
语言 Go 1.25.3+
前端 单文件 HTML(embed 嵌入)
加密 SM4 / ZUC 国密算法(gmsm 库)
部署 单二进制 / Deb / Opkg
平台 Linux / Windows / macOS / OpenWrt

支持平台

通过 Go 交叉编译覆盖主流架构:

  • Linux:amd64、arm(v7)、arm64、mips、mipsle、mips64、mips64le、riscv64
  • Windows:amd64、arm64
  • macOS:amd64、arm64

Deb 包覆盖 amd64、armhf、arm64;Opkg 包覆盖 x86_64、arm_cortex-a9、aarch64、mips_24kc、mipsel_24kc。


部署与使用

项目支持预编译二进制、源码构建、Deb 包、Opkg 包等多种部署方式。配置文件为 JSON 格式,支持多网卡独立配置和全局设置。详细的部署步骤、配置字段说明、API 文档都在仓库 README 中。

最简部署:从 Releases 下载对应平台的二进制文件,chmod +x 后直接运行,浏览器访问 http://设备IP:8080 即可。


DNS 注意事项

如果网络环境使用了 DoH(DNS over HTTPS),未认证状态下 DoH 无法工作,会导致认证所需域名解析失败。此时需要在接口配置中手动指定 dns_address(需带端口号,如 119.29.29.29:53),一般填写 DHCP 获取的 DNS 地址即可。


相关链接

如果在使用过程中遇到问题,建议先打开 Web 界面的实时日志面板观察认证流程卡在哪一步,再结合上面的认证流程逐步排查。

使用 Hugo 构建
主题 StackJimmy 设计