ProdutosIntegraçõesRecursosDocumentaçãoPreços
Começar agora

© 2026 CapSolver. All rights reserved.

Contacte-nos

Slack: lola@capsolver.com

Produtos

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Extensão de Navegador
  • Mais tipos de CAPTCHA

Integrações

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Parceiros
  • Ver todas as integrações

Recursos

  • Programa de Referenciação
  • Documentação
  • Referência da API
  • Blog
  • FAQ
  • Glossário
  • Estado

Legal

  • Termos de Serviço
  • Política de Privacidade
  • Política de Reembolso
  • Não vender os meus dados pessoais
Blog/All/Como Resolver CAPTCHA do Cloudflare com Go em 2025
Feb24, 2025

Como Resolver CAPTCHA do Cloudflare com Go em 2025

Adélia Cruz

Adélia Cruz

Neural Network Developer

Introdução

Em 2025, o CAPTCHA Turnstile do Cloudflare permanece uma barreira formidável para desenvolvedores que constroem ferramentas de web scraping ou automação. Diferentemente dos CAPTCHAs tradicionais, o Turnstile opera silenciosamente em segundo plano, analisando padrões de comportamento como movimentos do mouse e impressões digitais TLS para bloquear bots — tornando sua ultrapassagem um desafio de alto risco. Para desenvolvedores Go, isso significa combinar práticas de engenharia robustas com ferramentas avançadas como CapSolver.


Compreendendo o CAPTCHA Cloudflare Turnstile

Turnstile vs. Desafio Cloudflare

  • Turnstile: Um CAPTCHA focado na privacidade que executa verificações em segundo plano sem puzzles. Ele não gera nenhum cookie cf_clearance, confiando em vez disso na análise comportamental.
  • Desafio Cloudflare: O sistema mais antigo que emite desafios JavaScript e cookies cf_clearance após a verificação.
Turnstile vs. Desafio

Por que Go é ideal para resolução de CAPTCHA

  1. Velocidade e Concorrência: As goroutines do Go permitem tarefas de resolução de CAPTCHA em paralelo, reduzindo a latência em fluxos de trabalho de alto volume.
  2. Controle de Impressão Digital TLS: Bibliotecas como tls-client permitem a imitação precisa de handshakes TLS do navegador, evitando a impressão digital JA3/JA4.
  3. Escalabilidade: Binários compilados superam linguagens interpretadas como Python em scraping de uso intensivo de recursos.

Guia passo a passo: Resolvendo Turnstile com Go e CapSolver

Pré-requisitos

  1. Chave de API CapSolver: Cadastre-se em CapSolver e obtenha sua CLIENT_KEY.
  2. Ambiente Go: Instale Go ≥1.21 e dependências:
    bash Copy
    go get github.com/imroc/req/v3
    go get github.com/tidwall/gjson

Implementação do código

go Copy
package main

import (
    "fmt"
    "log"
    "time"
    "github.com/imroc/req/v3"
    "github.com/tidwall/gjson"
)

func createTask(apiKey, pageURL, siteKey string) string {
    client := req.C()
    postData := map[string]interface{}{
        "clientKey": apiKey,
        "task": map[string]interface{}{
            "type":       "AntiTurnstileTaskProxyLess",
            "websiteURL": pageURL,
            "websiteKey": siteKey,
            "metadata":   map[string]string{"action": "login"},
        },
    }
    resp, err := client.R().SetBodyJsonMarshal(postData).Post("https://api.capsolver.com/createTask")
    if err != nil {
        log.Fatal("Falha ao criar tarefa:", err)
    }
    return gjson.Get(resp.String(), "taskId").String()
}

func getTaskResult(apiKey, taskId string) (token string) {
    client := req.C()
    for {
        postData := map[string]interface{}{"clientKey": apiKey, "taskId": taskId}
        resp, err := client.R().SetBodyJsonMarshal(postData).Post("https://api.capsolver.com/getTaskResult")
        if err != nil {
            log.Fatal("Falha ao buscar resultado da tarefa:", err)
        }
        status := gjson.Get(resp.String(), "status").String()
        if status == "ready" {
            return gjson.Get(resp.String(), "solution.token").String()
        } else if status == "failed" {
            log.Fatal("Tarefa falhou:", resp.String())
        }
        time.Sleep(3 * time.Second) // Consulta a cada 3 segundos
    }
}

func main() {
    apiKey := "YOUR_CAPSOLVER_API_KEY"
    pageURL := "https://dash.cloudflare.com/login"
    siteKey := "0x4AAAAAAAJel0iaAR3mgkjp" // Chave Turnstile do site de destino

    taskId := createTask(apiKey, pageURL, siteKey)
    token := getTaskResult(apiKey, taskId)
    fmt.Println("Token obtido:", token)
}

