
نفق البيانات عبر webrtc لتجاوز الرقابة
يوجّه حركة مرور الإنترنت عبر منصات مكالمات الفيديو (VK Call، Yandex Telemost، WB Stream) لتجاوز رقابة القائمة البيضاء الحكومية.
دليل الإعداد خطوة بخطوة (بالروسية): docs/SETUP.md
يتوفر وضعان للنفق: DC (DataChannel) وVideo (ترميز بيانات VP8). الإعداد الموصى به هو العمل بلا واجهة على الطرفين - Go الخالص (Pion) يتحدث مباشرة إلى SFU الخاص بالمنصة، دون متصفح. تشويش ChaCha20، وتنظيم VP8 القابل للضبط، وخلفية LiveKit/WB Stream هي ميزات خاصة بالوضع بلا واجهة فقط.
لا يزال مسار المتصفح القديم (منضمّ Android WebView مقابل منشئ سطح مكتب Electron مع خطافات JS) يعمل مع VK DC، لكنه أبطأ، ولا يمكنه التشويش، وهو في طور الإلغاء التدريجي. يجب أن تستخدم عمليات النشر الجديدة الوضع بلا واجهة.
يفتح Pion قناة SCTP DataChannel على جهاز الناشر (PC) وينفق TCP/UDP عبرها. تمر الإطارات عبر SFU الخاص بالمنصة مثل أي حمولة 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
نفس خط الأنابيب كما في وضع DC، لكن النفق يعتمد على مسار فيديو VP8 منشور بدلاً من SCTP DataChannel. مفيد عندما يحدّ SFU من معدل DataChannels لكنه يسمح بمرور RTP (مثل Telemost)، وإلزامي من المنصة في بعض الحالات (مسار الناشر في WB Stream دائمًا فيديو). تأطير النفق وطبقة التعددّي فوقه متماثلان مع وضع DC.
تمر حركة المرور عبر SFU الخاص بالمنصة، وهو على القائمة البيضاء الحكومية. يبدو لـ DPI كمكالمة فيديو عادية.
relay/ - مرحّل Go مشترك بين الطرفين: وكيل SOCKS5، وتمديدات tun2socks، ونفق DC/VP8، ومشوّش ChaCha20، ومضاعِف الاتصالات، وارتباطات gomobile/iOSheadless/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)تتوفر ثنائيات جاهزة على GitHub Releases.
نزّل وشغّل تطبيق Electron من GitHub Releases. يضم مرحّل Go تلقائيًا.
مهم: يجب إنشاء المكالمة من داخل تطبيق المنشئ. الانضمام إلى مكالمة موجودة من التطبيق لن يعمل - يجب أن تكون خطافات JS موجودة منذ لحظة بدء المكالمة.
تتوفر ثلاثة أشكال؛ اختر ما يناسب الجهاز:
whitelist-bypass.apk من Releases. اسمح بمطالبة VPN عند التشغيل الأول. الصق رابط الانضمام وانقر GO؛ تتدفق حركة المرور على مستوى النظام عبر المكالمة.whitelist-bypass-proxy.ipa من Releases (ثبّته جانبيًا عبر AltStore / Sideloadly / حساب المطوّر الخاص بك). يوفّر وكيل SOCKS5 محليًا فقط - لا VPN على مستوى النظام. لتمرير الجهاز بالكامل عبر الوكيل، وجّه أي تطبيق VPN يدعم SOCKS5 (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/.
لتشغيله على جهاز، افتح ملف .xcodeproj المطابق في Xcode، واضبط فريقك ومعرّفات الحزمة الفريدة في Signing & Capabilities، ثم ابنِ. يتطلب متغيّر vpn قدرة 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>
يحتاج المنشئون الأربعة جميعًا إلى ملفات تعريف ارتباط مُصدَّرة من تطبيق المنشئ لسطح المكتب (زر Export Cookies) بصيغة JSON [{"name":"..","value":".."},...]. يقبل DION أيضًا {"email":"..","password":"..","cookies":[]} ثم يسجّل الدخول بنفسه، انظر docs/SETUP.md.
افتراضيًا ينشئ كل ثنائي مكالمة جديدة. للانضمام إلى مكالمة موجودة (إعادة تشغيل الخادم دون إبطال الرابط، جلسات متعددة مُشكّلة، ...):
حصرية متبادلة مع أعلام إنشاء المكالمة (--peer-id لـ VK؛ والآخرون ليس لديهم علم إنشاء).
يعود 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 - يوقف قراءات TCP عندما يتجاوز المقدار المخزّن في DataChannel هذا الحد؛ موصول فقط في VK (Pion BufferedAmountLowThreshold)mem-limit - حد الذاكرة المرن لبيئة تشغيل Go؛ يجعل GC أكثر شراسة قرب الحد الأقصى0xd986b7576340d8d7b04f806dfd38a182b19edf50 - USDC (ERC20)TTEo4XXTB6CqhEiKpyoncfk3skEvoq3bCP - USDT (TRC20)UQCZge2JzLmwNtI56p-ZxLuN2f7ZMCPGqO0XTt3wJ-cy8JaE - USDT (TON)headless/vk-bot/headless/tests/ - اختبارات حيّة من الطرف إلى الطرف (منشئ + منضمّون عبر SFU حقيقي)؛ شغّلها على نفس المضيف أو في منصة netns داخل Docker، انظر headless/tests/README.mdandroid-app/ - منضمّ Android: VpnService + tun2socks + Pion بلا واجهة (المسار الأساسي)؛ يحتفظ أيضًا ببديل WebView لمسار المتصفح القديمios-proxy-app/ - منضمّ iOS: SOCKS5 + Pion بلا واجهة عبر gomobile xcframeworkcreator-app/ - تطبيق المنشئ لسطح المكتب Electron: واجهة رسومية أمامية يمكنها تشغيل مسار المتصفح القديم أو إنشاء ثنائيات 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 proxy app, unsigned |
whitelist-bypass-vpn.ipa | iOS VPN app, unsigned |
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> | yes | yes | yes | مسار ملف تعريف الارتباط JSON |
--cookie-string <str> | yes | yes | - | سلسلة ملف تعريف ارتباط خام name=val; name=val |
--write-file <path> | yes | yes | yes | إلحاق رابط الانضمام النشط بهذا الملف (رابط واحد لكل سطر) |
--resources <mode> | yes | yes | yes | default / moderate / unlimited / custom (انظر أدناه) |
--read-buf <bytes> | yes | yes | yes | مخزن قراءة DC/RTP؛ يُستشار فقط مع --resources custom |
--max-dc-buf <bytes> | yes | - | - | DataChannel BufferedAmountLowThreshold؛ فقط مع --resources custom |
--mem-limit <bytes> | yes | yes | yes | حد الذاكرة المرن لـ 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 |