logo
bars
Pay per solve · API

Cloudflare Challenge Solver

CapMonster Cloud is a Cloudflare Challenge solver with an API. It returns a token or a cf_clearance cookie, so your automation continues without a manual step.

Last updated:

Test it free: $0.10 test balance ↓
Average solving time
12 – 14 s
Success rate
99%
per 1000 tokens
$ 1.30

Cloudflare Challenge Solver Pricing

CAPTCHA
Price (USD)
$ 1.30
1000 tokens
Choosing a solution for Cloudflare Challenge

Cloudflare Challenge vs Cloudflare Turnstile

How to distinguish Challenge from Turnstile

A Cloudflare Challenge and a Turnstile widget can look the same. A Challenge is not always a separate “Just a moment…” page: it can be styled, embedded into the site or made to look like a regular Turnstile widget, so you cannot tell them apart by appearance.

Which CapMonster Cloud solver to use

Cloudflare Turnstile

widget
Where you see it
A widget inside a page or form
What it returns
A token in cf-turnstile-response
CapMonster page
Cloudflare Turnstile Solver

Cloudflare Challenge

403 · challenge-form
Where you see it
A styled check embedded into the site or an interstitial page; identified by a 403 on the first request and a challenge-form with __cf_chl_f_tk=
What it returns
A token or a cf_clearance cookie
CapMonster page
This page: Cloudflare Challenge Solver

If these signs are present, it is a Cloudflare Challenge: use the Cloudflare Challenge solver on this page, which returns a token or a cf_clearance cookie. Otherwise, use the Cloudflare Turnstile solver.

Cloudflare Challenge Solvers Compared

The table lists price per 1000 solves, average solving time and solving success rate for four Cloudflare Challenge solving services.

ParameterCapMonster Cloud2CaptchaAnti-CaptchaBestCaptchaSolver
Price per 1000 solves
$ 1.30$1.45$2.00$1.80
Average solving time
12 – 14 s14 – 18 s18 – 22 s22 – 30 s
Solving success rate
99%97%95%80%

Cloudflare Turnstile price as listed by the provider; Cloudflare Challenge is not listed separately.

2Captcha, Anti-Captcha, and BestCaptchaSolver are trademarks of their respective owners. CapMonster Cloud is not affiliated with these entities. Performance metrics are based on internal benchmarking conducted on 26.08.2026. Pricing comparisons are based on publicly available data as of 30.09.2026.

Test It Free

Solve Cloudflare Challenge in seconds

99% successful passes. Test the stability on your own target sites right now. We do not guarantee a 100% success rate: CAPTCHA types and target-site configuration may change at any time.

$0.10

New users get $0.10 in test balance to try CapMonster Cloud.

  1. 1. Register at CapMonster Cloud.

  2. 2. Message support via live chat or support@capmonster.cloud with the email tied to your account.

No credit card · Ready-made SDKs for Python, Node.js, C#

What teams use Cloudflare Challenge solving for

QA and end-to-end testing

Run sign-up, checkout and form flows in CI/CD with Playwright, Puppeteer or Selenium on pages you own or are allowed to test.

Monitoring

Check that pages behind Cloudflare Challenge stay reachable after releases and rule changes.

Publicly available data

Collect publicly available data from open pages protected by a Cloudflare Challenge.

Accessibility

Support automated assistive workflows on sites that show a verification page before loading.

AI agents

Let an agent request a token or a cf_clearance cookie through MCP when a workflow reaches a challenge.

Legitimate use only

Use CapMonster Cloud for publicly available data and on sites you own or are authorized to test. Collecting third-party data behind a login or paywall without permission is prohibited.

Types of Cloudflare Challenges

How Cloudflare issues and checks challenges

Cloudflare serves three types of challenge pages: JS Challenge, Managed Challenge and Interactive Challenge. Whether a challenge is shown is decided by WAF rules or Bot Management. CapMonster Cloud covers the three challenge types below; WAF / Bot Management is a broader product and is listed separately.

Sources: Cloudflare documentation — How challenges work · Interstitial challenge pages · Under Attack mode

“5-second challenge”

1. JS Challenge

A non-interactive interstitial test: the browser runs JavaScript and Cloudflare grades the result before the page loads. No user action is required.

Where it appears
Interstitial page with a background check
Result returned
cf_clearance cookie (default)

incl. Under Attack Mode

2. Managed Challenge

With Cloudflare Managed Challenge, Cloudflare picks the check dynamically from request characteristics and browser signals. Under Attack Mode uses Managed Challenge.