Explicação

  1. Criação de Tarefa: A função createTask envia uma solicitação para a API do CapSolver, especificando AntiTurnstileTaskProxyLess para Turnstile.
  2. Consulta de Resultado: getTaskResult verifica o status da tarefa a cada 3 segundos até que um token seja retornado.
  3. Uso do Token: O token obtido é enviado ao endpoint de login do site de destino para contornar o CAPTCHA.

Para mais informações, visite Documentação do Turnstile Solver.

Exemplo adicional: Resolvendo o Desafio Cloudflare Clássico (JS + cf_clearance)

Imagem do Desafio JS do Cloudflare

Implementação do código para o Desafio Cloudflare

go Copy
package main

import (
    "fmt"
    "log"
    "time"
    "github.com/gocolly/colly/v2"
    "github.com/imroc/req/v3"
    "github.com/tidwall/gjson"
)

const (
    apiKey    = "YOUR_CAPSOLVER_API_KEY"
    targetURL = "https://protected-site.com"
    proxy     = ""
)

func solveCloudflareChallenge() (string, string) {
    client := req.C()
    postData := map[string]interface{}{
        "clientKey": apiKey,
        "task": map[string]interface{}{
            "type":       "AntiCloudflareTask",
            "websiteURL": targetURL,
            "proxy":proxy
            },
        },
    }

    resp, err := client.R().SetBodyJsonMarshal(postData).Post("https://api.capsolver.com/createTask")
    if err != nil {
        log.Fatal("Falha ao criar tarefa:", err)
    }

    taskId := gjson.Get(resp.String(), "taskId").String()

    // Consulta por resultados
    for i := 0; i < 20; i++ {
        resultResp, _ := client.R().SetBodyJsonMarshal(map[string]string{
            "clientKey": apiKey,
            "taskId":    taskId,
        }).Post("https://api.capsolver.com/getTaskResult")

        if gjson.Get(resultResp.String(), "status").String() == "ready" {
            solution := gjson.Get(resultResp.String(), "solution")
            return solution.Get("userAgent").String(),
                   solution.Get("cookies").(map[string]string)["cf_clearance"]
        }
        time.Sleep(3 * time.Second)
    }
    log.Fatal("Tempo limite para resolução do desafio")
    return "", ""
}

func main() {
    userAgent, cfClearance := solveCloudflareChallenge()

    // Cria coletor com cookies resolvidos
    c := colly.NewCollector(
        colly.UserAgent(userAgent),
    )

    // Define cookies
    c.OnRequest(func(r *colly.Request) {
        r.Headers.Set("Cookie", fmt.Sprintf("cf_clearance=%s", cfClearance))
    })

    c.OnResponse(func(r *colly.Response) {
        fmt.Println("Desafio Cloudflare contornado com sucesso!")
        fmt.Println(string(r.Body))
    })

    c.Visit(targetURL)
}

Para mais informações, visite Documentação do Cloudflare Challenge Solver.

Melhores práticas para 2025

1. Use Proxies Residenciais

O Cloudflare lista IPs na blacklist. Roteie proxies residenciais (por exemplo, Bright Data) para evitar detecção.

2. Imite os cabeçalhos do navegador

Configure os cabeçalhos para corresponder à versão mais recente do Chrome.
Você deve usar todos os cabeçalhos dessa versão específica do navegador.

go Copy
headers := map[string]string{
    "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",
    "Accept-Language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7", //Exemplo com português
    "Sec-Fetch-Mode":  "navigate",
}

Código 2: Configuração de cabeçalho para corresponder ao Chrome 120.

3. Lidar com impressões digitais TLS

Use curl-impersonate ou tls-client para replicar o handshake TLS do Chrome e evitar discrepâncias JA3.

4. Persistência de sessão

Reutilize cookies e cabeçalhos entre as solicitações para manter uma impressão digital consistente do navegador.

5. Monitore os códigos de erro

  • Erro 600010 do Capsolver: Tipo de tarefa incorreto (por exemplo, usando o solucionador Turnstile para um Desafio).
  • Erro 403: IP bloqueado — roteie proxies imediatamente.

Obtenha seu código de bônus para as melhores soluções de captcha; CapSolver: CAPT. Após resgatá-lo, você receberá um bônus extra de 5% após cada recarga, Ilimitado

