- Добавлена поддержка 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-платформ
- Removed hardcoded owner/name from release.github – not needed when using GITHUB_TOKEN.
- Replaced explicit repo strings with {{ .Env.GITHUB_REPOSITORY }} for Docker image names and the org.opencontainers.image.source label.
- Makes the config reusable across forks – no manual edits required when moving the project.
Пока пользователь решает captcha вручную, поднимаем сессионный captchaActive:
watchdog не считает подключение зависшим (двигает дедлайн) и отдаёт StateCaptcha
вместо connecting, чтобы UI не показывал ошибку.
Экспортируем SetManualCaptcha(bool); при включении прокидываем ManualOnly в
vk.Config, и решатель идёт ручным путём с первой попытки (минуя авто-решатель).
Когда авто-решатель captcha не справился, прокидываем в vk-провайдер
ManualSolverFunc, который переиспользует SolveViaProxy и сигналит UI через
gomobile-интерфейс CaptchaPresenter (Show/Hide). Без презентера поведение
прежнее. Файлы библиотеки не затронуты - мостик в новом файле vk/iosmanual.go.
- безопасная конверсия uint64→int64 (clampToInt64) для счётчиков,
экспортируемых через gomobile, чтобы не ловить G115;
- анонимный ресивер у bufLogger.write (unused-receiver).
udpParams заполнял только ObfKey, но не Profile/ObfTiming, как это
делает CLI-клиент. Без профиля клиент обфусцировал трафик не так, как
ждёт сервер (OBF_PROFILE=rtpopus): VK-аутентификация и TURN-аллокация
проходили, но дальше Tx рос, Rx оставался 0 и стримы отваливались.
без RTP-профиля паковать нечего, а в tcp-режиме pacing ломает RTT/конгешн
KCP. Раньше флаг в tcp молча игнорировался. Валидация симметрична на
клиенте и сервере.