[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74655":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":8,"language":10,"languages":8,"totalLinesOfCode":8,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":8,"rankLanguage":8,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":8,"pushedAt":8,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},74655,"whitelist-bypass","kulikov0\u002Fwhitelist-bypass","kulikov0",null,"https:\u002F\u002Ft.me\u002Fmarkovdrankthechains","Go",1408,77,19,21,0,32,68,372,96,100.68,"MIT License",false,"main",true,[],"2026-06-12 04:01:15","# Whitelist Bypass\n\nTunnels internet traffic through video calling platforms (VK Call, Yandex Telemost, WB Stream) to bypass government whitelist censorship.\n\n## Setup\n\nStep-by-step setup guide (in Russian): [docs\u002FSETUP.md](docs\u002FSETUP.md)\n\n## How it works\n\nTwo tunnel modes are available: **DC** (DataChannel) and **Video** (VP8 data encoding). The recommended setup is **headless on both ends** - pure Go (Pion) talks to the platform's SFU directly, no browser. ChaCha20 obfuscation, configurable VP8 pacing, and the LiveKit\u002FWB Stream backend are headless-only features.\n\nA legacy browser path (Android `WebView` joiner against an Electron desktop creator with JS hooks) still works for VK DC, but it's slower, can't obfuscate, and is being phased out. New deployments should use headless.\n\n### DC mode\n\nPion opens a SCTP DataChannel on the publisher PC and tunnels TCP\u002FUDP through it. Frames pass through the platform's SFU like any other DataChannel payload.\n\n\n\n```\nJoiner (censored, Android\u002FiOS\u002FLinux)                Creator (free internet)\n\nAll apps\n  |\nVpnService (captures all traffic)\n  |\ntun2socks (IP -> TCP)\n  |\nSOCKS5 proxy (Go, :1080)\n  |\nHeadless joiner (Pion)                    Headless creator (Pion)\n  |                                         |\nDataChannel  \u003C------- SFU ------->   DataChannel\n                                            |\n                                        Relay bridge\n                                            |\n                                        Internet\n```\n\n### Video mode\n\nSame pipeline as DC mode, but the tunnel rides on a published VP8 video track instead of a SCTP DataChannel. Useful when the SFU rate-limits DataChannels but lets RTP through (e.g. Telemost), and platform-mandatory in some cases (WB Stream's publisher track is always video). Tunnel framing and the multiplex layer above it are the same as DC mode.\n\nTraffic goes through the platform's SFU, which is on the government whitelist. To DPI it looks like a normal video call.\n\n## Components\n\n- `relay\u002F` - Go relay shared by both ends: SOCKS5 proxy, tun2socks plumbing, DC\u002FVP8 tunnel, ChaCha20 obfuscator, connection multiplexer, gomobile\u002FiOS bindings\n- `headless\u002Fvk\u002F` - Headless VK creator: creates or joins a call via the VK HTTP API, Pion DC\u002FVP8 tunnel, no browser\n- `headless\u002Ftelemost\u002F` - Headless Telemost (Yandex) creator with the same model\n- `headless\u002Fwbstream\u002F` - Headless WB Stream creator (LiveKit-backed, anonymous guest tokens)\n- `headless\u002Fwbstream-joiner\u002F` - Desktop WB Stream joiner (counterpart to the creator, used for tests and Linux clients)\n- `headless\u002Ftelemost-joiner\u002F` - Desktop Telemost joiner (counterpart to the creator, used for tests and Linux clients)\n- `headless\u002Fvk-bot\u002F` - Standalone VK Long Poll bot that spawns headless creators on demand and replies with the join link (server-side alternative to the Electron bot)\n- `headless\u002Ftests\u002F` - End-to-end smoke tests for each platform\n- `android-app\u002F` - Android joiner: VpnService + tun2socks + headless Pion (primary path); also retains a `WebView` fallback for the legacy browser flow\n- `ios-proxy-app\u002F` - iOS joiner: SOCKS5 + headless Pion via the gomobile xcframework\n- `creator-app\u002F` - Electron desktop creator app: GUI front-end that can run either the legacy browser path or spawn the headless Go binaries; suitable for both interactive use and deployments\n- `hooks\u002F` - JavaScript hooks for the legacy browser path (DC and Video modes, VK and Telemost). Headless does not use JS hooks.\n\n## Download\n\nPrebuilt binaries are available on [GitHub Releases](..\u002F..\u002Freleases).\n\n### Creator side (free internet, desktop)\n\nDownload and run the Electron app from [GitHub Releases](..\u002F..\u002Freleases). It bundles the Go relay automatically.\n\n1. Open the app\n2. Select tunnel mode (DC or Video)\n3. Click \"VK\" or \"Telemost\"\n4. Log in, **create a new call** from the app\n5. Copy the join link, send it to the joiner\n\n**Important:** The call must be created from within the Creator app. Joining an existing call from the app will not work - the JS hooks must be present from the moment the call starts.\n\n### Joiner side (censored, Android\u002FiOS\u002FLinux)\n\nThree forms are available; pick whichever fits the device:\n\n- **Android** - install `whitelist-bypass.apk` from [Releases](..\u002F..\u002Freleases). Allow the VPN prompt on first launch. Paste the join link and tap GO; system-wide traffic flows through the call.\n- **iOS** - install `whitelist-bypass-proxy.ipa` from [Releases](..\u002F..\u002Freleases) (sideload via AltStore \u002F Sideloadly \u002F your dev account). Exposes a local SOCKS5 proxy only - no system VPN. To proxy the whole device, point any SOCKS5-capable VPN app (Shadowrocket, Streisand, ...) at the SOCKS5 endpoint the app shows; or set the proxy per app (Telegram has built-in support).\n- **Linux desktop** - run a headless joiner; it exposes a SOCKS5 proxy on the given port for whatever you point at it. Useful for servers and Linux clients. Optional `--socks-user` \u002F `--socks-pass` enable SOCKS5 username\u002Fpassword auth.\n  - WB Stream: `headless-wbstream-joiner --room \u003Clink> --socks-port 1080 [--socks-user u --socks-pass p]`\n  - Telemost: `headless-telemost-joiner --tm-link \u003Clink> --socks-port 1080 [--socks-user u --socks-pass p]`\n\nThe full step-by-step (Russian) covers each platform in detail: see [docs\u002FSETUP.md](docs\u002FSETUP.md).\n\n## Building from source\n\n### Requirements\n\n- Go 1.26+\n- gomobile (`go install golang.org\u002Fx\u002Fmobile\u002Fcmd\u002Fgomobile@latest`)\n- gobind (`go install golang.org\u002Fx\u002Fmobile\u002Fcmd\u002Fgobind@latest`)\n- Android SDK + NDK 29\n- Java 11+\n- Node.js 18+\n\n### Build scripts\n\n```sh\n# Full release build (Android APK + Creator app + Headless creators + Linux joiners + VK bot + iOS IPA on macOS)\n.\u002Fmake-release.sh\n\n# Individual builds\n.\u002Fbuild-go.sh          # Go .aar, relay binary, headless creators\n.\u002Fcopy-hooks.sh        # Copy JS hooks to android assets\n.\u002Fbuild-app.sh         # Android APK\n.\u002Fbuild-headless.sh    # Headless binaries only (current platform)\n.\u002Fbuild-joiners.sh     # Linux headless joiners (cross-compiled)\n.\u002Fbuild-bot.sh         # Linux headless-vk-bot (cross-compiled)\n.\u002Fbuild-creator.sh     # Creator Electron app (all platforms)\n.\u002Fbuild-ios.sh         # Go .xcframework for iOS\n```\n\n### iOS\n\nRequires Xcode and macOS.\n\n```sh\n.\u002Fbuild-ios.sh\n```\n\nThis builds `Mobile.xcframework` into `ios-proxy-app\u002F`. Then open `ios-proxy-app\u002Fwhitelist-bypass-proxy.xcodeproj` in Xcode, select your signing team in Signing & Capabilities, and build to device.\n\nBefore committing, run `ios-proxy-app\u002Fstrip-signing.sh` to remove your Apple developer team ID from the project.\n\nOutput in `prebuilts\u002F`:\n\n| File | Platform |\n|---|---|\n| `WhitelistBypass Creator-*-arm64.dmg` | macOS |\n| `WhitelistBypass Creator-*-x64.exe` | Windows x64 |\n| `WhitelistBypass Creator-*-ia32.exe` | Windows x86 |\n| `WhitelistBypass Creator-*.AppImage` | Linux x64 |\n| `whitelist-bypass.apk` | Android |\n| `whitelist-bypass-proxy.ipa` | iOS, unsigned |\n| `headless-vk-creator-linux-x64` | Linux x64 |\n| `headless-vk-creator-linux-ia32` | Linux x86 |\n| `headless-telemost-creator-linux-x64` | Linux x64 |\n| `headless-telemost-creator-linux-ia32` | Linux x86 |\n| `headless-wbstream-joiner-linux-x64` | Linux x64 |\n| `headless-wbstream-joiner-linux-ia32` | Linux x86 |\n| `headless-telemost-joiner-linux-x64` | Linux x64 |\n| `headless-telemost-joiner-linux-ia32` | Linux x86 |\n| `headless-vk-bot-linux-x64` | Linux x64 |\n| `headless-vk-bot-linux-ia32` | Linux x86 |\n\n### Docker build\n\nTo build the project using Docker, execute:\n\n```sh\ndocker compose -f docker-build\u002Fdocker-compose.yml up \n```\n\nThis will build all components (creator-app, headless, android app) into the `prebuild` folder (except the macOS creator)\n\n### Headless creators\n\nPure Go creators that create calls via API without a browser. No Electron, no JS hooks - Go Pion PeerConnection handles the DataChannel tunnel directly.\n\n```sh\n.\u002Fbuild-headless.sh\n```\n\nSix binaries are produced - three creators, two Linux joiners, and the VK bot:\n\n```sh\n.\u002Fheadless\u002Fvk\u002Fheadless-vk-creator               --cookies cookies-vk.json\n.\u002Fheadless\u002Ftelemost\u002Fheadless-telemost-creator   --cookies cookies-telemost.json\n.\u002Fheadless\u002Fwbstream\u002Fheadless-wbstream-creator\n.\u002Fheadless\u002Fwbstream-joiner\u002Fheadless-wbstream-joiner --room \u003Clink> --socks-port 1080\n.\u002Fheadless\u002Ftelemost-joiner\u002Fheadless-telemost-joiner --tm-link \u003Clink> --socks-port 1080\n.\u002Fheadless\u002Fvk-bot\u002Fheadless-vk-bot               --token \u003Ct> --group-id \u003Cg> --bins-dir \u003Cdir>\n```\n\nWB Stream uses anonymous guest tokens, so no cookies are required. VK and Telemost expect cookies exported from the desktop creator app (`VK Cookies` \u002F `Yandex Cookies` buttons) as JSON `[{\"name\":\"..\",\"value\":\"..\"},...]`.\n\n#### Common flags\n\n| Flag | VK | TM | WB | Description |\n|---|---|---|---|---|\n| `--cookies \u003Cpath>` | yes | yes | - | path to cookies JSON |\n| `--cookie-string \u003Cstr>` | yes | yes | - | raw cookie string `name=val; name=val` |\n| `--write-file \u003Cpath>` | yes | yes | yes | append the active join link to this file (one link per line) |\n| `--resources \u003Cmode>` | yes | yes | yes | `default` \u002F `moderate` \u002F `unlimited` \u002F `custom` (see below) |\n| `--read-buf \u003Cbytes>` | yes | yes | yes | DC\u002FRTP read buffer; only consulted with `--resources custom` |\n| `--max-dc-buf \u003Cbytes>` | yes | - | - | DataChannel `BufferedAmountLowThreshold`; only with `--resources custom` |\n| `--mem-limit \u003Cbytes>` | yes | yes | yes | Go soft memory limit (`debug.SetMemoryLimit`); only with `--resources custom` |\n\n#### Joining an existing call\n\nBy default each binary creates a fresh call. To attach to an existing one (server restarts without invalidating the link, multiple shaped sessions, ...):\n\n| Creator | Flag | Value |\n|---|---|---|\n| VK | `--vk-link \u003Clink>` | `https:\u002F\u002Fvk.com\u002Fcall\u002Fjoin\u002F\u003Ctoken>` |\n| Telemost | `--tm-link \u003Curi>` | `https:\u002F\u002Ftelemost.yandex.ru\u002Fj\u002F\u003Cid>` |\n| WB Stream | `--room \u003Cid>` | `wbstream:\u002F\u002F\u003Cuuid>` or just the UUID |\n\nMutually exclusive with the call-creation flags (`--peer-id` for VK; the others have no creation flag).\n\n#### Resource modes\n\n| Mode | `read-buf` | `max-dc-buf` (VK) | `mem-limit` |\n|---|---|---|---|\n| `moderate` | 16 KB | 1 MB | 64 MB |\n| `default`  | 32 KB | 4 MB | 128 MB |\n| `unlimited`| 64 KB | 8 MB | 256 MB |\n| `custom`   | from `--read-buf` | from `--max-dc-buf` | from `--mem-limit` |\n\n`custom` falls back to `unlimited` defaults for any flag left unset, so partial overrides work:\n\n```sh\n.\u002Fheadless-vk-creator --cookies cookies-vk.json --vk-link https:\u002F\u002Fvk.com\u002Fcall\u002Fjoin\u002F\u003Ctoken> \\\n  --resources custom --read-buf 65536 --max-dc-buf 8388608 --mem-limit 268435456 \\\n  --write-file \u002Fvar\u002Frun\u002Fwhitelist-bypass\u002Fcall.txt\n```\n\n- `read-buf` - TCP\u002FDC read buffer size. Smaller = more frequent backpressure checks, less bursty memory\n- `max-dc-buf` - pauses TCP reads when the DataChannel buffered amount exceeds this; only wired in VK (Pion `BufferedAmountLowThreshold`)\n- `mem-limit` - Go runtime soft memory limit; makes GC more aggressive near the cap\n\n## License\n\n[MIT](LICENSE)\n","该项目通过视频通话平台（如VK Call、Yandex Telemost、WB Stream）隧道传输互联网流量，以绕过政府的白名单审查。其核心功能包括两种隧道模式：基于SCTP的数据通道（DC）和基于VP8视频编码的视频模式。项目采用Go语言编写，并利用Pion库实现端到端通信，支持ChaCha20加密和可配置的VP8速率控制。推荐使用无头模式部署，直接与平台的SFU交互，无需浏览器参与。适合在需要绕过网络审查限制的情况下使用，尤其是当常规方法受限时。",2,"2026-06-11 03:50:18","high_star"]