GeeTest v3: why your slider automation keeps failing the second check
Description and use
Automated slider interactions with GeeTest v3 fail validation because the trajectory data is unrealistic. Solutions include generating a realistic drag trajectory or using a solving service that returns valid geetest_challenge, geetest_validate, and geetest_seccode values.
Problem
Automated slider interactions fail at validation because the trajectory data sent to GeeTest is not realistic.
Outcome
Using realistic drag trajectories or a solving service bypasses GeeTest v3 validation failures.
Workflow
- 1. Detect GeeTest v3 by checking for gt and challenge parameters in the page source or network requests.
- 2. Extract the gt (public site key) and challenge (nonce).
- 3. Either (a) drive a real browser and generate a realistic drag trajectory with easing, Y jitter, reaction delay, and overshoot, or (b) send gt and challenge to a solving service such as CaptchaAI and receive the three validation values.
- 4. Submit the received values to the site’s backend for server‑side confirmation.
Evidence
The JS renders the slider, and while you drag it, records a trajectory — a time-series of positions, plus timing, acceleration, and a few environment signals.
If GeeTest accepts, it returns three values: geetest_challenge, geetest_validate, geetest_seccode.
A human accelerates, overshoots slightly, corrects, and settles. A for loop moving 3px per tick produces a straight line with constant velocity — which is the single clearest tell there is.
Send the parameters to a solving service and get the three values back. You extract gt and challenge, submit them, and receive geetest_challenge / geetest_validate / geetest_seccode to post to the site's backend yourself.
- Record date: 2026-10-08T14:55:53.836Z