CAPTCHA

View as Markdown

BCTRL can help browser runtimes handle supported CAPTCHA challenges during automation. Configure CAPTCHA behavior at runtime launch, then continue using your native browser framework over CDP.

Enable CAPTCHA solving

1const runtime = await space.runtimes.browser.launch({
2 name: "signup-flow",
3 config: {
4 solveCaptchas: true,
5 },
6});

Then connect normally.

1const connection = await runtime.connections.create({
2 protocol: "cdp",
3});

Supported challenge families

Support can include common challenge types such as reCAPTCHA, hCaptcha, Cloudflare Turnstile, GeeTest, Arkose, and DataDome, depending on site behavior and solver availability.

Observability

CAPTCHA attempts appear in run events when BCTRL can observe them. Use run events and artifacts to debug whether a challenge was detected, solved, skipped, or failed.

1const run = await runtime.currentRun();
2
3const { events } = await run.events.list({
4 type: ["captcha.detected", "captcha.solved", "captcha.failed"],
5});