Where it appears
Interstitial page, check type chosen by Cloudflare
Result returned
cf_clearance cookie (default)

widget on interstitial page

3. Interactive Challenge

Interactive Challenge Pages require a visitor to interact with the challenge to pass.

Where it appears
Interstitial page with mandatory interactive challenge
Result returned
cf_clearance cookie (default)

4. WAF / Bot Management

Rule and scoring layer that decides when a Cloudflare bot challenge is served. Cloudflare computes this decision using detection engines, including:

Where it appears
Rule layer for request handling and risk scoring
Result returned
Returns nothing on its own — based on risk score, triggers one of the actions above (or a block)

Broader than the three challenge types and not a synonym for them.

  • Heuristics engine matches every request against a database of known bot fingerprints.
  • JS Detections engine an optional, invisible client-side JavaScript check that flags headless browsers.
  • Machine Learning engine a supervised model that produces the Bot Score, 1–99, from patterns across billions of daily requests.

Sources: Bot scores · Bot detection engines · JavaScript detections

Cloudflare Challenge Workflow

  1. 1. Request

    The browser requests a protected page. Cloudflare Bot Management scores the request by TLS fingerprint, IP reputation and behavioral signals.

  2. 2. Bot score

    The Heuristics, JS Detections and Machine Learning engines produce the Bot Score from 1 to 99, and WAF rules decide whether to serve a challenge.

  3. 3. Interstitial page

    If the request looks suspicious, Cloudflare returns the “Just a moment…” page with status code 403 and runs JS Challenge, Managed Challenge or Interactive Challenge.

  4. 4. cf_clearance

    When the check passes, Cloudflare issues a cf_clearance cookie tied to the visitor and device and valid for a limited time.

  5. 5. Access

    The browser loads the original page with the cookie. Cloudflare keeps reassessing session behavior (Precursor clearance) and may serve a new challenge.

What is the cf_clearance cookie?

cf_clearance is the cookie Cloudflare issues after a visitor passes a Cloudflare Challenge. The browser sends it with the following requests to the protected site, and the page opens without a repeated challenge.

Properties of the cookie, according to Cloudflare's documentation:

Visitor and device

Tied to the visitor and device it was issued to.

Lifetime

Valid for a limited time (30 minutes by default; the site sets it with Challenge Passage): a long-running script must pass the check again once it expires.

Access verification

Not a guarantee on its own: Precursor clearance keeps reassessing session behavior and can trigger a repeated challenge even if the cookie has not expired.

What invalidates a cf_clearance cookie

Binding

Visitor or device change

Access is reset: the cookie is tied to the visitor and device it was issued to

Lifetime

Expiration

The cookie stops working; the script must pass the check again

Behavior

Precursor clearance

Cloudflare can lower or reset the clearance level and serve a repeated challenge if traffic looks suspicious

Token or cf_clearance: which result to request

For developers using CapMonster Cloud to get a token or cf_clearance

The cloudflareTaskType parameter of TurnstileTask decides what CapMonster Cloud returns. Choose the option depending on what the target site requires: a token for the challenge callback on the page, or a cf_clearance cookie for your further requests.

Token and cf_clearance

ParameterTokencf_clearance
cloudflareTaskTypetokencf_clearance
ProxyOptionalruns on CapMonster Cloud proxies by defaultRequiredyour own proxy
websiteKeyCloudflare Challenge key, e.g. 0x4AAAAAAABUYP0XeMJF0xoyAny string, e.g. xxxxxx
Page datapageAction, data (cData), pageData (chlPageData)htmlPageBase64 — Base64 of the 403 “Just a moment” page
Resultsolution.tokensolution.cf_clearance
Where to use itThe challenge callback on the pageCookie: cf_clearance=<value> header or the browser context

Supported proxy types (cf_clearance)

proxyTypeDescription
httpRegular HTTP proxy
httpsUse for some custom proxies
socks4SOCKS4 proxy
socks5SOCKS5 proxy

Full parameter reference: Cloudflare Challenge Task documentation.

How to Use the Cloudflare Challenge Solver

The CapMonster Cloud API acts as a cf_clearance solver: it accepts the task parameters, processes them on its servers and returns a token or a cf_clearance cookie. Solving a Cloudflare Challenge takes four steps: get an API key, send the task, poll the result, and use the returned token or cookie in your own requests.

Your scriptCapMonster Cloud APITarget site

