- Добавлена поддержка Safari в -browser.
Обновлена валидация флага, документация и выбор TLS/HTTP2-профиля для
chrome, firefox и safari.
- Улучшено переиспользование сохранённого браузерного профиля.
Добавлен VK_PROFILE_PATH, сохраняется Accept-Language, определяется семейство
браузера и mobile-профиль, а TLS-клиент пересобирается под захваченный UA.
- Обновлена форма запросов VK Smart Captcha.
Учитываются domain из redirect_uri, id.vk.ru origin/referer, settings_key для
slider captcha, сохранённый browser_fp и device JSON.
- Улучшено автоматическое решение captcha.
Обновлён формат PoW-ответа, добавлена mobile accelerometer телеметрия,
NetworkInformation отправляется только для Chromium-профилей, а slider solver
получил обратный скоринг и более естественные cursor traces.
- Убрано шумное throughput debug-логирование в relay-путях.
Удалён Stats.LogEvery и его вызовы в UDP/TCP relay, при этом агрегированная
TrafficStats-статистика сохранена.
- Обновлены тесты и инфраструктура сборки.
Добавлены проверки Safari, browser profile storage, captcha telemetry и
saved-profile fallback; tls-client обновлён до v1.15.1; Android bind в
Taskfile разделён для Windows и Unix-платформ
7.1 KiB
Флаги
Клиент
| Флаг | По умолчанию | Описание |
|---|---|---|
-listen |
127.0.0.1:9000 |
локальный адрес ip:port, куда подключается WireGuard или Xray клиент |
-peer |
обязательный | адрес сервера на VPS, host:port |
-provider |
vk |
источник TURN-creds: vk (см. docs/providers.md) |
-link |
пусто | (устарел) одна ссылка VK Calls https://vk.ru/call/join/...; используйте -links. Игнорируется, если задан -links |
-links |
обязательный для -provider vk (или -link) |
ссылки VK Calls через запятую https://vk.ru/call/join/A,https://vk.ru/call/join/B; каждая даёт свой пул из -n стримов |
-n |
10 |
параллельных TURN-потоков |
-transport |
tcp |
транспорт до TURN-реле: tcp (TCP/TLS) | udp |
-mode |
udp |
режим туннеля: udp (UDP-релей для WireGuard) | tcp (TCP-форвардер для Xray/sing-box) |
-bond |
false |
распределять одно TCP-соединение по всем активным smux-сессиям (только с -mode tcp) |
-turn |
из creds | переопределить IP TURN-сервера |
-port |
из creds | переопределить порт TURN-сервера |
-obf-profile |
none |
wire-профиль обфускации payload: none | rtpopus (RTP/opus + ChaCha20-Poly1305 AEAD) | rtpopus2 (+ RTP header extension, ближе к WebRTC) | rtpopus3 (+ abs-send-time, VAD, имитация потерь, вариативный timestamp); должен совпадать с сервером |
-obf-key |
пусто | общий ключ для -obf-profile != none, 32 байта hex (64 символа) |
-obf-timing |
0 |
межпакетная задержка для RTP-мимикрии (напр. 20ms); только с -obf-profile != none и -mode udp; 0 = выкл |
-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) |
-dns-mode |
auto |
plain (UDP/53) | doh | auto |
-dns-servers |
пусто | свои UDP/53 резолверы, ip[:port][,ip[:port]...] |
-client-id |
авто | уникальный ID клиента (автогенерация если не задан) |
-sub |
пусто | URL подписки (sub.md) для получения списка серверов |
-debug |
false |
debug-логи |
Сервер
| Флаг | По умолчанию | Описание |
|---|---|---|
-listen |
0.0.0.0:56000 |
адрес прослушивания ip:port |
-connect |
обязательный | локальный backend host:port (WG 127.0.0.1:51820 / Xray 127.0.0.1:443) |
-mode |
udp |
режим туннеля: udp | tcp (bond автоопределяется) |
-obf-profile |
none |
wire-профиль обфускации payload: none | rtpopus | rtpopus2 | rtpopus3; должен совпадать с клиентом (описание профилей - в таблице клиента) |
-obf-timing |
0 |
межпакетная задержка для RTP-мимикрии (напр. 10ms); только с -obf-profile != none и -mode udp; 0 = выкл |
-obf-key |
пусто | общий ключ для -obf-profile != none, 32 байта hex |
-gen-obf-key |
false |
напечатать новый ключ и выйти |
-clients-file |
пусто | путь к JSON-файлу (clients.json) для включения авторизации по Client ID |
-debug |
false |
debug-логи |
Управление Client ID (Команды Сервера)
Note
Про авторизацию: клиент всегда отправляет свой Client ID первой записью после DTLS-handshake, сервер всегда его читает — wire-контракт симметричен. Флаг
-clients-fileна сервере включает проверку ID по allowlist (clients.json). Без-clients-fileID читается и игнорируется.
Сервер содержит встроенные команды для управления файлом clients.json (горячая перезагрузка поддерживается автоматически, перезапускать сервер после изменений не нужно).
# Добавить или обновить клиента
./server clients add <client_id> ["Комментарий"]
# Удалить клиента
./server clients remove <client_id>
# Вывести список всех клиентов
./server clients list
По умолчанию команды работают с файлом clients.json в текущей директории. Если вы используете другой путь, задайте его через переменную окружения CLIENTS_FILE:
CLIENTS_FILE=/etc/free-turn-proxy/clients.json ./server clients list
Управление через Docker
Если сервер запущен в Docker-контейнере (например, с именем free-turn-proxy), вы можете использовать команду docker exec для управления клиентами без необходимости заходить внутрь контейнера или редактировать файл вручную:
# Добавить клиента
docker exec -it free-turn-proxy /app/server clients add "my-client" "Комментарий"
# Удалить клиента
docker exec -it free-turn-proxy /app/server clients remove "my-client"
# Посмотреть список
docker exec -it free-turn-proxy /app/server clients list
Важно: команды
docker execберут путь к файлу из переменной окруженияCLIENTS_FILEконтейнера. Это работает, только если контейнер запущен с включённой авторизацией (т.е.CLIENTS_FILEзадан вdocker-compose.ymlи файл проброшен черезvolumes). Если авторизация выключена,clientsпишет в эфемерныйclients.jsonвнутри контейнера, который сервер не читает. Путь должен совпадать с тем, что смонтирован и передан в-clients-file.