Skip to main content
Turnstile can use the internal manual solver or automatic mode. For a first test, use manual mode after the challenge appears.

Before you start

Use the CAPTCHA setup example to start a browser with anti_captcha.enabled: true and create a page-level cdp session. The snippets below use an async Playwright or Puppeteer session after navigating to your target. The internal solver does not require an external provider key. To test it without another solver acting on the same challenge, start with disable_external_providers: true.

Manual solving

Wait for the challenge to appear, then send:
The timeout is in milliseconds. Detection can raise a CDP error when the expected challenge is absent. After success, wait for a selector or response that identifies the protected content.

Automatic solving

Include "turnstile" in anti_captcha.auto_captcha_types at startup. Attach solve event listeners, then start detection before navigating:
status: "started" confirms the background loop started. Observe failures and use a bounded wait for your page result. Keep the CDP session connected until the job completes.

If solving fails

If detection fails, inspect the page for a Turnstile iframe and wait for it to load. A page may have passed verification already, or it may be blocked before displaying a challenge. Check solver configuration, inspect one attempt in DevTools, and record the result or error before retrying. Stop the browser when the job ends.