Brings the captcha-solver improvements from main into feat/doh while keeping
the flat client/ layout (no internal/* refactor pulled in).
- Persistent SavedProfile (UA + Sec-CH-UA + device JSON + browser_fp) captured
during manual solve and replayed by auto/slider so VK sees a consistent
fingerprint across runs. Stored under $VK_PROFILE_PATH | UserCacheDir |
TempDir | CWD.
- callCaptchaNotRobot: per-session adFp, sha256 debug_info, jittered
connectionRtt/connectionDownlink, cursor "[]" on first check, headers
switched to Origin api.vk.ru / Referer not_robot_captcha.
- Slider session: per-session adFp + debugInfo, savedProfile injection,
ApplyBrowserProfileFhttp + same captcha headers on every request,
getContent fallback with/without captcha_settings, second componentDone
before getContent (matches real widget lifecycle).
- Manual proxy: strip WebView identity headers (X-Requested-With and friends),
server-side rewrite of src/href/action attributes (skipping <script>/<style>
spans), inject helper script at <head> opening, sendBeacon + form fallback
for token delivery on mobile WebView, /generic_proxy SSRF allowlist +
scheme check + security-header strip + server-side success_token extract,
loggingTransport that captures the real browser fingerprint and persists
it as SavedProfile, best-effort 3s Shutdown, Windows rundll32 launcher,
PII redaction in logs.
- solvePoW returns an error instead of an empty string.
- Manual captcha timeout bumped 60s -> 3m on context.Background so a human
has time to solve regardless of the auth-level deadline; non-empty
token/key from the manual goroutine is treated as success even if the
server cleanup returned an error.
Добавлено кэширование success_token для капчи.
Установлен размер пула 1 для использования одной учетной записи во всех потоках.
Дополнительно устранил warnings от golangcli-lint:
Удален rand.Seed
Реализована проверка ошибки в endSession
Реализована обработка Body.Close()
Distribute incoming TCP connections across N parallel TURN+DTLS+KCP+smux
sessions in round-robin fashion, aggregating bandwidth of multiple relays.
Add sessionPool with thread-safe add/remove/pick operations.
Each session is maintained by its own goroutine with auto-reconnect.
The -n flag now controls session count in TCP mode (default 16 for VK).
Refactor: extract createSmuxSession from runTCPSession for reuse.
Add -tcp flag to client and server for forwarding TCP connections
(VLESS, etc.) through the TURN tunnel instead of UDP packets (WireGuard).
Stack: TCP → smux (mux) → KCP (reliability) → DTLS (encryption) → TURN
New dependencies: xtaci/kcp-go/v5, xtaci/smux