📌 项目地址:p1neappleXpress/OpenFlux | ⭐ 1,006 颗星 | 🔧 Go | 📜 未标注
先看架构
Client (SOCKS5) --> Transport --> Exit Node --> Internet
本地跑一个 SOCKS5 代理,流量交给 Transport 层送到出口节点,出口节点解封装后转发到目标。这套链路本身不新鲜,新鲜的是 Transport 层的两个实现:
- Yandex:数据包通过 Yandex Docs 的光标消息传输。就是协作文档里“别人光标在动”的那条通道,被拿来传 TCP 包了。
- Max:通过 WebRTC DataChannel,借 MAX Messenger 的通道传。
也就是说,隧道不需要自己的服务器中转数据(出口节点除外),管道是现成的第三方协作/通讯服务。对旁观者来说,这些流量看起来就是普通的文档编辑或即时聊天。
项目自我定位是“网络栈研究工具”,README 里有一大段免责声明,反复强调所有特性都是“架构巧合”、“无意为之”,不承担任何使用后果,fork 出去的版本也不管。这种写法本身就很说明项目的实际用途。
代码结构
universal-bypass-tool/
├── main.go
├── transport/
│ ├── transport.go # Transport 接口
│ ├── yandex/ # Yandex Docs 后端
│ └── oneme/ # MAX Messenger 后端
├── tunnel/
│ ├── tunnel.go # TCP 隧道核心
│ ├── endpoint.go # 虚拟网卡
│ └── rawsocket.go # Raw socket(出口节点)
├── socks5/ # SOCKS5 服务器
├── network/ # 校验和、数据包解析
└── utils/ # 调试日志
transport/transport.go 里的接口是整个设计的核心:Transport 是可插拔的,yandex 和 oneme 是两个现成实现。想借别的服务传数据,理论上写一个新 backend 就行。
tunnel 和 network 目录更有阅读价值。校验和、包解析、虚拟网卡、raw socket 都是项目自己实现的,代码量不大,正好当用户态网络栈的入门教材。SOCKS5 服务器也是从零写的。
构建
依赖环境:
- Golang 1.26.3+(桌面客户端 / 出口节点)
- Android NDK 27.0.12077973+(Android 客户端)
- Xcode 26.6+(iOS 客户端)
- 一台 Linux VPS/VDS 做出口节点
桌面端和出口节点是同一个二进制:
go mod tidy
go build -o universal-bypass-tool .
Android 端:
export ANDROID_NDK_HOME=
./build_android.sh
iOS 端设置 XCODE_PATH 后构建,README 在这里被截断了,运行参数和配置没给出,需要自己去仓库翻。
风险,别跳过这部分
MAX transport 的警告是 README 里用大写加粗写的,原文要点:
- 不要用主账号或重要账号
- 不要用丢了会致命的账号
- 通过外部 VPS 使用可能导致账号受限
- 限制在停止使用后可能仍然存在
- 在弄清封禁机制之前,MAX transport 应视为实验性
我补两点 README 没写但显然成立的:这类工具的存活完全取决于 Yandex 和 MAX 的容忍度,接口一改或检测一加,随时失效;其次光标消息这种通道的吞吐量和延迟大概率好不了,看架构就知道它适合传文本,不适合看视频。
值不值得看
1006 颗星,对一个这种性质的项目来说不算少,说明“非常规信道”这个方向确实有人持续在做。
两类人会有收获:一是研究流量伪装和信道隐藏的人——Yandex Docs 光标消息这个思路本身就值得拆开看看它怎么实现的;二是想学用户态 TCP/IP 栈实现的人,校验和、包解析、虚拟网卡这套代码干净直接,比读 Linux 内核源码友好得多。
拿来日常翻墙用?先想想你的 Yandex 账号和 VPS 要不要。