
Tunelización de datos sobre webrtc para eludir la censura
Tuneliza el tráfico de internet a través de plataformas de videollamadas (VK Call, Yandex Telemost, WB Stream) para eludir la censura de listas blancas gubernamentales.
Guía de configuración paso a paso (en ruso): docs/SETUP.md
Hay dos modos de túnel disponibles: DC (DataChannel) y Video (codificación de datos VP8). La configuración recomendada es sin interfaz gráfica en ambos extremos - Go puro (Pion) se comunica directamente con el SFU de la plataforma, sin navegador. La ofuscación ChaCha20, el ritmo VP8 configurable y el backend LiveKit/WB Stream son características exclusivas del modo sin interfaz gráfica.
Una ruta heredada basada en navegador (un unidor Android WebView contra un creador de escritorio Electron con hooks JS) todavía funciona para VK DC, pero es más lenta, no puede ofuscar y está siendo eliminada gradualmente. Las nuevas implementaciones deberían usar el modo sin interfaz gráfica.
Pion abre un SCTP DataChannel en el PC publicador y tuneliza TCP/UDP a través de él. Los frames pasan por el SFU de la plataforma como cualquier otra carga útil de DataChannel.
Unidor (censurado, Android/iOS/Linux) Creador (internet libre)
Todas las apps
|
VpnService (captura todo el tráfico)
|
tun2socks (IP -> TCP)
|
Proxy SOCKS5 (Go, :1080)
|
Unidor sin interfaz (Pion) Creador sin interfaz (Pion)
| |
DataChannel <------- SFU -------> DataChannel
|
Puente de retransmisión
|
Internet
La misma canalización que el modo DC, pero el túnel viaja sobre una pista de video VP8 publicada en lugar de un SCTP DataChannel. Útil cuando el SFU limita la tasa de DataChannels pero deja pasar RTP (p. ej. Telemost), y obligatorio en la plataforma en algunos casos (la pista del publicador de WB Stream siempre es video). El framing del túnel y la capa de multiplexación por encima son los mismos que en el modo DC.
El tráfico pasa por el SFU de la plataforma, que está en la lista blanca gubernamental. Para el DPI parece una videollamada normal.
relay/ - Retransmisión Go compartida por ambos extremos: proxy SOCKS5, infraestructura tun2socks, túnel DC/VP8, ofuscador ChaCha20, multiplexor de conexiones, bindings gomobile/iOSheadless/vk/ - Creador VK sin interfaz: crea o se une a una llamada mediante la API HTTP de VK, túnel Pion DC/VP8, sin navegadorheadless/telemost/ - Creador Telemost (Yandex) sin interfaz con el mismo modeloheadless/wbstream/ - Creador WB Stream sin interfaz (respaldado por LiveKit, tokens de invitado anónimos)headless/dion/ - Creador DION sin interfaz con el mismo modeloheadless/bitrix/ - Creador Bitrix sin interfaz (DC/VP8 adaptativo, unión como invitado)headless/wbstream-joiner/ - Unidor WB Stream de escritorio (contraparte del creador, usado para pruebas y clientes Linux)headless/telemost-joiner/ - Unidor Telemost de escritorio (contraparte del creador, usado para pruebas y clientes Linux)headless/dion-joiner/ - Unidor DION de escritorio (contraparte del creador, usado para pruebas y clientes Linux)headless/bitrix-joiner/ - Unidor Bitrix de escritorio (contraparte del creador, usado para pruebas y clientes Linux)headless/vk-bot/ - Bot VK Long Poll independiente que genera creadores sin interfaz bajo demanda y responde con el enlace de unión (alternativa del lado del servidor al bot de Electron)headless/tests/ - Pruebas en vivo de extremo a extremo (creador + unidores sobre un SFU real); ejecutar en el mismo host o en un entorno netns dockerizado, ver headless/tests/README.mdandroid-app/ - Unidor Android: VpnService + tun2socks + Pion sin interfaz (ruta principal); también conserva un respaldo WebView para el flujo heredado del navegadorios-proxy-app/ - Unidor iOS: SOCKS5 + Pion sin interfaz mediante el xcframework de gomobilecreator-app/ - Aplicación creadora de escritorio Electron: interfaz gráfica que puede ejecutar la ruta heredada del navegador o lanzar los binarios Go sin interfaz; adecuada tanto para uso interactivo como para implementacioneshooks/ - Hooks de JavaScript para la ruta heredada del navegador (modos DC y Video, VK y Telemost). El modo sin interfaz no usa hooks JS.Hay binarios precompilados disponibles en GitHub Releases.
Descarga y ejecuta la aplicación Electron desde GitHub Releases. Incluye la retransmisión Go automáticamente.
Importante: La llamada debe crearse desde dentro de la aplicación Creadora. Unirse a una llamada existente desde la aplicación no funcionará - los hooks JS deben estar presentes desde el momento en que comienza la llamada.
Hay tres formas disponibles; elige la que se adapte al dispositivo:
whitelist-bypass.apk desde Releases. Permite el aviso de VPN en el primer inicio. Pega el enlace de unión y toca GO; el tráfico de todo el sistema fluye a través de la llamada.whitelist-bypass-proxy.ipa desde Releases (instalación lateral mediante AltStore / Sideloadly / tu cuenta de desarrollador). Solo expone un proxy SOCKS5 local - sin VPN del sistema. Para proxyar todo el dispositivo, apunta cualquier aplicación VPN compatible con SOCKS5 (Shadowrocket, Streisand, ...) al endpoint SOCKS5 que muestra la aplicación; o configura el proxy por aplicación (Telegram tiene soporte integrado).--socks-user / --socks-pass habilitan la autenticación de usuario/contraseña 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]El paso a paso completo (en ruso) cubre cada plataforma en detalle: ver 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