<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>校园网 - EchoPing&#39;s Blog</title>
        <link>/tags/%E6%A0%A1%E5%9B%AD%E7%BD%91/</link>
        <description>最新内容 - 校园网 - EchoPing&#39;s Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sat, 30 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="/tags/%E6%A0%A1%E5%9B%AD%E7%BD%91/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Esurfing-go-webui：带 Web 管理界面的天翼校园网认证客户端</title>
            <link>/projects/esurfing-go-webui/</link>
            <pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate>
            <guid>/projects/esurfing-go-webui/</guid>
            <description>&lt;p&gt;很多学校的天翼校园网需要客户端认证才能上网，原版 &lt;a class=&#34;link&#34; href=&#34;https://github.com/DreamwareN/Esurfing-go&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Esurfing-go&lt;/a&gt; 已经能用命令行完成认证和心跳保活，但配置多张网卡、查看运行状态时仍然离不开手敲命令和编辑配置文件。&lt;/p&gt;&#xA;&lt;p&gt;Esurfing-go-webui 在它的基础上加了一层 Web 管理界面，把多网卡管理、实时日志、会话恢复这些常用功能做成了可视化操作。单二进制零依赖，下载即用。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;解决什么问题&#34;&gt;解决什么问题&#xA;&lt;/h2&gt;&lt;p&gt;一台设备（软路由、随身 WiFi、宿舍小主机）上往往有多张网卡，每张网卡可能对应不同的认证账号。原版只能靠命令行和配置文件管理，状态不直观，出问题要翻日志；进程崩溃或重启后认证状态丢失，需要重新登录。&lt;/p&gt;&#xA;&lt;p&gt;Esurfing-go-webui 针对这些痛点，提供了浏览器里就能完成所有操作的管理面板。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;相比原版的增强&#34;&gt;相比原版的增强&#xA;&lt;/h2&gt;&lt;h3 id=&#34;web-管理面板&#34;&gt;Web 管理面板&#xA;&lt;/h3&gt;&lt;p&gt;响应式设计，手机、平板、电脑都能正常访问。卡片式展示每张网卡的状态，支持启用/禁用、登录/登出/强制登出等操作。系统网卡自动发现，新增网卡时不用手动猜接口名。&lt;/p&gt;&#xA;&lt;h3 id=&#34;会话持久化与恢复&#34;&gt;会话持久化与恢复&#xA;&lt;/h3&gt;&lt;p&gt;认证状态、心跳信息会持久化保存。进程崩溃或重启后自动恢复会话、续上心跳，无需重新走一遍完整的认证流程。&lt;/p&gt;&#xA;&lt;h3 id=&#34;实时日志&#34;&gt;实时日志&#xA;&lt;/h3&gt;&lt;p&gt;通过 SSE（Server-Sent Events）实时推送日志到浏览器，支持按级别过滤。日志落盘持久化，自动清理过期条目，避免磁盘被写满。&lt;/p&gt;&#xA;&lt;h3 id=&#34;认证冷却机制&#34;&gt;认证冷却机制&#xA;&lt;/h3&gt;&lt;p&gt;多接口认证间自动冷却，避免短时间内并发认证导致的冲突和异常。&lt;/p&gt;&#xA;&lt;h3 id=&#34;restful-api&#34;&gt;RESTful API&#xA;&lt;/h3&gt;&lt;p&gt;所有界面操作都有对应的 HTTP API，方便接入自动化脚本、Home Assistant 或其他自研工具。&lt;/p&gt;&#xA;&lt;h3 id=&#34;打包与系统集成&#34;&gt;打包与系统集成&#xA;&lt;/h3&gt;&lt;p&gt;提供 Deb 包（systemd 服务）和 Opkg 包（OpenWrt init 脚本），开箱即用，开机自启。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;认证流程&#34;&gt;认证流程&#xA;&lt;/h2&gt;&lt;p&gt;了解认证流程有助于排查问题：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HTTP 204 在线检测&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → 302 重定向（未在线）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → GetSchoolInfo（获取学校信息）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → GetEConfig（获取加密配置）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → GetUserAndAcIP（获取用户与 AC 设备 IP）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → GetAlgoId（获取算法 ID）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → NewCipher（构造加密器，支持 AES/3DES/SM4/ZUC/XTEA）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → GetTicket（获取 ticket）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → Login（登录认证）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → 心跳保活&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;会话持久化保存的就是登录后的会话与心跳信息，进程重启后直接续上心跳，跳过前面整套认证流程。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;技术栈&#34;&gt;技术栈&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;项目&lt;/th&gt;&#xA;          &lt;th&gt;说明&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;语言&lt;/td&gt;&#xA;          &lt;td&gt;Go 1.25.3+&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;前端&lt;/td&gt;&#xA;          &lt;td&gt;单文件 HTML（embed 嵌入）&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;加密&lt;/td&gt;&#xA;          &lt;td&gt;SM4 / ZUC 国密算法（gmsm 库）&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;部署&lt;/td&gt;&#xA;          &lt;td&gt;单二进制 / Deb / Opkg&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;平台&lt;/td&gt;&#xA;          &lt;td&gt;Linux / Windows / macOS / OpenWrt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;支持平台&#34;&gt;支持平台&#xA;&lt;/h2&gt;&lt;p&gt;通过 Go 交叉编译覆盖主流架构：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt;：amd64、arm（v7）、arm64、mips、mipsle、mips64、mips64le、riscv64&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;：amd64、arm64&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;macOS&lt;/strong&gt;：amd64、arm64&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Deb 包覆盖 amd64、armhf、arm64；Opkg 包覆盖 x86_64、arm_cortex-a9、aarch64、mips_24kc、mipsel_24kc。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;部署与使用&#34;&gt;部署与使用&#xA;&lt;/h2&gt;&lt;p&gt;项目支持预编译二进制、源码构建、Deb 包、Opkg 包等多种部署方式。配置文件为 JSON 格式，支持多网卡独立配置和全局设置。详细的部署步骤、配置字段说明、API 文档都在仓库 README 中。&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;最简部署：从 Releases 下载对应平台的二进制文件，&lt;code&gt;chmod +x&lt;/code&gt; 后直接运行，浏览器访问 &lt;code&gt;http://设备IP:8080&lt;/code&gt; 即可。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;dns-注意事项&#34;&gt;DNS 注意事项&#xA;&lt;/h2&gt;&lt;p&gt;如果网络环境使用了 DoH（DNS over HTTPS），未认证状态下 DoH 无法工作，会导致认证所需域名解析失败。此时需要在接口配置中手动指定 &lt;code&gt;dns_address&lt;/code&gt;（需带端口号，如 &lt;code&gt;119.29.29.29:53&lt;/code&gt;），一般填写 DHCP 获取的 DNS 地址即可。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;相关链接&#34;&gt;相关链接&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/EchoPing07/Esurfing-go-webui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;EchoPing07/Esurfing-go-webui&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;原版项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/DreamwareN/Esurfing-go&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;DreamwareN/Esurfing-go&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;如果在使用过程中遇到问题，建议先打开 Web 界面的实时日志面板观察认证流程卡在哪一步，再结合上面的认证流程逐步排查。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