Get your API key

  • Create an account in CapMonster Cloud.
  • Open the dashboard and find your API key.
  • Use this key as the clientKey parameter in your requests.

Send a task — createTask

Call createTask with type TurnstileTask. The cloudflareTaskType parameter decides what you get back: a token or a cf_clearance cookie. Choose the option depending on what the target site requires. See How to distinguish Challenge from Turnstile.

Option 1 · Challenge (token) — runs on CapMonster Cloud proxies by default. Required fields:

ParameterDescription
typeTurnstileTask
websiteURLURL of the page where the challenge is solved
websiteKeyCloudflare Challenge key, e.g. 0x4AAAAAAABUYP0XeMJF0xoy
cloudflareTaskTypetoken
pageActionThe action field from the captcha callback, usually managed or non-interactive
userAgentCurrent UA supported by CapMonster Cloud. You can get the latest value at https://capmonster.cloud/api/useragent/actual.
dataValue of the cData parameter
pageDataValue of the chlPageData parameter

Optional: apiJsUrl and the proxy fields. Own proxies are only needed when the site does not accept the token or built-in services are restricted; with IP authorization, whitelist 65.21.190.34.

Request example:

json
{
  "clientKey": "API_KEY",
  "task": {
    "type": "TurnstileTask",
    "websiteURL": "https://yourwebsite.com/page-with-cf-challenge",
    "websiteKey": "your-website-key",
    "cloudflareTaskType": "token",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
    "pageAction": "your-page-action",
    "pageData": "your-page-data",
    "data": "your-data"
  }
}

Option 2 · Challenge (cookie) — requires your own proxy. Required fields:

ParameterDescription
typeTurnstileTask
websiteURLURL of the page where the challenge is solved
websiteKeyAny string may be passed, e.g. xxxxxx
cloudflareTaskTypecf_clearance
htmlPageBase64Base64 of the “Just a moment” page returned with status 403
userAgentCurrent UA supported by CapMonster Cloud. You can get the latest value at https://capmonster.cloud/api/useragent/actual.
proxyTypehttp, https (for some custom proxies), socks4, socks5
proxyAddress, proxyPort, proxyLogin, proxyPasswordYour proxy. Transparent and local-machine proxies are not allowed.

Request example:

json
{
  "clientKey": "API_KEY",
  "task": {
    "type": "TurnstileTask",
    "websiteURL": "https://yourwebsite.com/page-with-cf-challenge",
    "websiteKey": "xxxxxxxxxx",
    "cloudflareTaskType": "cf_clearance",
    "htmlPageBase64": "PCFET0NUWVBFIGh0...vYm9keT48L2h0bWw+",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
    "proxyType": "your-proxy-type",
    "proxyAddress": "your-proxy-address",
    "proxyPort": 1234,
    "proxyLogin": "your-proxy-login",
    "proxyPassword": "your-proxy-password"
  }
}

Endpoint and response — the same for both options:

text
POST https://api.capmonster.cloud/createTask
{
  "errorId": 0,
  "taskId": 407533072,
  "errorCode": null,
  "errorDescription": null
}

Poll the result — getTaskResult

Poll getTaskResult with the taskId until status becomes ready. The request is identical for both options; the solution object carries whichever result you asked for.

Endpoint and request:

text
POST https://api.capmonster.cloud/getTaskResult
{
  "clientKey": "API_KEY",
  "taskId": 407533072,
  "errorCode": null,
  "errorDescription": null
}

Option 1 · Challenge (token) — solution.token

json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
    "token": "0.iGX3xsyFCkbGePM3jP4P4khLo6TrLukt8ZzBvwuQOvbC...f61f3082"
  }
}

Use the token when calling the callback function on the page.

Option 2 · Challenge (cookie) — solution.cf_clearance

json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "cf_clearance": "1tarGvbY2_ZhQdYxpSBloao.FoOn9VtcJtmb_IQ_hCE-1761217338-1.2.1.1-vyVPoLYIGX0...ZHi.w"
  }
}

Special Cloudflare cookie that you add to your browser or send with raw HTTP requests.

Use the returned token or cookie

If you use the cookie, pass its value in the Cookie: cf_clearance=<value> header on raw HTTP requests, or set it in the browser context before requesting the protected URL again.

If you use the token, pass it to the challenge callback on the page.

How to find the Cloudflare Challenge parameters

