Solve CAPTCHAs Mid-Automation
Solve CAPTCHAs Mid-Automation
Your code drives the browser over CDP. When a challenge blocks the flow, hand the same browser to the hosted CAPTCHA solver - it runs inside the runtime, on the page your automation is already on - then continue where you left off.
The solver handles reCAPTCHA, Cloudflare Turnstile, hCaptcha, GeeTest, Arkose, DataDome, Amazon WAF, and more, with an AI vision fallback for challenges it doesn’t recognize. You never tell it which type is on the page; it detects that itself.
🎬 Content TODO: record a short GIF/video of a solve happening in the live view (the reCAPTCHA demo page or a GeeTest slider being dragged is the most impressive) and embed it here.
Use one controller at a time: stop issuing CDP commands while the solve runs, the same way you would for any hosted invocation. The two failure codes are deliberate - captcha_not_found means your flow can proceed, captcha_solve_failed means it can’t, and details.retryable tells you whether trying again is worth it.
Every solve also lands on the run’s timeline as captcha.solve.started / succeeded / failed events, so you can audit how often challenges appear in production.
Fewer challenges in the first place
Most challenges never fire when the runtime runs with stealth and a residential proxy. Treat the solver as the fallback, not the strategy - see Runtime configuration.
Next
- CAPTCHA - the full solver surface, including agent toolsets
- Live View - hand a stuck page to a human instead
- Events & Activity - track solves on the run timeline