FAQ: Problemas comuns ao resolver o CAPTCHA do Cloudflare em Go

  1. Por que estou recebendo um “Erro 600010” do CapSolver?
    Isso indica que você pode ter selecionado o tipo de CAPTCHA errado (por exemplo, usando um solucionador específico do Turnstile para um Desafio Cloudflare). Verifique se você está usando AntiTurnstileTaskProxyLess para Turnstile ou AntiCloudflareTask para o desafio clássico JavaScript.

  2. Por que ainda estou sendo bloqueado pelo Cloudflare mesmo após obter o token?
    O Cloudflare pode detectar outros sinais, como reputação de IP, cabeçalhos ausentes ou impressões digitais TLS incompatíveis. Confirme se você está rotulando proxies residenciais, enviando os cabeçalhos corretos do navegador e usando uma impressão digital TLS que corresponda a um navegador real.

  3. E se minhas solicitações retornarem HTTP 403?
    Um 403 normalmente significa que o Cloudflare marcou seu IP ou cabeçalhos. Mudar para um proxy diferente ou modificar seus cabeçalhos (por exemplo, atualizar User-Agent, adicionar Accept-Language correto) geralmente resolve o problema.

  4. Por que o token expira quase imediatamente após resolver o Turnstile?
    Os tokens Turnstile têm um curto período de validade. Envie o token para o endpoint de destino imediatamente após recebê-lo, ou você pode ter que solicitar um novo token se muito tempo passar.

  5. Como posso confirmar que o token Turnstile é válido?
    Verifique a resposta do servidor após enviar o token. Se você ainda enfrentar um CAPTCHA, o token pode ser inválido ou expirado. Monitore as respostas do servidor e verifique seus cabeçalhos de solicitação e cookies de sessão.

  6. Por que o CapSolver está demorando muito para fornecer uma solução?
    Se a criação da tarefa estiver correta, mas os tempos de consulta excederem o tempo limite, pode ser um período de alta carga no serviço de resolução ou um problema com sua rede. Tente diminuir o intervalo de consulta, mas também certifique-se de não sobrecarregar a API com muitas solicitações simultâneas.

  7. Usar um proxy sempre resolve problemas de bloqueio regional?
    Nem sempre. Os proxies residenciais podem ajudar, mas se o IP do proxy já estiver marcado ou pertencer a um data center conhecido, o Cloudflare ainda pode apresentar um desafio. É melhor girar vários proxies residenciais confiáveis.

  8. Como lidar com erros de incompatibilidade de impressão digital JA3 ou JA4?
    Use bibliotecas ou ferramentas como tls-client ou curl-impersonate para imitar o handshake TLS exato de uma versão moderna do Chrome. Impressões digitais incompatíveis podem levar a um escrutínio adicional por parte do Cloudflare.

  9. Por que vejo resultados inconsistentes quando algumas solicitações são bem-sucedidas, enquanto outras falham?
    Isso geralmente acontece quando os dados da sessão não são reutilizados. Mantenha cabeçalhos, cookies e impressões digitais TLS consistentes em todas as solicitações na mesma sessão, especialmente se você estiver executando solicitações simultâneas em rotinas Go.

  10. E se o Cloudflare atualizar seu mecanismo de desafio novamente?
    Os desafios Turnstile e Cloudflare evoluem com o tempo. Acompanhe a documentação oficial do CapSolver e atualize seu tipo de solucionador, abordagem de código, cabeçalhos e estratégias de impressão digital à medida que as mudanças ocorrerem.


Ver mais

n8nMar 09, 2026

Como Resolver reCAPTCHA v2/v3 Usando CapSolver e n8n

Bangun API solver eCAPTCHA v2/v3 menggunakan CapSolver dan n8n. Pelajari cara mengotomatisasi penyelesaian token, mengirimkannya ke website, dan mengekstrak data yang dilindungi tanpa coding.

Adélia Cruz
Adélia Cruz
Apr 22, 2026

Melhor IA para resolver quebra-cabeças de imagens: Melhores Ferramentas e Estratégias para 2026

Descubra a melhor IA para resolver quebra-cabeças de imagens. Aprenda como os APIs ImageToText e o Vision Engine da CapSolver automatizam desafios visuais complexos com alta precisão.

Índice

Adélia Cruz
Adélia Cruz
web scrapingApr 22, 2026

Arquitetura de Web Scraping em Rust para Extração de Dados Escalável

Aprenda arquitetura de raspagem web escalável em Rust com reqwest, scraper, raspagem assíncrona, raspagem de navegador headless, rotação de proxies e tratamento de CAPTCHA compatível.

Adélia Cruz
Adélia Cruz
Apr 22, 2026

API de Busca vs Cadeia de Suprimentos de Conhecimento: Guia da Infraestrutura de Dados de IA

Aprenda como ferramentas de API de busca, cadeias de suprimento de conhecimento, fluxos de trabalho da API SERP e pipelines de dados de IA modelam a infraestrutura de dados da web moderna para IA.

Adélia Cruz
Adélia Cruz