CAPSOLVER
Blog
Como resolver Cloudflare durante o web scraping em 2024 | Guia Passo a Passo

Como resolver o Cloudflare durante a raspagem de web em 2026 | Guia Passo a Passo

Logo of CapSolver

Adélia Cruz

Neural Network Developer

09-Dec-2025

Códigos de Status Comuns do Cloudflare ao fazer WebScraping

Erro 1020

O Erro 1020 do Cloudflare indica que o acesso foi negado. Este erro é acionado quando uma regra do firewall do site, protegido pelo Cloudflare, é violada. Várias ações, como fazer solicitações excessivas ao site, podem levar a esta violação.

Formas comuns de resolver este problema:

  • Use um proxy rotativo para mascarar seu endereço IP.
  • Altere e rotacione os cabeçalhos User-Agent.
  • Certifique-se de que seu cliente HTTP suporte TLS se estiver utilizando a biblioteca requests.
  • Utilize ferramentas de automação de navegador como Puppeteer, Playwright ou Selenium.

Erro 1015 / 429 limite de taxa

O Erro 1015 do Cloudflare ocorre quando seu endereço IP é marcado e banido pelo Cloudflare por exceder o limite de taxa de um site durante atividades de raspagem. Isso pode levar ao aparecimento deste erro.
Formas comuns de resolver este problema:

  • Use proxies rotativos ou um pool de proxies grande
  • Verifique se o site não pode rastrear por meio de seus cabeçalhos, alguns cabeçalhos podem fazê-lo rastreá-lo e limitar suas solicitações
  • Certifique-se de que você não está sendo identificado por meio de impressão digital TLS, TCP ou qualquer outro método de identificação.

Erro 403

Um código de status 403 é uma resposta "Proibido", emitida por um servidor quando ele reconhece uma solicitação como válida, mas se recusa a atendê-la. Isso pode ocorrer devido à falta de cabeçalhos necessários em sua solicitação, como cabeçalhos CORS, JWT ou de autenticação que o servidor espera.

Se o site for geralmente acessível e adicionar os cabeçalhos corretos não resolver o problema, é possível que o servidor esteja detectando suas solicitações como automatizadas.
Formas comuns de resolver este problema:

  • Você não está enviando os cabeçalhos corretos, informações da solicitação.
  • O proxy foi banido
  • É necessário resolver um desafio JavaScript, consulte o blog sobre Desafio Cloudflare 5s para entender como resolver isso
  • O site não permite nenhum tráfego

Resgate seu código promocional CapSolver

Aumente seu orçamento de automação instantaneamente!
Use o código promocional CAPN ao recarregar sua conta no CapSolver para obter um bônus adicional de 5% em cada recarga — sem limites.
Resgate-o agora em seu Painel CapSolver
.

Identificar o Desafio Cloudflare 5s e o Captcha Cloudflare Turnstile

Desafio Cloudflare 5s

O desafio do Cloudflare parece ser:

Às vezes, esta página pode ter turnstile

Verifique se você precisa resolver o Desafio Cloudflare 5s e não apenas o turnstile, para apenas o turnstile, continue lendo este blog.

Há algumas exigências ao resolver este desafio usando o Capsolver.

  • Proxy
  • Chave da API do Capsolver

Enviando informações da tarefa para o Capsolver

json Copy
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json

{
  "clientKey": "SUA_CHAVE_API",
  "task": {
    "type": "AntiCloudflareTask",
    "websiteURL": "https://www.seusite.com",
    "proxy": "158.120.100.23:334:user:pass"
  }
}

Após enviar corretamente, a API retornará um taskId

json Copy
{
    "errorId": 0,
    "taskId": "014fc55c-46c9-41c8-9de7-6cb35d984edc",
    "status": "idle"
}

Obtenha esse valor taskId e use-o para recuperar o resultado usando o método getTaskResult

Recuperar o resultado

json Copy
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json

{
  "clientKey": "SUA_CHAVE_API",
  "taskId": "taskId"
}

Dependendo da carga do sistema, você receberá os resultados em um intervalo de 1s a 20s

Se você receber ERROR_CAPTCHA_SOLVE_FAILED na resposta, podem haver várias razões:

  • Seu proxy não precisa resolver o desafio Cloudflare 5s (alguns sites ativam apenas para proxies ruins, ações de bots ou qualquer coisa que possa disparar que a solicitação foi feita por um bot). Às vezes, é ativado sempre, dependendo da configuração.
  • Seu proxy foi banido pelo Cloudflare e está em um loop que não consegue passar pelo desafio
  • O site não usa o desafio Cloudflare, verifique se é um desafio e não um turnstile, consulte as imagens de exemplo.
  • O proxy está dando timeout, isso é comum ao usar proxies residenciais

