qWDTT needs VK TURN credentials — a username, password, and server URLs — to establish the relay tunnel through VK’s call infrastructure. Two authentication modes are available: anonymous (default) and VK account. Both ultimately deliver TURN credentials fromDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/SpaceNeuroX/proxy-turn-vk-android/llms.txt
Use this file to discover all available pages before exploring further.
calls.okcdn.ru, but they differ in how those credentials are obtained, how many concurrent workers they support, and whether a personal VK account is involved.
Mode Comparison
| Feature | Anonymous | VK Account |
|---|---|---|
| Login required | No | Once (WebView) |
| Max workers | 108 (27 × 4 hashes) | 4 |
| TURN credential TTL | ~9 min (auto-renewed) | ~9 min (auto-renewed) |
VK cookie (remixsid) | Not needed | Long-lived |
| Captcha risk | Yes | Lower |
| Concurrent call sessions | Multiple | Single |
Anonymous Mode
Anonymous mode is the default. No VK account is required — the Go client calls the VK API directly, posing as a mobile app.How it works
The Go client rotates between two stable VKapp_id values (6287487 and 8202606) with cycling fallback. On each credential fetch the following API chain is executed:
get_anonym_token
Posts to
https://login.vk.ru/?act=get_anonym_token with the selected client_id and client_secret to obtain a short-lived anonymous access token.calls.getCallPreview
Calls
https://api.vk.ru/method/calls.getCallPreview to validate the join link and mimic real VK client behaviour. A non-retryable error here (VK error codes 951, 954, or 9000–9999) means the call hash is dead or invalid.calls.getAnonymousToken
Calls
https://api.vk.ru/method/calls.getAnonymousToken to receive a token scoped to the specific call. This step may trigger a captcha — see Captcha Handling.auth.anonymLogin (OK.ru)
Posts a session-data JSON to
https://calls.okcdn.ru/fb.do using auth.anonymLogin to obtain an okcdn session key.tls-client (Chrome_146 profile) to blend in with real browser traffic.
VKCalls API path (vkAnonPath)
The vkAnonPath setting selects which anonymous API sequence is used:
vkcalls(default) — Uses the newerapi.vk.meendpoint. The chain callsauth.getAnonymToken→messages.getCallPreview→messages.getAnonymCallTokenbefore proceeding to the OK.ru TURN join. This path is preferred and is tried first.legacy— Uses the olderapi.vk.ruendpoint chain described above. Automatically used as fallback if thevkcallspath fails for a retryable reason.
-vk-anon-path vkcalls / -vk-anon-path legacy on the CLI.
VK Account Mode
Account mode uses your personal VK account to obtain TURN credentials via an intercepted WebView session.Enabling account mode
Enable in Settings → VK auth mode → Account.Authentication flow
First login
On first use (or if the
remixsid session cookie has expired) a WebView opens to https://m.vk.ru/login. Complete the VK login as normal. The remixsid cookie is stored in Android’s WebView CookieManager and persists across app restarts.Silent TURN fetch (subsequent connections)
On each connection attempt, a headless (invisible) WebView loads one of the VK call join URLs (
m.vk.ru/call/join/<hash>). A JavaScript interceptor patches window.fetch and XMLHttpRequest.prototype.send to intercept any response that contains a turn_server object. The TURN credentials are delivered to the Go client without user interaction. The silent attempt has a 22-second timeout.Visible WebView fallback
If the silent fetch fails or no VK session exists, a visible WebView dialog opens. An auto-click script looks for the “Продолжить в браузере” / “Присоединиться” button and clicks it automatically. If auto-click cannot find the button after several attempts, the user is prompted to tap it manually.
Worker limit
A single VK call provides approximately 4 TURN relay sessions. Because account mode draws on a single active call, the worker count is automatically capped at 4 regardless of the value configured in the profile.Credential Caching
Both modes share the same credential caching layer, implemented in the Go client:| Parameter | Value |
|---|---|
credentialLifetime | 10 minutes |
cacheSafetyMargin | 60 seconds |
| Effective cache duration | ~9 minutes |
| Throttle between VK API requests | 3–6 seconds (randomised) |
| Streams per cache entry | 10 |