
通过视频通话平台(VK Call、Yandex Telemost、WB Stream)隧道传输互联网流量,以绕过政府白名单审查。
分步设置指南(俄语):docs/SETUP.md
提供两种隧道模式:DC(DataChannel)和 Video(VP8 数据编码)。推荐配置为两端均使用无头模式——纯 Go(Pion)直接与平台的 SFU 通信,无需浏览器。ChaCha20 混淆、可配置的 VP8 节奏控制以及 LiveKit/WB Stream 后端均为无头模式专属功能。
旧版浏览器路径(Android WebView 加入方对接带有 JS 钩子的 Electron 桌面创建方)仍可用于 VK DC,但速度较慢、无法混淆,且正在被逐步淘汰。新部署应使用无头模式。
Pion 在发布者 PC 上打开一个 SCTP DataChannel,并通过它隧道传输 TCP/UDP。帧像其他 DataChannel 负载一样通过平台的 SFU。
Joiner (censored, Android/iOS/Linux) Creator (free internet)
All apps
|
VpnService (captures all traffic)
|
tun2socks (IP -> TCP)
|
SOCKS5 proxy (Go, :1080)
|
Headless joiner (Pion) Headless creator (Pion)
| |
DataChannel <------- SFU -------> DataChannel
|
Relay bridge
|
Internet
与 DC 模式相同的管道,但隧道承载在已发布的 VP8 视频轨道上,而非 SCTP DataChannel。当 SFU 对 DataChannel 限速但允许 RTP 通过时(例如 Telemost)非常有用,在某些情况下也是平台强制要求(WB Stream 的发布者轨道始终为视频)。隧道帧格式及其上方的多路复用层与 DC 模式相同。
流量通过平台的 SFU,该 SFU 位于政府白名单中。对 DPI 而言,它看起来像一次正常的视频通话。
relay/ - 两端共用的 Go 中继:SOCKS5 代理、tun2socks 管道、DC/VP8 隧道、ChaCha20 混淆器、连接多路复用器、gomobile/iOS 绑定headless/vk/ - 无头 VK 创建方:通过 VK HTTP API 创建或加入通话,Pion DC/VP8 隧道,无需浏览器headless/telemost/ - 无头 Telemost(Yandex)创建方,采用相同模型headless/wbstream/ - 无头 WB Stream 创建方(基于 LiveKit,匿名访客令牌)headless/dion/ - 无头 DION 创建方,采用相同模型headless/bitrix/ - 无头 Bitrix 创建方(自适应 DC/VP8,访客加入)headless/wbstream-joiner/ - 桌面 WB Stream 加入方(创建方的对应端,用于测试和 Linux 客户端)headless/telemost-joiner/ - 桌面 Telemost 加入方(创建方的对应端,用于测试和 Linux 客户端)headless/dion-joiner/ - 桌面 DION 加入方(创建方的对应端,用于测试和 Linux 客户端)headless/bitrix-joiner/ - 桌面 Bitrix 加入方(创建方的对应端,用于测试和 Linux 客户端)headless/vk-bot/ - 独立的 VK Long Poll 机器人,按需生成无头创建方并回复加入链接(Electron 机器人的服务端替代方案)预构建的二进制文件可在 GitHub Releases 获取。
从 GitHub Releases 下载并运行 Electron 应用。它会自动捆绑 Go 中继。
重要: 通话必须从创建方应用内部创建。从应用加入现有通话将无法工作——JS 钩子必须在通话开始时就存在。
提供三种形式;选择适合设备的一种:
whitelist-bypass.apk。首次启动时允许 VPN 提示。粘贴加入链接并点击 GO;系统级流量将通过通话传输。whitelist-bypass-proxy.ipa(通过 AltStore / Sideloadly / 你的开发者账号侧载)。仅暴露本地 SOCKS5 代理——无系统 VPN。要代理整个设备,请将任何支持 SOCKS5 的 VPN 应用(Shadowrocket、Streisand 等)指向应用显示的 SOCKS5 端点;或按应用设置代理(Telegram 内置支持)。--socks-user / --socks-pass 启用 SOCKS5 用户名/密码认证。
headless-wbstream-joiner --room <link> --socks-port 1080 [--socks-user u --socks-pass p]headless-telemost-joiner --tm-link <link> --socks-port 1080 [--socks-user u --socks-pass p]headless-dion-joiner --room <link> --socks-port 1080 [--socks-user u --socks-pass p]headless-bitrix-joiner --link <link> --socks-port 1080 [--socks-user u --socks-pass p]完整的分步指南(俄语)详细介绍了每个平台:参见 docs/SETUP.md。
go install golang.org/x/mobile/cmd/gomobile@latest)go install golang.org/x/mobile/cmd/gobind@latest)# Full release build (Android APK + Creator app + Headless creators + Linux joiners + VK bot + iOS IPA on macOS)
./make-release.sh
# Individual builds
./build-go.sh # Go .aar, relay binary, headless creators
./copy-hooks.sh # Copy JS hooks to android assets
./build-app.sh # Android APK
./build-headless.sh # Headless binaries only (current platform)
./build-cli.sh # Per-arch zips of headless creators + joiners + vk-bot
./build-creator.sh # Creator Electron app (all platforms)
./build-ios.sh proxy # iOS proxy app, xcframework + unsigned IPA
./build-ios.sh vpn # iOS VPN app, xcframework + unsigned IPA
需要 Xcode 和 macOS。build-ios.sh 接受一个参数,proxy 或 vpn。
./build-ios.sh proxy # ios-proxy-app -> prebuilts/whitelist-bypass-proxy.ipa
./build-ios.sh vpn # ios-vpn-app -> prebuilts/whitelist-bypass-vpn.ipa
该脚本将 Mobile.xcframework 构建到应用目录中,运行应用的 strip-signing.sh 以从项目中清除开发者团队,以未签名方式构建应用,并将未签名的 IPA 写入 prebuilts/。
要在设备上运行,请在 Xcode 中打开匹配的 .xcodeproj,在 Signing & Capabilities 中设置你的团队和唯一的 bundle 标识符,然后构建。vpn 变体需要在其 bundle 标识符上启用 Network Extension 能力。
prebuilts/ 中的输出:
要使用 Docker 构建项目,请执行:
docker compose -f docker-build/docker-compose.yml up
这会将所有组件(creator-app、headless、android app)构建到 prebuild 文件夹中(macOS 创建方除外)
纯 Go 创建方,通过 API 创建通话,无需浏览器。没有 Electron,没有 JS 钩子——Go Pion PeerConnection 直接处理 DataChannel 隧道。
./build-headless.sh
生成十个二进制文件——五个创建方、四个 Linux 加入方和 VK 机器人:
./headless/vk/headless-vk-creator --cookies cookies-vk.json
./headless/telemost/headless-telemost-creator --cookies cookies-yandex.json
./headless/wbstream/headless-wbstream-creator --cookies cookies-wbstream.json
./headless/dion/headless-dion-creator --cookies cookies-dion.json
./headless/bitrix/headless-bitrix-creator --cookies cookies-bitrix.json
./headless/wbstream-joiner/headless-wbstream-joiner --room <link> --socks-port 1080
./headless/dion-joiner/headless-dion-joiner --room <link> --socks-port 1080
./headless/telemost-joiner/headless-telemost-joiner --tm-link <link> --socks-port 1080
./headless/bitrix-joiner/headless-bitrix-joiner --link <link> --socks-port 1080
./headless/vk-bot/headless-vk-bot --token <t> --group-id <g> --bins-dir <dir>
所有四个创建方都需要从桌面创建方应用导出的 cookies(Export Cookies 按钮),格式为 JSON [{"name":"..","value":".."},...]。DION 还接受 {"email":"..","password":"..","cookies":[]} 并自行登录,参见 docs/SETUP.md。
默认情况下,每个二进制文件都会创建一个新通话。要附加到现有通话(服务器重启而不使链接失效、多个整形会话等):
与通话创建标志互斥(VK 为 --peer-id;其他没有创建标志)。
custom 对任何未设置的标志回退到 unlimited 默认值,因此部分覆盖可以正常工作:
./headless-vk-creator --cookies cookies-vk.json --vk-link https://vk.com/call/join/<token> \
--resources custom --read-buf 65536 --max-dc-buf 8388608 --mem-limit 268435456 \
--write-file /var/run/whitelist-bypass/call.txt
read-buf - TCP/DC 读取缓冲区大小。更小 = 更频繁的背压检查,内存突发更少max-dc-buf - 当 DataChannel 缓冲量超过此值时暂停 TCP 读取;仅在 VK 中接入(Pion BufferedAmountLowThreshold)mem-limit - Go 运行时软内存限制;使 GC 在接近上限时更积极0xd986b7576340d8d7b04f806dfd38a182b19edf50 - USDC (ERC20)TTEo4XXTB6CqhEiKpyoncfk3skEvoq3bCP - USDT (TRC20)UQCZge2JzLmwNtI56p-ZxLuN2f7ZMCPGqO0XTt3wJ-cy8JaE - USDT (TON)headless/tests/ - 实时端到端测试(创建方 + 加入方通过真实 SFU);可在同一主机上运行,也可在 Docker 化的 netns 环境中运行,参见 headless/tests/README.mdandroid-app/ - Android 加入方:VpnService + tun2socks + 无头 Pion(主要路径);同时保留用于旧版浏览器流程的 WebView 回退ios-proxy-app/ - iOS 加入方:通过 gomobile xcframework 的 SOCKS5 + 无头 Pioncreator-app/ - Electron 桌面创建方应用:GUI 前端,可运行旧版浏览器路径或启动无头 Go 二进制文件;适用于交互式使用和部署hooks/ - 用于旧版浏览器路径的 JavaScript 钩子(DC 和 Video 模式,VK 和 Telemost)。无头模式不使用 JS 钩子。| 文件 | 平台 |
|---|
WhitelistBypass Creator-*-arm64.dmg | macOS |
WhitelistBypass Creator-*-x64.exe | Windows x64 |
WhitelistBypass Creator-*-ia32.exe | Windows x86 |
WhitelistBypass Creator-*.AppImage | Linux x64 |
whitelist-bypass.apk | Android |
whitelist-bypass-proxy.ipa | iOS 代理应用,未签名 |
whitelist-bypass-vpn.ipa | iOS VPN 应用,未签名 |
headless-vk-creator-linux-x64 | Linux x64 |
headless-vk-creator-linux-ia32 | Linux x86 |
headless-telemost-creator-linux-x64 | Linux x64 |
headless-telemost-creator-linux-ia32 | Linux x86 |
headless-wbstream-joiner-linux-x64 | Linux x64 |
headless-wbstream-joiner-linux-ia32 | Linux x86 |
headless-telemost-joiner-linux-x64 | Linux x64 |
headless-telemost-joiner-linux-ia32 | Linux x86 |
headless-vk-bot-linux-x64 | Linux x64 |
headless-vk-bot-linux-ia32 | Linux x86 |
| 标志 | VK | TM | WB | 描述 |
|---|
--cookies <path> | 是 | 是 | 是 | cookies JSON 的路径 |
--cookie-string <str> | 是 | 是 | - | 原始 cookie 字符串 name=val; name=val |
--write-file <path> | 是 | 是 | 是 | 将活动加入链接追加到此文件(每行一个链接) |
--resources <mode> | 是 | 是 | 是 | default / moderate / unlimited / custom(见下文) |
--read-buf <bytes> | 是 | 是 | 是 | DC/RTP 读取缓冲区;仅在 --resources custom 时使用 |
--max-dc-buf <bytes> | 是 | - | - | DataChannel BufferedAmountLowThreshold;仅在 --resources custom 时使用 |
--mem-limit <bytes> | 是 | 是 | 是 | Go 软内存限制(debug.SetMemoryLimit);仅在 --resources custom 时使用 |
| 创建方 | 标志 | 值 |
|---|
| VK | --vk-link <link> | https://vk.com/call/join/<token> |
| Telemost | --tm-link <uri> | https://telemost.yandex.ru/j/<id> |
| WB Stream | --room <id> | wbstream://<uuid> 或仅 UUID |
| DION | --room <id> | dion://<id> 或 https://dion.vc/event/<id> |
| 模式 | read-buf | max-dc-buf (VK) | mem-limit |
|---|
moderate | 16 KB | 1 MB | 64 MB |
default | 32 KB | 4 MB | 128 MB |
unlimited | 64 KB | 8 MB | 256 MB |
custom | 来自 --read-buf | 来自 --max-dc-buf | 来自 --mem-limit |