The token option needs the values the page passes to turnstile.render when the challenge starts: sitekey (websiteKey), action (pageAction), cData (data) and chlPageData (pageData). The cookie option needs the HTML of the challenge page in htmlPageBase64; websiteKey can be any string.

How to find the Cloudflare Challenge parameters
javascript
(function () {
  const obj = {
    render: function () {
      const { action, cData, chlPageData } = arguments[1];
      console.table([["action", action], ["data", cData], ["pageData", chlPageData]]);
    }
  };
  Object.defineProperty(window, "turnstile", { get: () => obj });
})();
sitekey → websiteKey
action → pageAction
cData → data
chlPageData → pageData
  1. Run this JavaScript before the page's other scripts load — it replaces window.turnstile and prints the parameters passed to render.

  2. Read action (pageAction), cData (data) and chlPageData (pageData) from the table in the console; sitekey (websiteKey) is passed in the same object. pageAction is usually managed or non-interactive.

  3. To collect the values automatically, use a browser controlled by Playwright (regular or headless): wrap window.turnstile in a Proxy and intercept render. Ready examples in JavaScript, Python and C# are in the documentation.

  4. Some values change on every render of the challenge page, so create the task right after you collect them.

javascript
fetch('https://example.com')
  .then(res => res.arrayBuffer())
  .then(buf => console.log(btoa(String.fromCharCode(...new Uint8Array(buf)))));
  1. Request the protected site; it returns the “Just a moment…” page with status code 403.

  2. Encode that page in Base64 — this is htmlPageBase64 (the snippet shows one way; Playwright examples with page.content() are in the documentation).

  3. Pass any string as websiteKey (for example xxxxxx) and use your own proxy.

  4. Create the task right after you collect the values.

Cloudflare Challenge Solver with Official SDK

CapMonster Cloud provides ready-made libraries for convenient work in Python, JavaScript (Node.js), and C#.
Below are code examples showing how to create a CAPTCHA-solving task with createTask and retrieve the result with getTaskResult using our client libraries.
Official SDKs
Python
python
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import TurnstileRequest
API_KEY = "YOUR_API_KEY"
async def solve_turnstile_challenge():
    client = CapMonsterClient(options=ClientOptions(api_key=API_KEY))
    # Basic example without proxy; CapMonster Cloud automatically uses its own proxies
    turnstile_request = TurnstileRequest(
        websiteURL="https://yourwebsite.com/page-with-cf-challenge",
        websiteKey="your-website-key",
        data="your-data",
        pageAction="managed",
        cloudflareTaskType="token",
        pageData="your-page-data",
        userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
    )
    balance = await client.get_balance()
    print("Balance:", balance)
    result = await client.solve_captcha(turnstile_request)
    print("Solution:", result)
asyncio.run(solve_turnstile_challenge())
python
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import TurnstileRequest
from capmonstercloudclient.requests.proxy_info import ProxyInfo
API_KEY = "YOUR_API_KEY"
async def main():
    client = CapMonsterClient(options=ClientOptions(api_key=API_KEY))
    # Cloudflare cf_clearance can only be solved using your own proxy
    proxy = ProxyInfo(proxyType="http", proxyAddress="123.45.67.89", proxyPort=8080, proxyLogin="username", proxyPassword="password")
    turnstile_request = TurnstileRequest(
        websiteURL="https://yourwebsite.com/page-with-cf-challenge",
        websiteKey="your-website-key",
        cloudflareTaskType="cf_clearance",
        proxy=proxy,
        htmlPageBase64="your_html_page_base64",
        userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
    )
    balance = await client.get_balance()
    print("Balance:", balance)
    result = await client.solve_captcha(turnstile_request)
    print("Solution:", result)
