Captcha.solve or Captcha.autoSolve, and each solve is charged. GeeTest v3 is not solved.
Before you start
Start a browser and create a page-levelcdp session as in the CAPTCHA setup example.
Manual captcha solving
SendCaptcha.solve once the widget is on the page:
success means the widget passed; the site checks it when the form is sent, so wait for the protected content. solution holds the token as a JSON string, for a client that sends the form itself.
Every GeeTest v4 kind is solved.
Automatic captcha solving
Use the Playwright or Puppeteer lifecycle. Create a page-level CDP session and attach listeners before enabling automatic mode with"geetest" in types:
{"status": "started"} only confirms that automatic mode started.
Understanding GeeTest challenge types
GeeTest ships two active generations with different bypass considerations:- v3 — the page loads a
gtandchallengeparameter pair; the classic version. - v4 — the page loads only a
captcha_idwith scripts served from/v4/paths; adds more challenge variants and encrypts interaction data into a signed payload before validation.
See Manual captcha solving for the kinds that are answered.
Verify bypass worked
Check the challenge version and the actual page flow. A GeeTest widget may appear only after a form action. Start the automatic solver before that action, then wait for the site to accept the result. Keep the CDP connection open while solving. Avoid running a second solver against the same challenge. If verification completes but the page is still blocked, inspect the next network response or form validation error.Troubleshooting
If nothing happens, confirm that"geetest" is in types and the challenge is present. Observe failure events before retrying.
See CAPTCHA troubleshooting for shared errors and DevTools to inspect a running attempt. Stop the browser after the job completes.
GeeTest bypass FAQ
Can I send GeeTest to Captcha.solve for manual solving?
Can I send GeeTest to Captcha.solve for manual solving?
Yes, for GeeTest v4.
How do I know if a site is running GeeTest v3 or v4?
How do I know if a site is running GeeTest v3 or v4?
Check the page source or network requests. If you see a
gt and challenge parameter pair, it’s v3. If you only see captcha_id with scripts loading from /v4/ paths, it’s v4. Only v4 is solved.Why didn't the GeeTest widget appear at all?
Why didn't the GeeTest widget appear at all?
GeeTest can skip the challenge entirely and accept a single click, or nothing visible at all, when it already trusts the session from prior behavior — this is normal, not a sign the page isn’t protected. Start the automatic solver before the triggering form action so it’s ready either way.
Why does {'status': 'started'} not mean the job succeeded?
Why does {'status': 'started'} not mean the job succeeded?
It only confirms automatic mode began — not that a challenge was found, solved, or accepted. Attach
Captcha.solveCompleted and Captcha.solveFailed listeners and wait for the actual page result before treating the job as done.