
نفق البيانات عبر 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)headless/vk-bot/ - بوت VK Long Poll مستقل ينشئ منشئين بلا واجهة عند الطلب ويرد برابط الانضمام (بديل من جهة الخادم لبوت Electron)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.تتوفر ثنائيات جاهزة على 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/: