Skip to content
evansrrrPublic

About

北科校园网助手

Topics

Resources

Stars

49 stars

Watchers

0 watching

Forks

Latest commit

 

History

153 Commits

Folders and files

Repository files navigation

Important

本项目进入维护模式

项目已进入维护模式,后续仅进行必要的维护与重大问题修复,不再主动开发新功能

新功能及后续版本请移步 FreeV6

logo

BKNetwork

校园网v6免流

tg | 实现原理 | Github | Gitee


Stargazers Releases License Issues

preview.webp

说明

支持以下桌面平台:

  • Windows 11 x64
  • macOS 11+(Apple Silicon 与 Intel)

在 Releases 下载对应平台的安装包。Windows 首次打开可能需要在系统提示中选择继续运行;macOS 首次打开可右键应用选择“打开”,或在“系统设置 → 隐私与安全性”中允许打开。这是因为软件没有签名,不必担心。如果遇到提示需要管理员权限,请选择同意。

运行软件后会在系统托盘/菜单栏显示图标,单击可打开界面,右键点击可 退出。

免流模式 包含 Warp 和 DNS64 两种,开一个就行。切换通常10s内完成,视网络状态好坏

Warp 免流模式 需要安装 Cloudflare Warp,首次运行选择左侧 "Private browsing",同意使用条款继续,重启后可以使用 Warp 免流模式。首次使用请在高级模式查看目标网卡,确认自动选择的是上网网卡,例如 WiFi/WLAN,而不是Warp网卡。

Windows 的网络变更由已提权进程执行;macOS 在实际修改 IPv4/IPv6 或 DNS 时会显示系统管理员授权弹窗。

Cloudflare Warp 软件下载页面(1.1.1.1)大陆地区目前无法访问,可以直接点此下载Windows最新版本,这是官方下载链接

对于北科校园网,USTB-Student 和 USTB-V6 支持免流,USTB_Wi-Fi 不支持。换句话说,免流前提是连接 USTB-Student 或 USTB-V6,校园网账号认证成功,并且电脑可以正常获取 ipv6 地址(testipv6)

开启免流时最好先关闭代理工具

高级模式 更详细的网络状态与控制选项

设置 控制软件开机自启、静默启动、Warp 客户端开机自启

注:退出软件或开关机时不会自动恢复网络状态,请手动切换。建议在关机前关闭免流模式,否则下次开机后可能因为校园网认证失败无法上网,还得关上免流再登录认证

任何免流方式都是功能大于体验

FAQ

  1. 免流模式真的能实现免流吗?

    • 使用 ipv6 不计费,具体原理 ich.cc.cd
  2. 两个免流模式有什么区别?

    • Warp 免流模式:网速快,延迟较低,steam和wegame可下载。需要安装 Cloudflare WARP 客户端,少数情况无法连接
    • DNS64 免流模式:原生 ipv6 直连表现良好,但原本不支持 ipv6 的网站较慢,少数应用无法使用
  3. 无法使用Warp免流

    • Warp 确实偶尔连不上,稍后再试
    • 确认 Cloudflare WARP 客户端已安装,且在 PATH 中可访问(首次安装需要重启)
    • 更换一个 ipv6 DNS,比如 Cloudflare 或阿里的
    • 其他代理工具可能干扰连接,关闭重试
    • 类似 VMware、 Tailscale 和蓝牙的虚拟网卡可能干扰 Warp 的 DNS 连接,考虑禁用这些虚拟网卡
  4. 免流模式不能访问校园网内网(例如校园网登录页)

    • 免流模式为仅 ipv6,而校园网内网资源仅支持 ipv4,如需访问校内资源请先关闭免流
  5. 实时流量监控

  6. 反馈 Bug & 建议

    • 欢迎提 issue。或者先问问你的 ai 朋友

开发

Tauri 桌面端

需要 Go 1.25+、Rust stable 和平台对应的 Tauri 系统依赖。Windows 还需要 Visual Studio C++ Build Tools;macOS 需要 Xcode Command Line Tools。

# 安装 Tauri CLI(只需一次)
cargo install tauri-cli --version "^2.0.0" --locked

# 开发运行;构建hook会自动生成当前架构的 Go sidecar
cargo tauri dev

# 生成当前平台安装包
cargo tauri build

应用版本只需修改 src-tauri/Cargo.toml 的 package.version;Tauri 配置和 Go sidecar 都会读取这个版本。

提交前建议启用仓库的 pre-commit hook,暂存的 Go 文件会自动运行 gofmt:

pipx install pre-commit
pre-commit install

仅构建 Go 后端(服务 / 控制台模式)

桌面界面与托盘由 Tauri 应用提供,cmd/bknetwork 只包含无界面的后端:

cd BKNetwork
go build -o bknetwork.exe ./cmd/bknetwork

它不会打开浏览器,也没有托盘图标,适合作为 Windows 服务运行或在前台排障:

# 前台运行并输出日志(Ctrl+C 退出)
.\bknetwork.exe run

# 在 Linux/macOS 环境交叉编译为 Windows amd64
GOOS=windows GOARCH=amd64 go build -o bknetwork.exe ./cmd/bknetwork

