How to solve Cloudflare Turnstile
Open developer's console in your browser and find element with
data-sitekey
attribute.<div class="cf-turnstile" data-sitekey="0x4AAAAAAAC3DHQFLr1GavRN"></div>
Send
sitekey
andpageurl
to our API.With SDK (recommended):
PHP
$result = $solver->turnstile([ 'sitekey' => '0x4AAAAAAAC3DHQFLr1GavRN', 'url' => 'https://2captcha.com/demo/cloudflare-turnstile', ]);
Python
result = solver.turnstile(sitekey='0x4AAAAAAAC3DHQFLr1GavRN', url='https://2captcha.com/demo/cloudflare-turnstile')
Ruby
# https://github.com/2captcha/2captcha-ruby require 'api_2captcha' client = Api2Captcha.new("YOUR_API_KEY") result = client.turnstile({ sitekey: '0x1AAAAAAAAkg0s2VIOD34y5', pageurl: 'http://mysite.com/' })
Wait for the result, which may look like this:
0.WoGeDojxQzHCCk023JRjfxv23olYh37jFdvPrcqmNeQ7PbSYIEuiBTK2SR_GdjfMitYEC23Gm7Vt93U1CPcI6aIFEhG-ffe1i9e6tIfIlYCFtb7OMxTB4tKCyTdpiaA.SP5YT77nuMNdOhZlvoBWAQ.da6448d22df7dd92f56a9fcf6d7138e5ee712bcf7d00c281f419b3bc091cbe64
Manually:
Make a POST request to https://2captcha.com/in.php with the following parameters:
{ "key": "YOUR_API_KEY", "method": "turnstile", "sitekey": "0x4AAAAAAAC3DHQFLr1GavRN", "pageurl": "https://2captcha.com/demo/cloudflare-turnstile", "json": 1 }
If everything is fine server will return the ID of your captcha:
{ "status": 1, "request": "2122988149" }
After 15-20 seconds send GET request to get the result:
GET https://2captcha.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149&json=1
If captcha is already solved server will respond with the answer token:
{ "status": 1, "request": "0.WoGeDojxQzHCCk023JRjfxv23olYh37jFdvPrcqmNeQ7PbSYIEuiBTK2SR_GdjfMitYEC23Gm7Vt93U1CPcI6aIFEhG-ffe1i9e6tIfIlYCFtb7OMxTB4tKCyTdpiaA.SP5YT77nuMNdOhZlvoBWAQ.da6448d22df7dd92f56a9fcf6d7138e5ee712bcf7d00c281f419b3bc091cbe64" }
If captcha is not solved yet server will return
CAPCHA_NOT_READY
code. Repeat your request in 5 seconds. If something went wrong server will return an error code.
Use the token returned in your interaction with the target website.
Normally the token is sent through the input withname="cf-turnstile-response"
or, if reCAPTCHA compatibility mode is enabled, also in input withname="g-recaptcha-response"
. Also the token can be processed by a callback function defined inturnstile.render
call or insidedata-callback
attribute.On this demo page we use the input that can be changed this way:
document.querySelector('[name="cf-turnstile-response"]').value = 'TOKEN';