
Tunnellisation de données via WebRTC pour contourner la censure
Fait passer le trafic internet par des plateformes d'appels vidéo (VK Call, Yandex Telemost, WB Stream) pour contourner la censure par liste blanche gouvernementale.
Guide d'installation pas à pas (en russe) : docs/SETUP.md
Deux modes de tunnel sont disponibles : DC (DataChannel) et Video (encodage de données VP8). La configuration recommandée est headless aux deux extrémités - du Go pur (Pion) dialogue directement avec le SFU de la plateforme, sans navigateur. L'obfuscation ChaCha20, le pacing VP8 configurable et le backend LiveKit/WB Stream sont des fonctionnalités réservées au mode headless.
Un chemin navigateur hérité (un joiner Android WebView face à un créateur desktop Electron avec des hooks JS) fonctionne encore pour VK DC, mais il est plus lent, ne peut pas obfusquer, et est en cours d'abandon. Les nouveaux déploiements devraient utiliser le mode headless.
Pion ouvre un DataChannel SCTP sur le PC publisher et y tunnelise TCP/UDP. Les trames traversent le SFU de la plateforme comme n'importe quelle autre charge utile DataChannel.
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
Même pipeline que le mode DC, mais le tunnel passe par une piste vidéo VP8 publiée au lieu d'un DataChannel SCTP. Utile lorsque le SFU limite le débit des DataChannels mais laisse passer le RTP (par ex. Telemost), et obligatoire sur certaines plateformes (la piste publisher de WB Stream est toujours de la vidéo). Le framing du tunnel et la couche de multiplexage au-dessus sont identiques au mode DC.
Le trafic passe par le SFU de la plateforme, qui figure sur la liste blanche gouvernementale. Pour la DPI, cela ressemble à un appel vidéo normal.
relay/ - relais Go partagé par les deux extrémités : proxy SOCKS5, plomberie tun2socks, tunnel DC/VP8, obfuscateur ChaCha20, multiplexeur de connexions, bindings gomobile/iOSheadless/vk/ - créateur VK headless : crée ou rejoint un appel via l'API HTTP VK, tunnel Pion DC/VP8, sans navigateurheadless/telemost/ - créateur Telemost (Yandex) headless avec le même modèleheadless/wbstream/ - créateur WB Stream headless (basé sur LiveKit, jetons invités anonymes)headless/dion/ - créateur DION headless avec le même modèleheadless/bitrix/ - créateur Bitrix headless (DC/VP8 adaptatif, jonction invité)headless/wbstream-joiner/ - joiner WB Stream desktop (homologue du créateur, utilisé pour les tests et les clients Linux)headless/telemost-joiner/ - joiner Telemost desktop (homologue du créateur, utilisé pour les tests et les clients Linux)headless/dion-joiner/ - joiner DION desktop (homologue du créateur, utilisé pour les tests et les clients Linux)headless/bitrix-joiner/ - joiner Bitrix desktop (homologue du créateur, utilisé pour les tests et les clients Linux)headless/vk-bot/ - bot VK Long Poll autonome qui lance des créateurs headless à la demande et répond avec le lien de jonction (alternative côté serveur au bot Electron)headless/tests/ - tests end-to-end en direct (créateur + joiners via un vrai SFU) ; à exécuter sur la même machine ou dans un banc netns Dockerisé, voir headless/tests/README.mdandroid-app/ - joiner Android : VpnService + tun2socks + Pion headless (chemin principal) ; conserve aussi un fallback WebView pour le flux navigateur héritéios-proxy-app/ - joiner iOS : SOCKS5 + Pion headless via le xcframework gomobilecreator-app/ - application créateur desktop Electron : front-end GUI pouvant exécuter soit le chemin navigateur hérité, soit lancer les binaires Go headless ; adaptée à la fois à l'usage interactif et aux déploiementshooks/ - hooks JavaScript pour le chemin navigateur hérité (modes DC et Video, VK et Telemost). Le mode headless n'utilise pas de hooks JS.Des binaires précompilés sont disponibles sur GitHub Releases.
Téléchargez et lancez l'application Electron depuis GitHub Releases. Elle embarque automatiquement le relais Go.
Important : l'appel doit être créé depuis l'application Creator. Rejoindre un appel existant depuis l'application ne fonctionnera pas - les hooks JS doivent être présents dès le début de l'appel.
Trois formes sont disponibles ; choisissez celle qui convient à l'appareil :
whitelist-bypass.apk depuis Releases. Autorisez l'invite VPN au premier lancement. Collez le lien de jonction et appuyez sur GO ; le trafic à l'échelle du système passe par l'appel.whitelist-bypass-proxy.ipa depuis Releases (sideload via AltStore / Sideloadly / votre compte développeur). Expose uniquement un proxy SOCKS5 local - pas de VPN système. Pour proxyfier tout l'appareil, pointez n'importe quelle application VPN compatible SOCKS5 (Shadowrocket, Streisand, ...) vers le point de terminaison SOCKS5 affiché par l'application ; ou configurez le proxy par application (Telegram le prend en charge nativement).--socks-user / --socks-pass activent l'authentification SOCKS5 par nom d'utilisateur/mot de passe.
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]Le guide complet pas à pas (en russe) couvre chaque plateforme en détail : voir 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
Nécessite Xcode et macOS. build-ios.sh prend un argument, proxy ou vpn.