[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-76339":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":12,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":8,"pushedAt":8,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},76339,"whitelist-bypass-iran","kulikov0\u002Fwhitelist-bypass-iran","kulikov0",null,"Go",145,36,1,4,0,25,4.7,"MIT License",false,"main",true,[],"2026-06-12 02:03:41","# Whitelist Bypass (Bale)\n\nTunnels internet traffic through the Bale Meet video calling platform to bypass government whitelist censorship.\n\nFork of [whitelist-bypass](https:\u002F\u002Fgithub.com\u002Feduarddeisling\u002Fwhitelist-bypass) (VK \u002F Telemost \u002F WB Stream) adapted to Bale Meet.\n\n## Setup\n\nStep-by-step setup guides:\n\n- English: [docs\u002Fen\u002FSETUP.md](docs\u002Fen\u002FSETUP.md), VPS deployment: [docs\u002Fen\u002FVPS.md](docs\u002Fen\u002FVPS.md)\n- فارسی: [docs\u002Ffa\u002FSETUP.md](docs\u002Ffa\u002FSETUP.md), استقرار VPS: [docs\u002Ffa\u002FVPS.md](docs\u002Ffa\u002FVPS.md)\n\n## How it works\n\nTwo tunnel modes are available: **Video** (VP8 data encoding) and **DC** (DataChannel).\nThe headless creator adapts to whichever mode the joiner picks at connect time, on every new session.\n\n### Video mode\n\nThe tunnel rides on a published VP8 video track. Tunnel framing and the multiplex layer above it are the same as in the upstream project's video mode.\n\n```\nJoiner (censored, Android\u002FiOS\u002FDesktop)              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  |                                         |\nVP8 video track  \u003C----- SFU ------>  VP8 video track\n                                            |\n                                        Relay bridge\n                                            |\n                                        Internet\n```\n\n### DC mode\n\nSame pipeline, but the tunnel rides on a SCTP DataChannel instead of a VP8 video track. Lower peak throughput than VP8 but a bit lighter on CPU. Tunnel framing and multiplex are the same as Video mode.\n\nTraffic goes through the Bale 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, VP8 and DC tunnels, ChaCha20 obfuscator, connection multiplexer, gomobile and iOS bindings\n- `relay\u002Fbale\u002F` - shared Bale wire format and LiveKit session glue, used by both creator and joiner\n- `relay\u002Ftunnel\u002Fsequenced.go` - 4-byte sequence number and 16-frame reorder buffer wrapping the VP8 tunnel (Bale's SFU reorders frequently enough that a non-sequenced tunnel collapses under TCP)\n- `relay\u002Ftunnel\u002Fdctunnel.go` - DataChannel tunnel wrapper with LiveKit DataPacket framing\n- `headless\u002Fbale\u002F` - Headless Bale creator: creates a call via the Bale HTTP\u002FWS API, Pion VP8\u002FDC tunnel, no browser\n- `headless\u002Fbale-joiner\u002F` - Desktop Bale joiner (counterpart to the creator, used for tests and Linux clients)\n- `headless\u002Ftests\u002F` - End-to-end smoke tests\n- `android-app\u002F` - Android joiner: VpnService + tun2socks + headless Pion\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 spawns the headless Go binary; suitable for both interactive use and deployments\n- `joiner-desktop-app\u002F` - Electron desktop joiner app: GUI front-end for Windows\u002FmacOS\u002FLinux with system VPN (TUN) and SOCKS5-only modes\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 Creator app from [GitHub Releases](..\u002F..\u002Freleases). It bundles the Go relay automatically.\n\n1. Open the app\n2. Click **+** to open a new tab\n3. Click **Bale**\n4. Log in to Bale and the app creates a call automatically\n5. Copy the join link, send it to the joiner\n\nFor running the Creator headless on a server, see [docs\u002Fen\u002FVPS.md](docs\u002Fen\u002FVPS.md).\n\n### Joiner side (censored)\n\nFour 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, Sideloadly, or your developer account). Exposes a local SOCKS5 proxy only, no system VPN. To proxy the whole device, point any SOCKS5-capable VPN app (Happ, Shadowrocket, Streisand, ...) at the SOCKS5 endpoint the app shows; or set the proxy per app (Telegram has built-in support).\n- **Desktop (Windows \u002F macOS \u002F Linux)** - install `WhitelistBypass Joiner` (`.exe` \u002F `.dmg` \u002F `.AppImage`) from [Releases](..\u002F..\u002Freleases). GUI joiner that can either bring up a system VPN (TUN) tunnel or run as a local SOCKS5 proxy. TUN mode needs admin\u002Froot.\n- **Linux headless** - run the 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  - `headless-bale-joiner --join-link \u003Clink> --socks-port 1080 [--socks-user u --socks-pass p]`\n\nThe full step-by-step covers each platform in detail: see [docs\u002Fen\u002FSETUP.md](docs\u002Fen\u002FSETUP.md) (or [docs\u002Ffa\u002FSETUP.md](docs\u002Ffa\u002FSETUP.md) in Persian).\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 + Desktop Joiner app + Headless binaries + iOS IPA on macOS)\n.\u002Fmake-release.sh\n\n# Individual builds\n.\u002Fbuild-go.sh              # Go .aar, librelay.so, desktop relay binary\n.\u002Fbuild-app.sh             # Android APK\n.\u002Fbuild-headless.sh        # Headless binaries only (current platform)\n.\u002Fbuild-creator.sh         # Creator Electron app (all platforms)\n.\u002Fbuild-joiner-app.sh      # Desktop Joiner Electron app (all platforms)\n.\u002Fbuild-desktop-joiner.sh  # Headless Bale desktop joiner binary (all platforms)\n.\u002Fbuild-ios.sh             # Go .xcframework for iOS\n```\n\nOutput in `prebuilts\u002F`:\n\n| File | Platform |\n|---|---|\n| `Whitelist Bypass Creator-*-arm64.dmg` | macOS |\n| `Whitelist Bypass Creator-*-x64.exe` | Windows x64 |\n| `Whitelist Bypass Creator-*-ia32.exe` | Windows x86 |\n| `Whitelist Bypass Creator-*.AppImage` | Linux x64 |\n| `WhitelistBypass Joiner-*-arm64.dmg` | macOS |\n| `WhitelistBypass Joiner-*-x64.exe` | Windows x64 |\n| `WhitelistBypass Joiner-*-ia32.exe` | Windows x86 |\n| `WhitelistBypass Joiner-*-x86_64.AppImage` | Linux x64 |\n| `whitelist-bypass.apk` | Android |\n| `whitelist-bypass-proxy.ipa` | iOS, unsigned |\n| `headless-bale-creator-linux-x64` | Linux x64 |\n| `headless-bale-creator-linux-ia32` | Linux x86 |\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\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 creator and joiner\n\nPure Go binaries that talk to Bale's API\u002FSFU directly. No Electron, no JS hooks.\n\n```sh\n.\u002Fbuild-headless.sh\n```\n\nTwo binaries are produced - the creator and the desktop joiner:\n\n```sh\n.\u002Fheadless\u002Fbale\u002Fheadless-bale-creator        --cookies bale-cookies.json\n.\u002Fheadless\u002Fbale-joiner\u002Fheadless-bale-joiner  --join-link \u003Clink> --socks-port 1080\n```\n\nThe creator expects cookies exported from the desktop Creator app (`Bale Cookies` button) as JSON `[{\"name\":\"..\",\"value\":\"..\"},...]`. The joiner is anonymous and uses Bale's public `\u002Ftoken` endpoint, no cookies required.\n\n#### Common flags\n\n| Flag | Creator | Joiner | Description |\n|---|---|---|---|\n| `--cookies \u003Cpath>` | yes | - | path to cookies JSON |\n| `--cookie-string \u003Cstr>` | yes | - | raw cookie string `name=val; name=val` |\n| `--join-link \u003Clink>` | - | yes | `https:\u002F\u002Fmeet.bale.ai\u002Fi\u002F\u003Ccode>` |\n| `--name \u003Cstr>` | - | yes | display name shown in the meeting |\n| `--socks-port \u003Cn>` | - | yes | local SOCKS5 port |\n| `--socks-user \u003Cu>` | - | yes | SOCKS5 username (optional) |\n| `--socks-pass \u003Cp>` | - | yes | SOCKS5 password (optional) |\n| `--tunnel-mode \u003Cm>` | - | yes | `vp8` or `dc` (default `vp8`) |\n| `--write-file \u003Cpath>` | yes | - | append the active join link to this file (one link per line) |\n| `--resources \u003Cmode>` | yes | yes | `default` \u002F `moderate` \u002F `unlimited` |\n| `--vp8-fps \u003Cn>` | yes | yes | VP8 frame rate (default 24) |\n| `--vp8-batch \u003Cn>` | yes | yes | VP8 batch multiplier (default 30) |\n\n#### Resource modes\n\n| Mode | `read-buf` | `mem-limit` |\n|---|---|---|\n| `moderate`  | 16 KB | 64 MB |\n| `default`   | 32 KB | 128 MB |\n| `unlimited` | 64 KB | 256 MB |\n\n- `read-buf` - TCP read buffer size. Smaller = more frequent backpressure checks, less bursty memory\n- `mem-limit` - Go runtime soft memory limit; makes GC more aggressive near the cap\n\n## License\n\n[MIT](LICENSE)\n","该项目通过Bale Meet视频通话平台隧道传输互联网流量，以绕过政府的白名单审查。核心功能包括两种隧道模式：基于VP8视频轨道的视频模式和基于SCTP数据通道的DC模式，其中视频模式提供更高的峰值吞吐量，而DC模式则对CPU要求较低。技术上利用了Go语言开发的SOCKS5代理、tun2socks管道以及Pion WebRTC库等组件来实现端到端的安全通信。此项目适用于需要绕过网络限制访问自由互联网资源的情景，特别是对于伊朗用户而言，它提供了一种有效的方法来突破当地的信息封锁。",2,"2026-06-11 03:54:56","CREATED_QUERY"]