asyncio.run(main())
Node.js
javascript
const { CapMonsterCloudClientFactory, ClientOptions, TurnstileRequest } = require("@zennolab_com/capmonstercloud-client");
const API_KEY = "YOUR_API_KEY";
(async () => {
  const client = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
  // Basic example without proxy; CapMonster Cloud automatically uses its own proxies
  const turnstileRequest = new TurnstileRequest({
    websiteURL: "https://yourwebsite.com/page-with-cf-challenge",
    websiteKey: "your-website-key",
    data: "your-data",
    pageAction: "managed",
    cloudflareTaskType: "token",
    pageData: "your-page-data",
    userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
  });
  const balance = await client.getBalance();
  console.log("Balance:", balance);
  const result = await client.Solve(turnstileRequest);
  console.log("Solution:", result.solution);
})();
javascript
const { CapMonsterCloudClientFactory, ClientOptions, TurnstileRequest } = require("@zennolab_com/capmonstercloud-client");
const API_KEY = "YOUR_API_KEY";
async function solveTurnstileCfClearance() {
  const client = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
  // Cloudflare cf_clearance can only be solved using your own proxy
  const proxy = { proxyType: "http", proxyAddress: "123.45.67.89", proxyPort: 8080, proxyLogin: "username", proxyPassword: "password" };
  const turnstileRequest = new TurnstileRequest({
    websiteURL: "https://yourwebsite.com/page-with-cf-challenge",
    websiteKey: "xxxxxxx",
    cloudflareTaskType: "cf_clearance",
    proxy,
    htmlPageBase64: "your_html_page_base64",
    userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
  });
  const balance = await client.getBalance();
  console.log("Balance:", balance);
  const result = await client.Solve(turnstileRequest);
  console.log("Solution:", result.solution);
}
solveTurnstileCfClearance().catch(console.error);
C#
csharp
using System;
using System.Threading.Tasks;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;
class Program
{
    static async Task Main(string[] args)
    {
        var clientOptions = new ClientOptions { ClientKey = "YOUR_API_KEY" };
        var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
        // Basic example without proxy; CapMonster Cloud automatically uses its own proxies
        var turnstileRequest = new TurnstileRequest
        {
            WebsiteUrl = "https://yourwebsite.com/page-with-cf-challenge",
            WebsiteKey = "your-website-key",
            Data = "your-data",
            PageAction = "managed",
            CloudflareTaskType = "token",
            PageData = "your-page-data",
            UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36"
        };
        var balance = await cmCloudClient.GetBalanceAsync();
        Console.WriteLine("Balance: " + balance);
        var turnstileResult = await cmCloudClient.SolveAsync(turnstileRequest);
        Console.WriteLine("Solution: " + turnstileResult.Solution.Value);
    }
}
csharp
using System;
using System.Threading.Tasks;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;
class Program
{
    static async Task Main(string[] args)
    {
        var clientOptions = new ClientOptions { ClientKey = "YOUR_API_KEY" };
        var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
        // Cloudflare cf_clearance can only be solved using your own proxy
        var turnstileRequest = new TurnstileRequest
        {
            WebsiteUrl = "https://yourwebsite.com/page-with-cf-challenge",
            WebsiteKey = "your-website-key",
            CloudflareTaskType = "cf_clearance",
            HtmlPageBase64 = "your_html_page_base64",
            UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
            Proxy = new ProxyContainer("123.45.67.89", 8080, ProxyType.Http, "username", "password")
        };
        var balance = await cmCloudClient.GetBalanceAsync();
        Console.WriteLine("Balance: " + balance);
        var turnstileResult = await cmCloudClient.SolveAsync(turnstileRequest);
        Console.WriteLine("Solution: " + turnstileResult.Solution.Clearance);
    }
}

For low-code workflows, use the official CapMonster Cloud n8n node.

Using the cf_clearance cookie in your requests

text
GET https://example.com/protected-page
User-Agent: <userAgent from the task>
Cookie: cf_clearance=<value>
same proxysame User-Agentcookie not expired

Pass the returned value in the Cookie: cf_clearance=<value> header on raw HTTP requests, or set it in the browser context before requesting the protected URL again. In the official examples, the same proxy and the same User-Agent are used to load the page, solve the task and send the request with the cookie.

In Selenium, Playwright or Puppeteer, set the cookie with the framework's own method before navigating to the protected URL — the browser then opens the page without a repeated challenge. If you requested a token, pass it to the challenge callback on the page instead.

Background

Cloudflare Challenge errors and how to fix them

Most Cloudflare Challenge errors come from an expired or mismatched cf_clearance cookie, a proxy the service does not accept, or outdated page parameters. Each card below names the error and the fix.
Bug Icon

Repeated challenge or 403 after solving

The request has no valid cf_clearance cookie, the cookie has expired, or Cloudflare re-checked the session (Precursor clearance). Request a new cookie.
Bug Icon

Proxy or User-Agent differs from the task

Use the same proxy and the same userAgent as in the task when requesting the protected page, as in the official examples. Cloudflare also notes that a Managed Challenge solved from a different IP than the one it was issued to is not valid and can cause a challenge loop — see the Cloudflare documentation.
Bug Icon

Expired cookie

The cookie is valid for a limited time. A long-running script must solve the challenge again once it expires.
Bug Icon

