My Experience with SolveCaptcha: The Best Cloudflare CAPTCHA Solver

 


I tried SolveCaptcha to bypass Cloudflare protections (Turnstile and similar) and the result was great: fast, reliable, and easy to integrate. Below are short examples showing the typical flow: submit a task to in.php and poll res.php to get the answer.


Quick summary of the flow

  1. Send a request to https://api.solvecaptcha.com/in.php with method=turnstile, sitekey, pageurl and key → you get an id.

  2. Poll https://api.solvecaptcha.com/res.php with that id → receive solved token (and optionally useragent).

  3. Insert the token into the form (cf-turnstile-response or g-recaptcha-response) and submit.


1) cURL (submit task)

curl --location 'https://api.solvecaptcha.com/in.php' \ --form 'key="YOUR_API_KEY"' \ --form 'method="turnstile"' \ --form 'sitekey="YOUR_SITEKEY"' \ --form 'pageurl="https://example.com/register"' \ --form 'json="1"'

Response example

{ "status": 1, "request": "74327409378" }

Save request (ID) to poll for the result.


2) cURL (get result)

curl 'https://api.solvecaptcha.com/res.php?key=YOUR_API_KEY&action=get&id=74327409378&json=1'

Possible response

{ "status": 1, "request": "0.4uMMZZdSfsVM8...610cd090", "useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..." }

request now contains the token to put into cf-turnstile-response (or g-recaptcha-response) before submitting the form.


3) Python example (submit + poll)

import time import requests API_KEY = "YOUR_API_KEY" SITEKEY = "YOUR_SITEKEY" PAGEURL = "https://example.com/register" # submit r = requests.post("https://api.solvecaptcha.com/in.php", data={ "key": API_KEY, "method": "turnstile", "sitekey": SITEKEY, "pageurl": PAGEURL, "json": 1 }) job = r.json() if job.get("status") != 1: raise SystemExit("Submit error: " + str(job)) job_id = job["request"] # poll for _ in range(30): time.sleep(3) res = requests.get("https://api.solvecaptcha.com/res.php", params={ "key": API_KEY, "action": "get", "id": job_id, "json": 1 }).json() if res.get("status") == 1: token = res["request"] print("Solved token:", token) break elif res.get("request") == "CAPCHA_NOT_READY": continue else: print("Error or no solution:", res) break

4) Node.js (axios) example

const axios = require('axios'); const API_KEY = 'YOUR_API_KEY'; const SITEKEY = 'YOUR_SITEKEY'; const PAGEURL = 'https://example.com/register'; async function run() { // submit const submit = await axios.post('https://api.solvecaptcha.com/in.php', new URLSearchParams({ key: API_KEY, method: 'turnstile', sitekey: SITEKEY, pageurl: PAGEURL, json: '1' })); const id = submit.data.request; // poll for (let i = 0; i < 20; i++) { await new Promise(r => setTimeout(r, 3000)); const res = await axios.get('https://api.solvecaptcha.com/res.php', { params: { key: API_KEY, action: 'get', id, json: 1 } }); if (res.data.status === 1) { console.log('Token:', res.data.request); break; } if (res.data.request !== 'CAPCHA_NOT_READY') { console.error('Error:', res.data); break; } } } run();

5) In-page JS: capture parameters from turnstile.render (useful for Cloudflare Challenge pages)

If Turnstile is initialized on the page with turnstile.render(...), you can override it to capture parameters (sitekey, cData, chlPageData, action) and then send them to your solving endpoint:

const i = setInterval(() => { if (window.turnstile) { clearInterval(i); const originalRender = window.turnstile.render; window.turnstile.render = (el, options) => { // collect useful params const p = { method: "turnstile", key: "YOUR_API_KEY", sitekey: options.sitekey, pageurl: window.location.href, data: options.cData || options.data || null, pagedata: options.chlPageData || options.pagedata || null, action: options.action || null, userAgent: navigator.userAgent, json: 1 }; console.log("Captured Turnstile params:", p); // don't call originalRender here if you're intercepting — return dummy window.tsCallback = options.callback; // save callback if needed return 'intercepted'; }; } }, 50);

После того как вы собрали sitekey, data, pagedata, action — передаёте их на in.php как параметры (см. ниже).


6) Example request for Cloudflare Challenge pages (with extra params)

https://api.solvecaptcha.com/in.php? key=YOUR_API_KEY &method=turnstile &sitekey=0x0AAAAAAADnPID... &data=7fab0000b0e0ff00 &pagedata=3gAFo2...0ME1UVT0= &pageurl=https://example.com/ &action=managed &json=1

(Отправляйте параметр data и pagedata только если Turnstile Challenge требует их — они нужны для обхода страницы вызова Turnstile.)


7) Browser fetch (CORS) note

If you call in.php directly from client-side JS, you may hit CORS restrictions. Use header_acao=1 parameter on in.php (if supported by your account) to ask the server to include Access-Control-Allow-Origin: * in the response, or proxy the request via your backend.

Пример с header_acao:

--form 'header_acao="1"'

8) Chrome extension & local testing

SolveCaptcha also provides Chrome extension options for convenience (manual/automatic solving in interactive browsing). For automated flows, API integration (server or headless client) is the most reliable.


Practical tips & gotchas

  • Poll interval: 2–5 seconds is common. Don’t poll too frequently.

  • Only pay on success: SolveCaptcha charges for solved CAPTCHAs — handle failures and retry logic in client code.

  • User-Agent: some challenge pages require the same user agent that was present when the challenge was created — include or pass that if available.

  • Proxy: if the site restricts by IP, pass proxy/proxytype parameters to in.php. Format: login:pass@ip:port.

  • Turnstile on challenge pages: you must extract data and pagedata (chlPageData) as shown above — otherwise solving may fail.

I integrated SolveCaptcha with a few projects and it noticeably removed Cloudflare interruptions: the API is simple, returns an ID instantly, and the result arrives in seconds. The code above is all you need to start — pick cURL / Python / Node example that fits your stack and adapt parameters (sitekey, pageurl, data, pagedata, action, proxy) as required.

Комментарии

Популярные сообщения из этого блога

Roblox captcha solver

How to Bypass reCAPTCHA v2 Using Tampermonkey and 2Captcha API

Bypassing Cloudflare Challenge with Puppeteer and 2Captcha