Turnstile on Cloudflare Challenge pages

cloudflare turnstile captcha solver and bypass service

We continue the research on new methods of bypassing the Turnstile on Cloudflare managed challenge pages.

Today we started testing a new approach on this matter and invite our users to participate and provide a feedback.

What's new

Changes in the API

There are just few minor changes for our users:

  1. Now the result will include the useragent value together with the token. You need to use the returned User-Agent in your browser or HTTP client.
  2. You need to use json=1 parameter in your requests to our API to receive the response as JSON that will include the useragent value.
  3. You MUST provide your User-Agent when submitting a captcha to our API. Use only modern browsers, we recommend to use browser version released in the last 6 months.

You still need to extract the values for data and pagedata parameters. You can inject the following javascript code to do so before the turnstile.render was called.

const i = setInterval(()=>{
if (window.turnstile) {
    clearInterval(i)
    window.turnstile.render = (a,b) => {
    let p = {
        method: "turnstile",
        key: "YOUR_API_KEY",
        sitekey: b.sitekey,
        pageurl: window.location.href,
        data: b.cData,
        pagedata: b.chlPageData,
        action: b.action,
        userAgent: navigator.userAgent,
        json: 1        
    }
    console.log(JSON.stringify(p))
    window.tsCallback = b.callback
    return 'foo'
    }
}
},50)  

Important notice

If the widget was already rendered with the data and pagedata values in your browser, then you will receive ERROR_CAPTCHA_UNSOLVABLE because the widget can not be loaded with these values twice. So you have to prevent the widget from loading.

Request example

{
    "key": "YOUR_API_KEY",
    "method": "turnstile",
    "sitekey": "0x0AAAAAAADnPIDROzbs0Aaj",
    "data": "7fab0000b0e0ff00",
    "pagedata": "3gAFo2...0ME1UVT0=",
    "pageurl": "https://2captcha.com/",
    "action": "managed",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "
    "json": 1
}

Result example

{
    "status": 1,
    "request": "0.4uMMZZdSfsVM8...610cd090",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
} 

You can find an example implementation of this approach with Puppeteer here

Pricing

The price for Turnstile is decreased to $1.45

Turnstile on Cloudflare Challenge pages

Give us a feedback

The most important way to leave a feedback is to use reportbad and reportgood method in your software to automatically inform us was the solution accepted or not.

If you can provide more info please feel free to contact our support team. We really appreciate your cooperation.