📌 项目地址p1neappleXpress/OpenFlux | ⭐ 1,006 颗星 | 🔧 Go | 📜 未标注

先看架构

Client (SOCKS5) --> Transport --> Exit Node --> Internet

本地跑一个 SOCKS5 代理,流量交给 Transport 层送到出口节点,出口节点解封装后转发到目标。这套链路本身不新鲜,新鲜的是 Transport 层的两个实现:

  1. Yandex:数据包通过 Yandex Docs 的光标消息传输。就是协作文档里“别人光标在动”的那条通道,被拿来传 TCP 包了。
  2. 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 要不要。

这篇文章对你有帮助吗?

发表回复