[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94889":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":9,"language":10,"languages":8,"totalLinesOfCode":8,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":8,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":8,"createdAt":8,"pushedAt":8,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":23,"discoverSource":24},94889,"proxy-turn-vk-android","SpaceNeuroX\u002Fproxy-turn-vk-android","SpaceNeuroX",null,"https:\u002F\u002Fgithub.com\u002FSpaceNeuroX\u002Fproxy-turn-vk-android","Kotlin",233,27,4,23,0,2,39.54,false,"main","2026-08-24 04:01:22","# qWDTT\n\nAndroid-клиент для VPN-туннеля WireGuard, который ходит до вашего VPS через TURN relay VK — снаружи это выглядит как зашифрованный медиапоток звонка WebRTC, а не как классический VPN.\n\n**Пакет:** `net.qwdtt.client` · **Версия:** 1.3.8\n\nСовместим с сервером и протоколом **WDTT** (оригинал: [amurcanov\u002Fproxy-turn-vk-android](https:\u002F\u002Fgithub.com\u002Famurcanov\u002Fproxy-turn-vk-android)). Сервер `wdtt-server`, ссылки `wdtt:\u002F\u002F`, WRAP\u002FRTP и анонимный VK-auth работают так же — можно поднять VPS оригинальным деплоем и подключиться qWDTT.\n\n---\n\n## qWDTT и базовый WDTT — в чём разница\n\nКлиент qWDTT и базовый WDTT используют **один и тот же протокол**. Серверные части **полностью совместимы**: `wdtt-server` с деплоя оригинала или qWDTT, пароли, `wdtt:\u002F\u002F`, WRAP\u002FRTP, Telegram-бот — всё работает взаимозаменяемо. Меняется в основном Android-клиент (UI и удобство).\n\n**Есть в qWDTT, чего нет в базовом WDTT:**\n\n| Функция | qWDTT | Базовый WDTT |\n|---------|:-----:|:------------:|\n| **Профили** — несколько конфигов, папки, перетаскивание, быстрый выбор на «Туннеле» | да | нет (одна настройка на вкладке) |\n| **Импорт** `qwdtt:\u002F\u002F`, файл `.qwdtt`, пакетный JSON, QR на экспорт | да | только `wdtt:\u002F\u002F` и ручной ввод |\n| **Глобальные VK-хеши** — один пул хешей для нескольких профилей | да | нет |\n| **Пинг** до сервера по профилю, сортировка по задержке | да | нет |\n| **Подписки** — профили по HTTPS JSON, автообновление, трафик на карточке | да | нет |\n| **Статус пароля** в карточке профиля | да | нет |\n| **VK account auth** — вход в аккаунт VK, перехват TURN из WebView | да | только анонимный API |\n| **Виджет** на рабочем столе (вкл\u002Fвыкл туннеля) | да | нет |\n| **Плитка** в шторке Quick Settings | да | нет |\n| **Плавающая панель** темы\u002Fпалитры | да | нет |\n\n---\n\n## Зачем это нужно\n\nДля **обхода белых списков** на сетях мобильных операторов: трафик идёт через VK TURN и выглядит как звонок WebRTC, а не как обычный VPN или прокси.\n\nqWDTT использует **инфраструктуру VK-звонков** как транспорт:\n\n- клиент получает временные **TURN**-учётные данные из VK-звонка;\n- поднимает **DTLS** через TURN relay;\n- снаружи пакеты обёрнуты в **RTP** и шифруются **WRAP** (ChaCha20-Poly1305), чтобы DPI видел поток, похожий на OPUS-аудио WebRTC;\n- на телефоне — системный **WireGuard** (`VpnService` + GoBackend), на VPS — `wdtt-server`.\n\n```\nТелефон                    VK TURN relay                 VPS\n┌──────────────┐  RTP+WRAP   ┌──────────┐  RTP+WRAP+DTLS  ┌─────────────┐\n│ WireGuard    │ ──\u002FDTLS───► │  relay   │ ───────────────►│ wdtt-server │\n│ Go-клиент    │             │  (VK)    │                 │ WireGuard   │\n│ 127.0.0.1    │             └──────────┘                 └─────────────┘\n└──────────────┘\n```\n\n## Что умеет приложение\n\n| Раздел | Кратко |\n|--------|--------|\n| **Профили** | Несколько конфигов, группы, **подписки по JSON**, импорт\u002Fэкспорт, QR, файл `.qwdtt` |\n| **Импорт ссылок** | Официальные `wdtt:\u002F\u002F` **и** расширенные `qwdtt:\u002F\u002Fconfig?…` |\n| **Туннель** | Подключение, логи, статистика, пинг до peer |\n| **Настройки** | Потоки, DNS, капча, режим VK, обход IP\u002Fдоменов, исключения приложений (ЧС\u002FБС), шаринг обхода |\n| **Деплой** | Установка `wdtt-server` на VPS по SSH с телефона |\n| **Фон** | Foreground service, виджет, плитка в шторке, watchdog при смене сети |\n\n### VK: два режима получения TURN\n\n- **Анонимный** (по умолчанию) — Go-клиент ходит в VK API (`client_id` 6287487 \u002F 8202606), при капче — цепочка авто-решателей + WebView.\n- **Через аккаунт VK** — вход в WebView один раз; при подключении открывается страница звонка, перехватывается `turn_server`. Лимит **~4 потока** на хеш. TURN-креды кэшируются **~9 мин**, затем обновляются автоматически.\n\nКука VK (`remixsid`) живёт долго (решает VK). TURN login\u002Fpassword — короткоживущие, это нормально.\n\n---\n\n## Форматы конфигурации\n\n### Официальная ссылка WDTT (`wdtt:\u002F\u002F`)\n\nПоддерживается **полностью** — импорт из QR, буфера обмена, Telegram-бота сервера, как в оригинальном WDTT.\n\n```text\nwdtt:\u002F\u002F\u003CIP_сервера>:\u003Cdtls_port>:\u003Cwg_port>:\u003Clocal_port>:\u003Cпароль>:\u003Cvk_hash>\n```\n\n**Пример:**\n\n```text\nwdtt:\u002F\u002F203.0.113.10:56000:56001:9000:MySecretPass16:8UkewARpV0aJoWheFZlR942el6unTZvhneulo-eU8gA\n```\n\n| Поле | По умолчанию | Описание |\n|------|--------------|----------|\n| `dtls_port` | `56000` | UDP-порт DTLS на VPS |\n| `wg_port` | `56001` | внутренний WireGuard-порт сервера |\n| `local_port` | `9000` | локальный UDP на Android |\n| `пароль` | — | пароль подключения (WRAP + авторизация на сервере) |\n| `vk_hash` | — | хеш звонка; если в хеше есть `:`, всё после 5-го поля склеивается |\n\nПри импорте `wdtt:\u002F\u002F` потоки выставляются в **16** (как в оригинале), peer = `IP:dtls_port`.\n\nБот на сервере при `\u002Flist` и `\u002Fnew` отдаёт такие ссылки; qWDTT их понимает без конвертации.\n\n### Расширенная ссылка qWDTT (`qwdtt:\u002F\u002F`)\n\nУдобнее для профилей: имя, несколько хешей, настраиваемые потоки.\n\n```text\nqwdtt:\u002F\u002Fconfig?name=Дом&peer=1.2.3.4:56000&hashes=хеш1,хеш2&workers=18&port=9000&pass=секрет\n```\n\nДополнительно: `dtls_port` \u002F `server_port` если peer без порта.\n\n### JSON и файл `.qwdtt`\n\n```json\n{\n  \"name\": \"Дом\",\n  \"peer\": \"1.2.3.4:56000\",\n  \"hashes\": \"хеш1,хеш2\",\n  \"workers\": 18,\n  \"port\": 9000,\n  \"password\": \"секрет\"\n}\n```\n\nАльтернативные ключи: `vkHashes`, `workersPerHash`, `listenPort`, `pass`.  \nВ QR можно передать сырой JSON или Base64. Файл `.qwdtt` — URI или JSON внутри.\n\n### Подписки (HTTPS JSON)\n\nПрофили можно раздавать с вашего сервера одним JSON-файлом. Приложение периодически или по кнопке **Обновить** подтягивает список и **заменяет** все профили в папке подписки.\n\n**В приложении:** вкладка **Профили** → **+** → **Подписка** (нужен только адрес JSON; название берётся из `subscriptionName`).\n\n**Карточка подписки** на вкладке «Профили»: описание, трафик, кнопки обновить\u002Fудалить. Нажатие на карточку открывает папку с профилями. В папку подписки **нельзя** вручную добавлять или импортировать профили — только через обновление подписки.\n\n#### Структура JSON\n\n```json\n{\n  \"subscriptionName\": \"DarkBit VPN\",\n  \"description\": \"Подписка · до 24.08.2026\",\n  \"trafficUsedMb\": 76.8,\n  \"trafficLimitMb\": 102912,\n  \"updatedAt\": \"2026-06-28\",\n  \"version\": 1,\n  \"profiles\": [\n    {\n      \"name\": \"Сервер 1\",\n      \"peer\": \"203.0.113.10:56000\",\n      \"hashes\": \"vk_hash_1,vk_hash_2\",\n      \"workers\": 18,\n      \"port\": 9000,\n      \"password\": \"секрет\"\n    }\n  ]\n}\n```\n\n| Поле | Обязательно | Описание |\n|------|:-----------:|----------|\n| `subscriptionName` | да | Название подписки и папки профилей |\n| `profiles` | да | Массив профилей (см. формат JSON выше) |\n| `description` | нет | Текст на карточке подписки |\n| `trafficUsedMb` | нет | Использованный трафик (МБ), для прогресс-бара |\n| `trafficLimitMb` | нет | Лимит трафика (МБ) |\n| `updatedAt` | нет | Метка времени на стороне сервера (строка) |\n| `version` | нет | Версия набора профилей (число, пока не используется в UI) |\n\n**Альтернативные ключи:** `groupName` вместо `subscriptionName`; массив `servers` вместо `profiles`; в профиле — `vkHashes`, `workersPerHash`, `listenPort`, `pass`.\n\n**Требования к адресу:** только `http:\u002F\u002F` или `https:\u002F\u002F`. Ответ — JSON (или Base64 с JSON внутри).\n\n**Экспорт группы** (⋮ → Управление папками → экспорт) формирует совместимый JSON с `subscriptionName` и `profiles[]` — его можно положить на HTTPS и выдать пользователям как подписку.\n\n---\n\n## Быстрый старт\n\n1. APK из [релизов](https:\u002F\u002Fgithub.com\u002FSpaceNeuroX\u002Fproxy-turn-vk-android\u002Freleases) или сборка ниже.\n2. Сервер: вкладка **Деплой** или уже настроенный VPS с `wdtt-server`.\n3. VK: групповой звонок → ссылка `vk.com\u002Fcall\u002Fjoin\u002F…` или только хеш после `\u002Fjoin\u002F`.\n4. Импорт: вставьте `wdtt:\u002F\u002F…` \u002F `qwdtt:\u002F\u002F…`, QR или заполните профиль вручную.\n5. **Подключить** → разрешить VPN.\n\n> Завершая звонок: **«Просто завершить»**, не **«Завершить для всех»** — иначе хеш умрёт.\n\nДо **4 хешей** в профиле — распределение нагрузки между звонками.\n\n---\n\n## Сервер\n\n`server.go` → бинарь `wdtt-server`: DTLS, WRAP\u002FRTP, выдача WG-конфига, `\u002Fetc\u002Fwdtt\u002Fpasswords.json`, Telegram-бот.\n\n| Параметр | Значение |\n|----------|----------|\n| `56000\u002Fudp` | DTLS (клиенты) |\n| `56001\u002Fudp` | WireGuard внутри сервера |\n| `9000\u002Fudp` | локальный порт на Android |\n| `10.66.0.0\u002F16` | подсеть клиентов (типичный адрес `10.66.66.x`) |\n\nПароли: главный + до 10 пользовательских (срок, привязка к устройству). Обновление без рестарта: правка JSON → `kill -HUP $(pidof wdtt-server)`.\n\n---\n\n## Сборка\n\n```bash\nexport ANDROID_NDK_HOME=\u002Fpath\u002Fto\u002Fandroid-ndk\n.\u002Fscripts\u002Fbuild-native-libs.sh\n.\u002Fgradlew :app:assembleDebug\n```\n\nОдна ABI: `.\u002Fscripts\u002Fbuild-go-lib.sh arm64-v8a`\n\n---\n\n## Структура репозитория\n\n```text\napp\u002F           Kotlin + Compose, VPN, WebView (VK auth, капча)\ngo_client\u002F     Нативный клиент → libclient.so\nserver.go      Серверная часть (совместим с WDTT)\nscripts\u002F       Сборка Go под Android ABI\n```\n\n---\n\n## Лицензия\n\n[GNU GPL v3](LICENSE)\n\n---\n\n## Происхождение\n\nФорк [proxy-turn-vk-android](https:\u002F\u002Fgithub.com\u002Famurcanov\u002Fproxy-turn-vk-android) (автор **amurcanov**). Протокол и сервер общие; клиентская часть переработана под профили, импорт и удобство повседневного использования. Разработка форка — [SpaceNeuroX\u002Fproxy-turn-vk-android](https:\u002F\u002Fgithub.com\u002FSpaceNeuroX\u002Fproxy-turn-vk-android).\n","qWDTT 是一款基于 WireGuard 的 Android VPN 客户端，通过 VK 的 WebRTC TURN 中继（伪装为加密语音流）实现隐蔽隧道通信。其核心特点是协议级兼容 WDTT 服务端，支持多配置文件管理、VK 账号认证获取 TURN 凭据、WRAP\u002FRTP 封装（ChaCha20-Poly1305 加密）、HTTPS 订阅更新、桌面小部件与快捷设置开关。所有流量经 VK 中继后呈现为合法 WebRTC 媒体流，可有效规避运营商白名单检测。适用于需在受限移动网络（如某些地区运营商或企业网络）中建立低特征识别、高隐蔽性加密隧道的场景。","2026-08-17 02:30:12","trending"]