不带参数运行时会作为 Windows 服务启动(由服务管理器拉起);需要界面请使用上面的 Tauri 构建。

以服务方式安装(Windows)

# 以管理员身份打开 PowerShell
.\bknetwork.exe install
.\bknetwork.exe start

改变网络绑定或控制 warp-cli 的命令需要以管理员权限执行,接口会在权限不足或命令不可用时返回错误信息并通过 WebSocket 发布事件

常见问题与排查

  • 首次打开页面状态加载慢:采集网络快照需要调用若干 netsh 命令,首次约 2 秒,之后有 5 秒缓存;网卡名称、MAC、描述等信息缓存 60 秒并在后台刷新。疑难排查时可先看日志文件里的时序,或直接运行 go run ./cmd/bknetwork run 观察标准输出
  • warp-cli not found:如果未安装 Cloudflare WARP 客户端,/api/v1/warp 会返回错误并在日志中给出提示。安装后确保 warp-cli 在 PATH 中可访问
  • 权限不足:修改网卡绑定等操作需要管理员权限,若在非管理员上下文运行会收到 403 或相应错误信息
  • 校园网/受限网络下不想让程序联网:设置里打开「关闭联网检查」,版本检查与公网 IPv6 探测都会停止;IPv6 检测优先使用本机已有地址,不再依赖外部回显服务

日志与诊断

打包版没有控制台,所有输出都会写入按天切分的日志文件:

  • Windows:%LOCALAPPDATA%\BKNetwork\logs\bknetwork-YYYYMMDD.log(单文件超过 2 MiB 时轮转为 .log.1)
  • macOS:~/Library/Caches/BKNetwork/logs/(同样的文件名规则)
  • 每写入一次 IP 栈切换、DNS 修改、设置修改、WARP 操作都会记录一行 AUDIT action=...,并带上本次请求的 requestId(同时出现在响应的 X-Request-Id 头里),报障时提供这个 id 即可定位对应日志
  • 设置面板里的「导出诊断信息」会打开系统保存对话框让用户选择位置(旧 WebView 不支持时回退为直接下载):版本、系统、日志尾部 300 行、当前设置与网络快照;也可以直接访问 GET /api/v1/diagnostics

单元测试与检查

前端为原生 ES 模块:入口 web/app.js,web/js/ 下按依赖单向分层——dom.js(元素引用)→ state.js(共享状态)→ ui.js(渲染/同步)→ api.js(纯 fetch)→ actions.js(用户动作),入口负责事件绑定与 WebSocket。改动后运行以下检查,模块导入关系会被静态校验:

cd BKNetwork
go test ./...                       # 全部测试(无需管理员权限)
go vet ./...                        # 静态检查
node scripts/check-frontend.mjs     # 前端模块语法、导入关系、CSP 内联限制、元素 id 一致性

GitHub CI/CD

  • .github/workflows/ci.yml:
    • go(linux):gofmt 等价比对、go vet、go test -race、覆盖率(下限 35%)、构建
    • go-windows:完整测试与构建(大部分逻辑是 Windows 专属,只有这个 job 会真正编译它们),并以 CGO_ENABLED=0 构建两个可执行文件
    • frontend:scripts/check-frontend.mjs
    • static-analysis / vulnerabilities:staticcheck 与 govulncheck,目前为 advisory(首次变绿后改为阻塞)
    • tauri:Rustfmt、Clippy 与两侧 sidecar 构建
  • .github/dependabot.yml:Go 模块与 Rust 依赖按周、Actions 按月分组提 PR
  • .pre-commit-config.yaml:gofmt、go vet、前端检查
  • .github/workflows/release.yml:推送与 Cargo 版本一致的 vX.Y.Z 标签后,自动创建 GitHub Release,发布 Windows x64 NSIS、macOS Apple Silicon DMG 和 macOS Intel DMG。
# 例:src-tauri/Cargo.toml 与 internal/buildinfo/version.go 都已更新为 1.2.0
git tag v1.2.0
git push origin v1.2.0

免责声明

本软件仅供学习和研究使用,请勿用于任何非法用途。使用本软件产生的一切后果由用户自行承担。

具体包括但不限于:

  • 本软件对因使用或无法使用而导致的任何直接、间接、特殊、偶然或后果性损害不承担责任,包括但不限于数据丢失、业务中断或利润损失。
  • 开发者不保证本软件适用于任何特定目的,也不保证本软件完全没有缺陷或错误。
  • 用户应当遵守相关法律法规使用本软件,不得利用本软件进行任何非法或违规操作。
  • 用户应在遵守校园网及相关网络工具使用条款和规定的前提下使用本软件,开发者不对用户违规使用的行为及其后果负责。
  • 因使用本软件而导致的账号被限制、设备被隔离或其他损失,开发者不承担任何责任。

使用本软件即表示你已充分理解并同意本免责声明的全部条款。

赞赏

鸣谢:

Hikio,Anon,清风,Anon,SanchoTian,Gordon,·,Debuci,听枫

感谢他们的支持,新功能请移步 FreeV6

About

北科校园网助手

Topics

Resources

Stars

49 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages