Cloudflare Turnstile solver · Playwright
Solve Cloudflare Turnstile in Playwright
When a Playwright script meets a Turnstile widget on a site you are allowed to automate, read the widget's site key, action and cData, get a token from ZeroCaptcha and put it where the widget would. The sample uses the JavaScript client, which is coming to npm; until then, the Node.js page makes the same calls with fetch.
Plain HTTP today; the official JavaScript client is coming
The steps in Playwright
Get an API key
Sign up with an email and a password, create your key in the dashboard and add funds in crypto, from $10.
Read the widget's site key, action and cData
Open the page in Playwright and read data-sitekey, data-action and data-cdata from the Turnstile element, or the sitekey, action and cData options of its turnstile.render() call.
Solve it with ZeroCaptcha
Send the page's URL, the site key, and the action and cData when the widget sets them, to ZeroCaptcha and wait for the token. Many sites check both when they verify it.
Put the token in the form
Set the cf-turnstile-response field to the token, then submit the form as a person would, within 300 seconds.
New to the API? The quickstart walks through sign-up, the key and the first task.
Good to know
Solve right before you submit: the token works once, within 300 seconds.
A widget rendered with turnstile.render() may have no data-sitekey; the sample notes the render call's options, so it finds the site key, action and cData either way.
Some pages read the token from the widget's callback rather than the form field. On those, call the page's own callback with the token.
Testing your own site? Cloudflare's testing site keys pass or fail every time, with no solver at all.
Read next
- Cloudflare TurnstileSubmit a Cloudflare Turnstile Token: Form Fields and CallbacksWhere a solved Turnstile token goes: the cf-turnstile-response field, the widget's callback, or a JSON body. With examples for forms, fetch and browsers.
- Cloudflare TurnstileHow to Find a Cloudflare Turnstile Sitekey on Any PageFind a Cloudflare Turnstile sitekey in data-sitekey, in turnstile.render() or in the network log, and check you have the right one before you send a task.
- TestingTest Cloudflare Turnstile in CI With Testing SitekeysTest your own Turnstile forms in CI with Cloudflare's testing sitekeys and secret keys: always pass, always fail, forced challenges, and spent tokens.
Playwright questions
Where does the token go?
Where the widget puts it: the hidden cf-turnstile-response field of the form, or the callback the page registered. Then submit as a person would.
How long does a Cloudflare Turnstile token last?
A Cloudflare Turnstile token works once and expires 300 seconds after it is issued, so solve right before you submit. Every result tells you when its token expires.
Can I test my own site without solving anything?
Yes. Cloudflare publishes testing site keys that always pass or always fail, so your own end-to-end tests need no solver at all.