From 5a347bece9bd529674a47cd890aad905eebcb7d1 Mon Sep 17 00:00:00 2001 From: samosvalishe Date: Mon, 13 Jul 2026 21:24:59 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D1=84=D0=BB=D0=B0=D0=B3=20-platform,?= =?UTF-8?q?=20persona-=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D1=8C=20=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=83=D0=BD=D0=BA=D1=82=D1=83=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5=D0=BD=D1=86=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++-- docs/flags.md | 5 +++-- docs/modes.md | 20 ++++++++++---------- docs/providers.md | 8 +++++--- docs/troubleshooting.md | 2 +- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64cbdf8..3b65e47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -261,7 +261,7 @@ * **docker:** исправить сборку, добавить compose, убрать VLESS_BOND ([dfbfae2](https://github.com/samosvalishe/free-turn-proxy/commit/dfbfae29014b3cd246550589640e871ee424807e)) * **dtlsdial:** Dial использует хелпер GenerateSelfSignedCert внутри ([21138fe](https://github.com/samosvalishe/free-turn-proxy/commit/21138fef26b61f8ba4b72f8e5389d3b90b7026b2)) * **dtlsdial:** унифицировать генерацию self-signed сертификата ([ef549dc](https://github.com/samosvalishe/free-turn-proxy/commit/ef549dc2b8405a1e8378d9c81f2ae3871495121f)) -* **install:** переписать установщик сервера — TUI, надёжность, non-interactive ([1b154a2](https://github.com/samosvalishe/free-turn-proxy/commit/1b154a2e84057c07344a4d7308ca7d26f5f127ec)) +* **install:** переписать установщик сервера - TUI, надёжность, non-interactive ([1b154a2](https://github.com/samosvalishe/free-turn-proxy/commit/1b154a2e84057c07344a4d7308ca7d26f5f127ec)) * **lint:** устранить замечания golangci-lint + переход на dockers_v2 ([dd82332](https://github.com/samosvalishe/free-turn-proxy/commit/dd8233208ccbe60ea17745ddc17df7a8e6c56872)) * **routes:** починить установку маршрутов в routes.ps1 на Windows ([7b0a907](https://github.com/samosvalishe/free-turn-proxy/commit/7b0a9076380bbcdc2f83d6da63ca3800b5d68412)) * **server:** ограниченное ожидание второго сигнала; предупреждение при выключенном -wrap ([fb711c1](https://github.com/samosvalishe/free-turn-proxy/commit/fb711c12f5e1f78ee037ceed434b6cdde5a961d8)) @@ -306,7 +306,7 @@ * **tcpfwd:** заменить busy-loop poll пула на Ready-канал; тихий accept-цикл при shutdown ([2b24471](https://github.com/samosvalishe/free-turn-proxy/commit/2b24471553b7a9acb0c0117d7ce666bac758e97e)) * **udprelay:** разбить на run/loop/listener ([d82258f](https://github.com/samosvalishe/free-turn-proxy/commit/d82258f844ef65ba06ba05aa7de4130c43f2c56e)) * **vkauth:** разбить token.go на файлы по шагам ([0e2d42c](https://github.com/samosvalishe/free-turn-proxy/commit/0e2d42c9126505599db25d8c6f82956036c193be)) -* **wire:** переименовать srtpmimicry → rtpopus, заменить bool -obf на -obf-profile ([4bedd00](https://github.com/samosvalishe/free-turn-proxy/commit/4bedd00662bb75a5f2fdd8fc3cee9c8eb6d94e7c)) +* **wire:** переименовать srtpmimicry -> rtpopus, заменить bool -obf на -obf-profile ([4bedd00](https://github.com/samosvalishe/free-turn-proxy/commit/4bedd00662bb75a5f2fdd8fc3cee9c8eb6d94e7c)) * **wrap:** заменить DTLS-мимикрию на noise-only AEAD ([e2dd09a](https://github.com/samosvalishe/free-turn-proxy/commit/e2dd09a7296f972285850786c6552d66006bf19d)) * **wrap:** перейти на мимикрию под SRTP в обход content-фильтра VK TURN ([729557d](https://github.com/samosvalishe/free-turn-proxy/commit/729557d00d3f7b16e4d1d876adca23404eff738c)) * **wrap:** переписать как мимикрию под DTLS 1.2 ApplicationData с AEAD ([39f95a8](https://github.com/samosvalishe/free-turn-proxy/commit/39f95a8e0c2ca3520c530e425aa55a5b586feadb)) diff --git a/docs/flags.md b/docs/flags.md index 652071f..ab33daa 100644 --- a/docs/flags.md +++ b/docs/flags.md @@ -21,7 +21,8 @@ | `-gen-obf-key` | `false` | напечатать новый ключ и выйти | | `-manual-captcha` | `false` | сразу ручной режим captcha (только `-provider vk`) | | `-streams-per-cred` | `10` | потоков на один кеш VK-учёток (только `-provider vk`) | -| `-browser` | `firefox` | браузерный профиль VK-auth (UA + TLS JA3 + client hints): `chrome` \| `firefox` \| `safari` (только `-provider vk`) | +| `-browser` | `firefox` | семейство персоны VK-auth (UA + TLS JA3 + client hints): `chrome` \| `firefox` \| `safari` (только `-provider vk`) | +| `-platform` | `desktop` | класс устройства персоны VK-auth (мобильность UA/device/client hints): `desktop` \| `mobile` (только `-provider vk`) | | `-dns-mode` | `auto` | `plain` (UDP/53) \| `doh` \| `auto` | | `-dns-servers` | пусто | свои UDP/53 резолверы, `ip[:port][,ip[:port]...]` | | `-client-id` | авто | уникальный ID клиента (автогенерация если не задан) | @@ -45,7 +46,7 @@ ## Управление Client ID (Команды Сервера) > [!NOTE] -> **Про авторизацию:** клиент **всегда** отправляет свой Client ID первой записью после DTLS-handshake, сервер **всегда** его читает — wire-контракт симметричен. Флаг `-clients-file` на сервере включает **проверку** ID по allowlist (`clients.json`). Без `-clients-file` ID читается и игнорируется. +> **Про авторизацию:** клиент **всегда** отправляет свой Client ID первой записью после DTLS-handshake, сервер **всегда** его читает - wire-контракт симметричен. Флаг `-clients-file` на сервере включает **проверку** ID по allowlist (`clients.json`). Без `-clients-file` ID читается и игнорируется. Сервер содержит встроенные команды для управления файлом `clients.json` (горячая перезагрузка поддерживается автоматически, перезапускать сервер после изменений не нужно). diff --git a/docs/modes.md b/docs/modes.md index 1245d83..636a96e 100644 --- a/docs/modes.md +++ b/docs/modes.md @@ -17,13 +17,13 @@ ./client -listen 127.0.0.1:9000 -peer :56000 -link "" -mode tcp ``` -**Bonding** — распределение одного TCP-соединения по всем активным smux-сессиям, флаг только клиентский: +**Bonding** - распределение одного TCP-соединения по всем активным smux-сессиям, флаг только клиентский: ```bash ./client -listen 127.0.0.1:9000 -peer :56000 -link "" -mode tcp -bond -n 4 ``` -Серверного `-bond` нет — сервер автоопределяет bond по magic-префиксу в стриме. +Серверного `-bond` нет - сервер автоопределяет bond по magic-префиксу в стриме. ## OBF (wire-профили обфускации) @@ -59,30 +59,30 @@ ``` > [!WARNING] -> Транспорт UDP часто режется или блокируется системами DPI (особенно на мобильных операторах). Если у вас нестабильная связь — используйте стандартный TCP/TLS (просто не указывайте этот флаг). +> Транспорт UDP часто режется или блокируется системами DPI (особенно на мобильных операторах). Если у вас нестабильная связь - используйте стандартный TCP/TLS (просто не указывайте этот флаг). ## Потоки и Лимиты (-n) Параметр `-n` задает количество параллельных потоков к TURN-серверу (по умолчанию 10). Увеличение потоков может помочь поднять скорость или улучшить стабильность, **но не стоит этим злоупотреблять**. Слишком высокое значение (например, больше 15-20) повышает риск получения бана со стороны VK. Практика показывает, что значений от `6` до `12` зачастую достаточно для комфортной работы. -То же самое касается параметра `-streams-per-cred` — используйте разумные значения. +То же самое касается параметра `-streams-per-cred` - используйте разумные значения. ## Captcha -Клиент сам проходит VK captcha. Если автоматика не справилась — открывается локальный браузер. Принудительно ручной: +Клиент сам проходит VK captcha. Если автоматика не справилась - открывается локальный браузер. Принудительно ручной: ```bash ./client -manual-captcha ... ``` -Профиль браузера: `vk_profile.json` рядом с бинарником. +Персона auth-запросов (UA + TLS JA3 + client hints + device) задаётся флагами `-browser` (семейство) и `-platform` (desktop/mobile); значения самосогласованы, без внешнего состояния. ## DNS -Флаг `-dns-mode` управляет транспортом резолвера самого клиента (VK API, токены, captcha) — не DNS-маршрутизацией пользовательского трафика. +Флаг `-dns-mode` управляет транспортом резолвера самого клиента (VK API, токены, captcha) - не DNS-маршрутизацией пользовательского трафика. -- `plain` — только UDP/53; -- `doh` — только DNS-over-HTTPS (Yandex DoH); -- `auto` (дефолт) — сначала UDP/53, sticky-fallback на DoH при полном отказе. +- `plain` - только UDP/53; +- `doh` - только DNS-over-HTTPS (Yandex DoH); +- `auto` (дефолт) - сначала UDP/53, sticky-fallback на DoH при полном отказе. Свои UDP/53 резолверы: `-dns-servers ip[:port][,ip[:port]...]`. diff --git a/docs/providers.md b/docs/providers.md index bfc5ead..f29672a 100644 --- a/docs/providers.md +++ b/docs/providers.md @@ -9,8 +9,10 @@ VK Calls API. Перебирает встроенные `app_id/app_secret`, получает короткоживущие (≈10 мин) TURN-creds через 4-шаговый token chain. Solver captcha auto+manual. **Обязательные флаги:** -- `-link` — VK callroom URL вида `https://vk.ru/call/join/` (нормализуется до join-кода). +- `-link` - VK callroom URL вида `https://vk.ru/call/join/` (нормализуется до join-кода). **Опциональные:** -- `-streams-per-cred` (default 10) — сколько TURN-стримов делят один кеш креденшалов. -- `-manual-captcha` — пропустить auto-solver, сразу открыть браузер. \ No newline at end of file +- `-streams-per-cred` (default 10) - сколько TURN-стримов делят один кеш креденшалов. +- `-manual-captcha` - пропустить auto-solver, сразу открыть браузер. +- `-browser` (default `firefox`) - семейство персоны auth (UA + TLS JA3 + client hints + device): `chrome` \| `firefox` \| `safari`. +- `-platform` (default `desktop`) - класс устройства персоны: `desktop` \| `mobile`. \ No newline at end of file diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 0937b85..af186c3 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -2,7 +2,7 @@ - **Сначала запускайте client, потом включайте WireGuard / Xray.** - **Трафик не идет (нет интернета):** Проверьте серверный флаг `-connect`. В нем должен быть указан точный локальный порт, на котором слушает ваш VPN (например, `51820` для WG или `443` для VLESS). Если порт не совпадает, прокси будет стучаться в пустоту. -- **WireGuard забирает весь трафик:** пайп с `-debug 2>&1` и скриптом маршрутов обязателен (`scripts/routes.sh` / `scripts/routes.ps1` / `scripts/routes-macos.sh`). Маршруты не добавляются → убедитесь, что в команде есть пайп перед скриптом. +- **WireGuard забирает весь трафик:** пайп с `-debug 2>&1` и скриптом маршрутов обязателен (`scripts/routes.sh` / `scripts/routes.ps1` / `scripts/routes-macos.sh`). Маршруты не добавляются -> убедитесь, что в команде есть пайп перед скриптом. - **DPI блокирует UDP:** Если используете `-transport udp` и ничего не работает, попробуйте убрать флаг (использовать TCP по умолчанию). - **Обход шейпинга (кастомный TURN):** Если вы знаете "чистый" IP-адрес TURN-сервера VK, где нет агрессивного шейпинга, вы можете передать его вручную: `-turn -port `. Это перезапишет данные, полученные из ссылки. - **Проблемы с DNS на мобильном интернете:** Резолв ломается. Передайте DNS вашего провайдера явно: `-dns-servers `.