Proxy not accepted

Use http, https, socks4 or socks5.
Bug Icon

Outdated page parameters

Some values change on every render of the challenge page. Extract them immediately before creating the task.

Frequently Asked Questions about Cloudflare Challenge

What is a Cloudflare Challenge?

Cloudflare Challenge is an intermediate check that Cloudflare displays before granting access to a protected page when a WAF rule, Bot Management or rate limiting deems the request suspicious (for example, based on TLS fingerprint, IP reputation, or behavioral signals). While the check is in progress, the visitor sees an intermediate "Just a moment…" page. If the check is passed successfully, Cloudflare issues a cf_clearance cookie — it is tied to the visitor and device and is valid for a limited time — after which the browser gains access to the original page.

What is the difference between JS Challenge, Managed Challenge and Turnstile?

All three rely on client-side signals from the browser. JS Challenge (non-interactive) runs in the background, typically in less than five seconds; if it is not passed, Cloudflare shows another challenge page. Managed Challenge lets Cloudflare choose the check dynamically from request characteristics and browser signals, up to an interactive step. Turnstile is an embeddable widget that returns a token to be validated through the Siteverify API; with the optional pre-clearance it can also issue a cf_clearance cookie.

Why do I keep getting a Cloudflare CAPTCHA, verification page or 403 error?

A repeated challenge or a 403 means the request has no valid cf_clearance cookie, the cookie has expired, or the request comes from a different visitor or device than the one the cookie was issued to. Even a valid cookie does not guarantee access: Cloudflare maintains Precursor clearance — a continuous reassessment of session behavior that can lower or reset the clearance level and trigger a repeated challenge if the traffic pattern starts to look suspicious.

How does CapMonster Cloud solve a Cloudflare Challenge?

CapMonster Cloud solves the task asynchronously through two API calls: createTask with the task parameters, followed by polling getTaskResult until the solution is ready. Depending on the task type, the service returns either a token — which is inserted into the callback without a proxy — or a cf_clearance cookie, for which a proxy is mandatory. You then pass the resulting value in the Cookie: cf_clearance=<value> header of regular HTTP requests, or set it in the browser context — after which the protected page opens without manually passing the check.

How do I solve Cloudflare Challenge in my project?

Send a POST request to createTask with your clientKey (API key) and the task parameters, wait for the result to be ready by polling getTaskResult (until the status is ready), then use the resulting token or cookie in your HTTP client or browser automation. For ready-made integrations, use the official SDKs in the CapMonster Cloud repositories on GitHub — they wrap the createTask / getTaskResult cycle into a single call.

Do I need a proxy to solve Cloudflare Challenges?

A proxy is mandatory only for the task that returns a cf_clearance cookie. In the official examples the same proxy is then used for the following requests. For a token result no proxy is required — CapMonster Cloud uses its built-in proxies by default (if you whitelist by IP, add 65.21.190.34). Supported types: http, https, socks4, socks5; transparent proxies and proxies on local machines are not allowed.

Can I use CapMonster Cloud as a Cloudflare Challenge solver with n8n or Selenium?

Yes. For n8n, there is an official CapMonster Cloud node — installed from the interface or via npm install @zennolab_com/n8n-nodes-capmonstercloud on self-hosted instances. In other cases, your code first makes a regular HTTP request to the CapMonster API (via requests, axios, or any other HTTP client), and then the result is passed to the browser framework (Selenium, Playwright, Puppeteer, etc.) using its own method. The cf_clearance cookie needs to be set with this method before navigating to the protected URL — then the browser will open the page with an already valid check, without a repeated challenge.

Is it legal to solve Cloudflare Challenges automatically?

Solving Cloudflare Challenge is a technical operation, and its lawfulness depends on how the resulting access is used, not on the tool itself. CapMonster Cloud is intended for legal automation — testing, monitoring, and collecting publicly available data — while responsibility for compliance with the law and with the target resource's Terms of Use rests with the user.

CapMonster Cloud

We do not guarantee a 100% success rate: CAPTCHA types and target-site configuration may change at any time. Actual solving speed and success rate vary depending on the target site, server load, and network conditions.

Cloudflare is a trademark of Cloudflare, Inc. CapMonster Cloud is not affiliated with or endorsed by Cloudflare. The Service is intended for publicly available data, testing your own or authorized websites, image recognition and accessibility. Collecting third-party data behind a login or paywall without permission is prohibited; your own accounts are not affected. You determine the legal status of your data before starting work.