Se você receber uma resposta de sucesso, ela será semelhante a:

json Copy
{
    "errorId": 0,
    "taskId": "d8d3a8b4-30cc-4b09-802a-a476ca17fa54",
    "status": "ready",
    "solution": {
        "accept-language": "en-US,en;q=0.9",
        "cookies": {

        },
        "headers": {
            "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
            "accept-encoding": "gzip, deflate, br",
            "accept-language": "en-US,en;q=0.9",
            "cache-control": "max-age=0",
            "content-type": "application/x-www-form-urlencoded",
            "origin": "",
            "referer": "",
            "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
            "sec-ch-ua-arch": "\"arm\"",
            "sec-ch-ua-bitness": "\"64\"",
            "sec-ch-ua-full-version": "\"120.0.6099.71\"",
            "sec-ch-ua-full-version-list": "\"Not_A Brand\";v=\"8.0.0.0\", \"Chromium\";v=\"120.0.6099.71\", \"Google Chrome\";v=\"120.0.6099.71\"",
            "sec-ch-ua-mobile": "?0",
            "sec-ch-ua-model": "\"\"",
            "sec-ch-ua-platform": "\"macOS\"",
            "sec-ch-ua-platform-version": "\"10.14.6\"",
            "sec-fetch-dest": "document",
            "sec-fetch-mode": "navigate",
            "sec-fetch-site": "same-origin",
            "sec-fetch-user": "?1",
            "upgrade-insecure-requests": "1",
            "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
        },
        "proxy": "seu proxy",
        "token": "token de clearance do cf",
        "type": "challenge",
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
}

A partir desta resposta, você precisará analisar os valores de cookies, headers, token.

Sua solicitação precisará ser semelhante a:

  • Os cabeçalhos da solicitação devem ser os mesmos que você recebeu na resposta
  • Os cookies da solicitação devem ser os mesmos que você recebeu na resposta
  • O cliente da solicitação deve suportar as configurações TLS, neste caso use TLS Chrome 120
  • Use o mesmo proxy para interagir no site e para usar o cookie cf_clearance
  • O valor do token será o valor do cookie cf_clearance que você precisará criar

Exemplo para resolver o Desafio Cloudflare com Python

python Copy
# -*- coding: utf-8 -*-
import requests
import time
import tls_client

# TODO: Sua chave de API
API_KEY = ""
proxy = ""

# TODO: Sua URL do site alvo:
page_url = ''



def call_capsolver():
    data = {
        "clientKey": API_KEY,
        "task": {
            "type": 'AntiCloudflareTask',
            "websiteURL": page_url,
            "proxy": proxy,
        }
    }
    uri = 'https://api.capsolver.com/createTask'
    res = requests.post(uri, json=data)
    resp = res.json()
    task_id = resp.get('taskId')
    if not task_id:
        print("não obteve taskId:", res.text)
        return
    print('criado taskId:', task_id)

    while True:
        time.sleep(1)
        data = {
            "clientKey": API_KEY,
            "taskId": task_id
        }
        response = requests.post('https://api.capsolver.com/getTaskResult', json=data)
        resp = response.json()
        status = resp.get('status', '')
        if status == "ready":
            print("sucesso => ", response.text)
            return resp.get('solution')
        if status == "failed" or resp.get("errorId"):
            print("falha! => ", response.text)
            return


def request_site(solution):
    session = tls_client.Session(
        client_identifier="chrome_120",
        random_tls_extension_order=True
    )
    return session.get(
        page_url,
        headers=solution.get('headers'),
        cookies=solution.get('cookies'),
        proxy=proxy,
    )


def main():
    solution = {
        "headers": {
            "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
            "upgrade-insecure-requests": "1",
            "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
            "sec-fetch-site": "none",
            "sec-fetch-mode": "navigate",
            "sec-fetch-user": "?1",
            "sec-fetch-dest": "document",
            "accept-encoding": "gzip, deflate, br",
            "accept-language": "en-US,en;q=0.9",
        }
    }
    # primeira solicitação (verifique seu proxy):
    res = request_site(solution)
    print('1. código de status da resposta:', res.status_code)
    if res.status_code != 403:
        print("seu proxy está bom e não recebeu o desafio do cloudflare")
        return
    elif 'window._cf_chl_opt' not in res.text:
        print('==== proxy bloqueado ==== ')
        return

    # chamar o capSolver:
    solution = call_capsolver()
    if not solution:
        return

    # segunda solicitação (verificar solução):
    res = request_site(solution)
    print('2. código de status da resposta:', res.status_code)


if __name__ == '__main__':
    main()

Captcha Cloudflare Turnstile

O Captcha Cloudflare Turnstile parece ser:

  • Desafio gerenciado

  • Desafio não interativo

  • Desafio invisível
    não visível, você pode verificar na rede / scripts carregados e ver se o turnstile está sendo usado

Verifique se você precisa resolver o Captcha Cloudflare Turnstile e não o Desafio Cloudflare 5s, para apenas o Desafio Cloudflare, continue lendo este blog.

Há algumas exigências ao resolver este desafio usando Capsolver.

  • Chave da API do Capsolver

Enviando informações da tarefa para o Capsolver

json Copy
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json

{
  "clientKey": "SUA_CHAVE_API",
  "task": {
    "type": "AntiTurnstileTaskProxyLess",
    "websiteURL": "https://www.seusite.com",
    "websiteKey": "0x4XXXXXXXXXXXXXXXXX",
    "metadata": {
       "action": "login",  //opcional
       "cdata": "0000-1111-2222-3333-exemplo-cdata"  //opcional
    }
  }
}

"action" e "cdata" são opcionais, às vezes são necessários e outras vezes não.
Depende da configuração do site.
action é o valor do atributo data-action do elemento Turnstile se existir.
cdata é o valor do atributo data-cdata do elemento Turnstile se existir.
Após enviar corretamente, a API retornará um taskId

json Copy
{
    "errorId": 0,
    "taskId": "014fc55c-46c9-41c8-9de7-6cb35d984edc",
    "status": "idle"
}

Obtenha esse valor taskId e use-o para recuperar o resultado usando o método getTaskResult

Recuperar o resultado

json Copy
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json

{
  "clientKey": "SUA_CHAVE_API",
  "taskId": "taskId"
}

Dependendo da carga do sistema, você receberá os resultados em um intervalo de 1s a 20s

Se você receber ERROR_CAPTCHA_SOLVE_FAILED na resposta, podem haver várias razões:

  • Seu proxy não precisa resolver o desafio Cloudflare 5s (alguns sites ativam apenas para proxies ruins, ações de bots ou qualquer coisa que possa disparar que a solicitação foi feita por um bot). Às vezes, é ativado sempre, dependendo da configuração.
  • Seu proxy foi banido pelo Cloudflare e está em um loop que não consegue passar pelo desafio
  • O site não usa o desafio Cloudflare, verifique se é um desafio e não um turnstile, consulte as imagens de exemplo.
  • O proxy está dando timeout, isso é comum ao usar proxies residenciais

Se você receber uma resposta de sucesso, ela será semelhante a:

json Copy
{
    "errorId": 0,
    "taskId": "d1e1487a-2cd8-4d4a-aa4d-4ba5b6c65484",
    "status": "ready",
    "solution": {
        "token": "0.cZJPqwnyDxL86HvAXSk4lUTQhjwfyXDcR3qpVwFofuzosoKr1otKj_A-utazXx_Tnp1B2V6womrltBpRw9HbY851ktpaF7sBN-gQwtoRUew4Wj5PO4-WLYPnNRpXxludXzyQ.1oHJhu7619fb8c07ab942bd1587bc76e0e3cef95c7aa75400c4f7d3",
        "type": "turnstile",
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
}

A partir desta resposta, você precisará analisar os valores de token e este será a solução do captcha que você precisará enviar para o site.

Exemplo para resolver o Desafio Cloudflare com Python

python Copy
import time
from curl_cffi import requests

CAPSOLVER_API_KEY = "SUA CHAVE DA API DO CAPSOLVER.COM"
PAGE_URL = ""
WEBSITE_KEY = ""

def solvecf(metadata_action=None, metadata_cdata=None):
    url = "https://api.capsolver.com/createTask"
    task = {
        "type": "AntiTurnstileTaskProxyLess",
        "websiteURL": PAGE_URL,
        "websiteKey": WEBSITE_KEY,
    }
    if metadata_action or metadata_cdata:
        task["metadata"] = {}
        if metadata_action:
            task["metadata"]["action"] = metadata_action
        if metadata_cdata:
            task["metadata"]["cdata"] = metadata_cdata
    data = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": task
    }
    response_data = requests.post(url, json=data).json()
    print(response_data)
    return response_data['taskId']


def solutionGet(taskId):
    url = "https://api.capsolver.com/getTaskResult"
    status = ""
    while status != "ready":
        data = {"clientKey": CAPSOLVER_API_KEY, "taskId": taskId}
        response_data = requests.post(url, json=data).json()
        print(response_data)
        status = response_data.get('status', '')
        print(status)
        if status == "ready":
            return response_data['solution']

        time.sleep(2)


def main():
    start_time = time.time()
    
    taskId = solvecf()
    solution = solutionGet(taskId)
    if solution:
        user_agent = solution['userAgent']
        token = solution['token']

    print("User_Agent:", user_agent)
print("Captcha de Turnstile resolvido, token:", token)

    end_time = time.time()
    elapsed_time = end_time - start_time
    print(f"Tempo para resolver o captcha: {elapsed_time} segundos")

if __name__ == "__main__":
    main()

Exemplo para resolver o desafio Cloudflare com NodeJS

js Copy
const axios = require('axios');

const CAPSOLVER_API_KEY = "";
const PAGE_URL = "";
const WEBSITE_KEY = "";

async function solvecf(metadata_action = null, metadata_cdata = null) {
    const url = "https://api.capsolver.com/createTask";
    const task = {
        type: "AntiTurnstileTaskProxyLess",
        websiteURL: PAGE_URL,
        websiteKey: WEBSITE_KEY,
    };
    if (metadata_action || metadata_cdata) {
        task.metadata = {};
        if (metadata_action) {
            task.metadata.action = metadata_action;
        }
        if (metadata_cdata) {
            task.metadata.cdata = metadata_cdata;
        }
    }
    const data = {
        clientKey: CAPSOLVER_API_KEY,
        task: task
    };
    const response = await axios.post(url, data);
    console.log(response.data);
    return response.data.taskId;
}

async function solutionGet(taskId) {
    const url = "https://api.capsolver.com/getTaskResult";
    let status = "";
    while (status !== "ready") {
        const data = { clientKey: CAPSOLVER_API_KEY, taskId: taskId };
        const response = await axios.post(url, data);
        console.log(response.data);
        status = response.data.status;
        console.log(status);
        if (status === "ready") {
            return response.data.solution;
        }
        await new Promise(resolve => setTimeout(resolve, 2000));
    }
}

async function main() {
    const start_time = Date.now();
    
    const taskId = await solvecf();
    const solution = await solutionGet(taskId);
    if (solution) {
        const user_agent = solution.userAgent;
        const token = solution.token;

        console.log("User_Agent:", user_agent);
        console.log("Captcha de Turnstile resolvido, token:", token);
    }

    const end_time = Date.now();
    const elapsed_time = (end_time - start_time) / 1000;
    console.log(`Tempo para resolver o captcha: ${elapsed_time} segundos`);
}

main().catch(console.error);

🏁 Conclusão

A Cloudflare implementa vários mecanismos de proteção — desde bloqueios HTTP padrão como 1020, 403, 429 (1015) até desafios mais avançados como Desafio Cloudflare 5s e Captcha Turnstile. Ao realizar raspagem de web ou automação, identificar qual proteção está ativa é o primeiro passo crucial.

Este guia explicou os códigos de status comuns da Cloudflare, como distinguir entre o Desafio 5s e o Captcha Turnstile, e forneceu exemplos funcionais para resolver usando a API Capsolver, incluindo implementações em Python e NodeJS.

Ao escolher a abordagem certa — proxies rotativos, cabeçalhos corretos, proteção de fingerprinting ou resolver programaticamente CAPTCHA/Desafio — você pode melhorar significativamente as taxas de sucesso na raspagem e reduzir os bloqueios.

Se suas solicitações ainda estiverem sendo marcadas, revise sua configuração de raspador: qualidade de proxy, cabeçalhos, fingerprint TLS e frequência de solicitação geralmente importam tanto quanto o próprio solucionador de CAPTCHA.


❓ Perguntas Frequentes (FAQs)

1. Como saber se estou enfrentando o desafio Cloudflare 5s ou o Captcha Turnstile?

Verifique a interface do usuário ou as solicitações de rede.

  • Se uma página de "Verificando seu navegador..." de 5 segundos aparecer → Desafio Cloudflare 5s
  • Se um widget com verificação aparecer (ou geração de token invisível) → Captcha Turnstile

2. Por que ainda estou sendo bloqueado mesmo após resolver o desafio?

Possíveis razões:

  • Proxy banido ou de baixa qualidade
  • Cabeçalhos ausentes ou incorretos ao reutilizar a solução
  • Não manter o mesmo proxy durante as solicitações
  • Discrepância no fingerprint TLS

3. Eu sempre preciso de um proxy ao resolver a Cloudflare?

  • Desafio Cloudflare 5s requer proxy
  • Captcha Turnstile permite ProxyLess, mas proxy pode ajudar a contornar restrições em sites sensíveis

4. Posso automatizar a resolução da Cloudflare em larga escala?

Sim. Com proxies bons, fingerprinting rotativo e lógica de reutilização de token, você pode escalar a raspagem — certifique-se de seguir os termos do site e as exigências legais locais.

5. O Captcha Turnstile é mais difícil de resolver do que o Desafio Cloudflare 5s?

O Captcha Turnstile geralmente é mais fácil, pois normalmente retorna um único token. O Desafio Cloudflare 5s requer cookies, cabeçalhos e consistência de proxy, tornando-o mais complexo.

Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.

Mais