build 21
Adaptive captcha heuristics — informed by analysis of 31 real sessions across VK's different captcha modes.
Optimization #1: Skip-checkbox-if-HTML-slider (captcha_pow.go)
When the captcha page's window.init.data.show_captcha_type is "slider", VK is in slider-only mode and captchaNotRobot.check will return status=ERROR anyway. Burn the checkbox path proactively and skip the check — saves ~3 seconds (2.5s artificial delay + HTTP round-trip) on every solveCaptchaPoW call in that mode.
Dormant when VK is in checkbox mode (HTML="checkbox") — which is the current mode. Applies automatically if/when VK switches back.
Optimization #2: Adaptive retry on consecutive empty show_captcha_type (creds.go)
The maxPoWRetries=3 loop now tracks how many PoW attempts in a row came back with show_captcha_type="" from the checkbox check. After two such attempts it short-circuits to the WebView fallback instead of burning a third captcha cycle. Saves ~3-5 seconds and one API round-trip on LTE sessions where VK has no slider ready for the client's IP reputation.
Across 31 reviewed sessions there are 0 counterexamples — the transition from empty hint to "slider" hint always happens by attempt 2 when it happens at all.
Other
solveCaptchaPoWandcallCaptchaNotRobotAPIsignature change: both now return(token, lastShowCaptchaType, err). The hint is threaded up tocreds.gofor the retry decision.- Verified on build 21: WiFi and LTE, both at 1 PoW attempt → slider → success.