CAPSOLVER
Blog
Como resolver Captchas durante a raspagem de web com o Scrapling e o CapSolver

Como resolver captchas ao realizar web scraping com o Scrapling e o CapSolver

Logo of CapSolver

Aloísio Vítor

Image Processing Expert

05-Dec-2025

Pontos-chave

  • Scrapling é uma biblioteca poderosa de raspagem de web em Python com recursos embutidos de anti-bot e rastreamento adaptativo de elementos
  • CapSolver fornece resolução automat

Pontos-chave

  • Scrapling é uma poderosa biblioteca de raspagem web em Python com recursos embutidos de anti-bot e rastreamento adaptativo de elementos
  • CapSolver fornece resolução automática de captchas para ReCaptcha v2, v3 e Cloudflare Turnstile com tempos de resolução rápidos (1-20 segundos)
  • Combinar o Scrapling com o CapSolver cria uma solução robusta de raspagem que lida com a maioria dos sites protegidos por captchas
  • StealthyFetcher adiciona anti-deteção de navegador quando solicitações HTTP básicas não são suficientes
  • Todos os três tipos de captcha usam o mesmo fluxo de trabalho do CapSolver: criar tarefa → verificar resultados → injetar token
  • Código de produção deve incluir tratamento de erros, limitação de taxa e respeito aos termos de serviço do site

Introdução

A raspagem web se tornou uma ferramenta essencial para coleta de dados, pesquisa de mercado e análise de concorrência. No entanto, à medida que as técnicas de raspagem evoluíram, os mecanismos de proteção dos sites também se tornaram mais sofisticados. Entre os obstáculos mais comuns que os raspadores enfrentam estão os captchas - esses desafios irritantes projetados para distinguir humanos de robôs.

Se você já tentou raspagem de um site e foi recebido com uma mensagem "Por favor, verifique se você é humano", sabe a frustração. A boa notícia? Há uma combinação poderosa que pode ajudar: Scrapling para raspagem inteligente e CapSolver para resolução automática de captchas.

Neste guia, vamos mostrar tudo o que você precisa saber para integrar essas ferramentas e raspagem com sucesso sites protegidos por captchas. Seja com o Google ReCaptcha v2, o invisível ReCaptcha v3 ou o Cloudflare Turnstile, temos você coberto.


O que é Scrapling?

Scrapling é uma biblioteca moderna de raspagem web em Python que se descreve como "a primeira biblioteca de raspagem adaptativa que aprende com as mudanças nos sites e evolui com eles". Foi projetado para tornar a extração de dados fácil, enquanto oferece capacidades poderosas de anti-bot.

Principais Funcionalidades

  • Rastreamento de Elementos Adaptativo: O Scrapling pode localizar conteúdo mesmo após redesigns do site usando algoritmos de similaridade inteligentes
  • Métodos de Busca Múltiplos: Solicitações HTTP com impressão digital TLS, automação de navegador e modo stealth
  • Bypass de Anti-Bot: Suporte embutido para contornar Cloudflare e outros sistemas de anti-bot usando Firefox modificado e spoofing de impressão digital
  • Alta Performance: Benchmarks de extração de texto mostram ~2ms para 5000 elementos aninhados, significativamente mais rápido que muitas alternativas
  • Seleção Flexível: Seletores CSS, XPath, operações de busca estilo BeautifulSoup e pesquisa baseada em texto
  • Suporte Assíncrono: Suporte completo a async/await para operações de raspagem concorrentes

Instalação

Para capacidades básicas de análise:

bash Copy
pip install scrapling

Para funcionalidades completas, incluindo automação de navegador:

bash Copy
pip install "scrapling[fetchers]"
scrapling install

Para tudo, incluindo recursos de IA:

bash Copy
pip install "scrapling[all]"
scrapling install

Uso Básico

O Scrapling usa métodos de classe para solicitações HTTP:

python Copy
from scrapling import Fetcher

# Solicitação GET
response = Fetcher.get("https://example.com")

# Solicitação POST com dados
response = Fetcher.post("https://example.com/api", data={"chave": "valor"})

# Acessar resposta
print(response.status)       # Código de status HTTP
print(response.body)         # Bytes brutos
print(response.body.decode()) # Texto decodificado

O que é CapSolver?

CapSolver é um serviço de resolução de captchas que usa inteligência artificial avançada para resolver automaticamente vários tipos de captchas. Ele fornece uma API simples que se integra perfeitamente com qualquer linguagem de programação ou framework de raspagem.

Aumente seu orçamento de automação instantaneamente!
Use o código de bônus SCRAPLING ao recarregar sua conta no CapSolver para obter um bônus adicional de 6% em cada recarga — especialmente para usuários de integração com Scrapling.
Redimir agora no seu Painel do CapSolver

Tipos de Captcha Suportados

  • ReCaptcha v2 (checkbox e invisível)
  • ReCaptcha v3 (baseado em pontuação)
  • ReCaptcha Enterprise (v2 e v3)
  • Cloudflare Turnstile
  • AWS WAF Captcha
  • E muitos outros...

Obtenha sua Chave de API

  1. Registre-se no CapSolver
  2. Navegue até seu painel
  3. Copie sua chave de API nas configurações da conta
  4. Adicione fundos à sua conta (preço por resolução)

Pontos de Extremidade da API

O CapSolver usa dois pontos de extremidade principais:

  • Criar Tarefa: POST https://api.capsolver.com/createTask
  • Obter Resultados: POST https://api.capsolver.com/getTaskResult

Configurando a Função Auxiliar do CapSolver

Antes de mergulhar nos tipos específicos de captcha, vamos criar uma função auxiliar reutilizável que lida com o fluxo de trabalho da API do CapSolver:

python Copy
import requests
import time

CAPSOLVER_API_KEY = "SUA_CHAVE_DE_API"

def solve_captcha(task_type, website_url, website_key, **kwargs):
    """
    Solucionador de captcha genérico usando a API do CapSolver.

    Args:
        task_type: O tipo de tarefa de captcha (ex: "ReCaptchaV2TaskProxyLess")
        website_url: A URL da página com o captcha
        website_key: A chave do site para o captcha
        **kwargs: Parâmetros adicionais específicos do tipo de captcha

    Returns:
        dict: A solução contendo o token e outros dados
    """
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": task_type,
            "websiteURL": website_url,
            "websiteKey": website_key,
            **kwargs
        }
    }

    # Criar a tarefa
    response = requests.post(
        "https://api.capsolver.com/createTask",
        json=payload
    )
    result = response.json()

    if result.get("errorId") != 0:
        raise Exception(f"Falha na criação da tarefa: {result.get('errorDescription')}")

    task_id = result.get("taskId")
    print(f"Tarefa criada: {task_id}")

    # Verificar resultados
    max_attempts = 60  # Máximo de 2 minutos de verificação
    for attempt in range(max_attempts):
        time.sleep(2)

        response = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={
                "clientKey": CAPSOLVER_API_KEY,
                "taskId": task_id
            }
        )
        result = response.json()

        if result.get("status") == "ready":
            print(f"Captcha resolvido em {(attempt + 1) * 2} segundos")
            return result.get("solution")

        if result.get("errorId") != 0:
            raise Exception(f"Erro: {result.get('errorDescription')}")

        print(f"Esperando... (tentativa {attempt + 1})")

    raise Exception("Tempo esgotado: A resolução do captcha demorou demais")

Essa função lida com todo o fluxo de trabalho: criar uma tarefa, verificar resultados e retornar a solução. Usaremos ela ao longo deste guia.


Resolvendo ReCaptcha v2 com Scrapling + CapSolver

O ReCaptcha v2 é o clássico "Não sou um robô" captcha de checkbox. Quando dispar

Pontos-chave

  • Scrapling é uma poderosa biblioteca de raspagem web em Python com recursos embutidos de anti-bot e rastreamento adaptativo de elementos
  • CapSolver fornece resolução automática de captchas para ReCaptcha v2, v3 e Cloudflare Turnstile com tempos de resolução rápidos (1-20 segundos)
  • Combinar o Scrapling com o CapSolver cria uma solução robusta de raspagem que lida com a maioria dos sites protegidos por captchas
  • StealthyFetcher adiciona anti-deteção de navegador quando solicitações HTTP básicas não são suficientes
  • Todos os três tipos de captcha usam o mesmo fluxo de trabalho do CapSolver: criar tarefa → verificar resultados → injetar token
  • Código de produção deve incluir tratamento de erros, limitação de taxa e respeito aos termos de serviço do site

Introdução

A raspagem web se tornou uma ferramenta essencial para coleta de dados, pesquisa de mercado e análise de concorrência. No entanto, à medida que as técnicas de raspagem evoluíram, os mecanismos de proteção dos sites também se tornaram mais sofisticados. Entre os obstáculos mais comuns que os raspadores enfrentam estão os captchas - esses desafios irritantes projetados para distinguir humanos de robôs.

Se você já tentou raspagem de um site e foi recebido com uma mensagem "Por favor, verifique se você é humano", sabe a frustração. A boa notícia? Há uma combinação poderosa que pode ajudar: Scrapling para raspagem inteligente e CapSolver para resolução automática de captchas.

Neste guia, vamos mostrar tudo o que você precisa saber para integrar essas ferramentas e raspagem com sucesso sites protegidos por captchas. Seja com o Google ReCaptcha v2, o invisível ReCaptcha v3 ou o Cloudflare Turnstile, temos você coberto.


O que é Scrapling?

Scrapling é uma biblioteca moderna de raspagem web em Python que se descreve como "a primeira biblioteca de raspagem adaptativa que aprende com as mudanças nos sites e evolui com eles". Foi criado para tornar a extração de dados fácil, enquanto oferece capacidades poderosas de anti-bot.

Principais Funcionalidades

  • Rastreamento de Elementos Adaptativo: O Scrapling pode localizar conteúdo mesmo após redesigns do site usando algoritmos de similaridade inteligentes
  • Métodos de Busca Múltiplos: Solicitações HTTP com impressão digital TLS, automação de navegador e modo stealth
  • Bypass de Anti-Bot: Suporte embutido para contornar Cloudflare e outros sistemas de anti-bot usando Firefox modificado e spoofing de impressão digital
  • Alta Performance: Benchmarks de extração de texto mostram ~2ms para 5000 elementos aninhados, significativamente mais rápido que muitas alternativas
  • Seleção Flexível: Seletores CSS, XPath, operações de busca estilo BeautifulSoup e pesquisa baseada em texto
  • Suporte Assíncrono: Suporte completo a async/await para operações de raspagem concorrentes

Instalação

Para capacidades básicas de análise:

bash Copy
pip install scrapling

Para funcionalidades completas, incluindo automação de navegador:

bash Copy
pip install "scrapling[fetchers]"
scrapling install

Para tudo, incluindo recursos de IA:

bash Copy
pip install "scrapling[all]"
scrapling install

Uso Básico

O Scrapling usa métodos de classe para solicitações HTTP:

python Copy
from scrapling import Fetcher

# Solicitação GET
response = Fetcher.get("https://example.com")

# Solicitação POST com dados
response = Fetcher.post("https://example.com/api", data={"chave": "valor"})

# Acessar resposta
print(response.status)       # Código de status HTTP
print(response.body)         # Bytes brutos
print(response.body.decode()) # Texto decodificado

O que é CapSolver?

CapSolver é um serviço de resolução de captchas que usa inteligência artificial avançada para resolver automaticamente vários tipos de captchas. Ele fornece uma API simples que se integra perfeitamente com qualquer linguagem de programação ou framework de raspagem.

Aumente seu orçamento de automação instantaneamente!
Use o código de bônus SCRAPLING ao recarregar sua conta no CapSolver para obter um bônus adicional de 6% em cada recarga — especialmente para usuários de integração com Scrapling.
Redimir agora no seu Painel do CapSolver

Tipos de Captcha Suportados

  • ReCaptcha v2 (checkbox e invisível)
  • ReCaptcha v3 (baseado em pontuação)
  • ReCaptcha Enterprise (v2 e v3)
  • Cloudflare Turnstile
  • AWS WAF Captcha
  • E muitos outros...

Obtenha sua Chave de API

  1. Registre-se no CapSolver
  2. Navegue até seu painel
  3. Copie sua chave de API nas configurações da conta
  4. Adicione fundos à sua conta (preço por resolução)

Pontos de Extremidade da API

O CapSolver usa dois pontos de extremidade principais:

  • Criar Tarefa: POST https://api.capsolver.com/createTask
  • Obter Resultados: POST https://api.capsolver.com/getTaskResult

Configurando a Função Auxiliar do CapSolver

Antes de mergulhar nos tipos específicos de captcha, vamos criar uma função auxiliar reutilizável que lida com o fluxo de trabalho da API do CapSolver:

python Copy
import requests
import time

CAPSOLVER_API_KEY = "SUA_CHAVE_DE_API"

def solve_captcha(task_type, website_url, website_key, **kwargs):
    """
    Solucionador de captcha genérico usando a API do CapSolver.

    Args:
        task_type: O tipo de tarefa de captcha (ex: "ReCaptchaV2TaskProxyLess")
        website_url: A URL da página com o captcha
        website_key: A chave do site para o captcha
        **kwargs: Parâmetros adicionais específicos do tipo de captcha

    Returns:
        dict: A solução contendo o token e outros dados
    """
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": task_type,
            "websiteURL": website_url,
            "websiteKey": website_key,
            **kwargs
        }
    }

    # Criar a tarefa
    response = requests.post(
        "https://api.capsolver.com/createTask",
        json=payload
    )
    result = response.json()

    if result.get("errorId") != 0:
        raise Exception(f"Falha na criação da tarefa: {result.get('errorDescription')}")

    task_id = result.get("taskId")
    print(f"Tarefa criada: {task_id}")

    # Verificar resultados
    max_attempts = 60  # Máximo de 2 minutos de verificação
    for attempt in range(max_attempts):
        time.sleep(2)

        response = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={
                "clientKey": CAPSOLVER_API_KEY,
                "taskId": task_id
            }
        )
        result = response.json()

        if result.get("status") == "ready":
            print(f"Captcha resolvido em {(attempt + 1) * 2} segundos")
            return result.get("solution")

        if result.get("errorId") != 0:
            raise Exception(f"Erro: {result.get('errorDescription')}")

        print(f"Esperando... (tentativa {attempt + 1})")

    raise Exception("Tempo esgotado: A resolução do captcha demorou demais")

Essa função lida com todo o fluxo de trabalho: criar uma tarefa, verificar resultados e retornar a solução. Usaremos ela ao longo deste guia.


Resolvendo ReCaptcha v2 com Scrapling + CapSolver

O ReCaptcha v2 é o clássico "Não sou um robô" captcha de checkbox. Quando acionado, ele pode pedir aos usuários que identifiquem objetos em imagens (semáforos, faixas de pedestres, etc.). Para raspadores, precisamos resolver isso de forma programática.

Como o ReCaptcha v2 Funciona

  1. O site carrega um script ReCaptcha com uma chave de site única
  2. Quando submetido, o script gera um token g-recaptcha-response
  3. O site envia esse token para o Google para verificação
  4. O Google confirma se o captcha foi resolvido corretamente

Encontrando a Chave de Site

A chave de site geralmente está no HTML da página:

html Copy
<div class="g-recaptcha" data-sitekey="6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"></div>

Ou em uma tag de script:

html Copy
<script src="https://www.google.com/recaptcha/api.js?render=6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"></script>

Implementação

python Copy
from scrapling import Fetcher

def scrape_with_recaptcha_v2(target_url, site_key, form_url=None):
    """
    Raspagem de uma página protegida por ReCaptcha v2.

    Args:
        target_url: A URL da página com o captcha
        site_key: A chave de site do ReCaptcha
        form_url: A URL para submeter o formulário (padrão para target_url)

    Returns:
        A resposta da página protegida
    """
    # Resolver o captcha usando o CapSolver
    print("Resolvendo ReCaptcha v2...")
    solution = solve_captcha(
        task_type="ReCaptchaV2TaskProxyLess",
        website_url=target_url,
        website_key=site_key
    )

    captcha_token = solution["gRecaptchaResponse"]
    print(f"Obtido token: {captcha_token[:50]}...")

    # Submeter o formulário com o token de captcha usando o Scrapling
    # Nota: Use Fetcher.post() como método de classe (não método de instância)
    submit_url = form_url or target_url
    response = Fetcher.post(
        submit_url,
        data={
            "g-recaptcha-response": captcha_token,
            # Adicione quaisquer outros campos de formulário necessários pelo site
        }
    )

    return response

# Exemplo de uso
if __name__ == "__main__":
    url = "https://example.com/pagina-protegida"
    site_key = "6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"

    result = scrape_with_recaptcha_v2(url, site_key)
    print(f"Status: {result.status}")
    print(f"Comprimento do conteúdo: {len(result.body)}")  # Use .body para bytes brutos

ReCaptcha v2 Invisível

Para o ReCaptcha v2 Invisível (sem checkbox, acionado na submissão do formulário), adicione o parâmetro isInvisible:

python Copy
solution = solve_captcha(
    task_type="ReCaptchaV2TaskProxyLess",
    website_url=target_url,
    website_key=site_key,
    isInvisible=True
)

Versão Enterprise

Para o ReCaptcha v2 Enterprise, use um tipo de tarefa diferente:

python Copy
solution = solve_captcha(
    task_type="ReCaptchaV2EnterpriseTaskProxyLess",
    website_url=target_url,
    website_key=site_key,
    enterprisePayload={
        "s": "valor_s_se_necessário"
    }
)

Resolvendo ReCaptcha v3 com Scrapling + CapSolver

O ReCaptcha v3 é diferente do v2 — ele roda em segundo plano e atribui uma pontuação (0,0 a 1,0) com base no comportamento do usuário. Uma pontuação mais próxima de 1,0 indica atividade provavelmente humana.

Diferenças Chave em Relação ao v2

Aspecto ReCaptcha v2 ReCaptcha v3
Interação do Usuário Checkbox/Desafios de Imagem Nenhum (invisível)
Saída Pass/Fail Pontuação (0,0-1,0)
Parâmetro de Ação Não necessário Necessário
Quando usar Formulários, logins Todos os carregamentos de página

Encontrando o Parâmetro de Ação

A ação é especificada no JavaScript do site:

javascript Copy
grecaptcha.execute('6LcxxxxxxxxxxxxxxxxABCD', {action: 'submit'})

Ações comuns incluem: submit, login, register, homepage, contact.

Implementação

python Copy
from scrapling import Fetcher

def scrape_with_recaptcha_v3(target_url, site_key, page_action="submit", min_score=0.7):
    """
    Raspagem de uma página protegida pelo ReCaptcha v3.

    Args:
        target_url: A URL da página com o captcha
        site_key: A chave de site do ReCaptcha
        page_action: O parâmetro de ação (encontrado em grecaptcha.execute)
        min_score: Pontuação mínima solicitada (0,1-0,9)

    Returns:
        A resposta da página protegida
    """
    print(f"Resolvendo ReCaptcha v3 (ação: {page_action})...")

    solution = solve_captcha(
        task_type="ReCaptchaV3TaskProxyLess",
        website_url=target_url,
        website_key=site_key,
        pageAction=page_action
    )

    captcha_token = solution["gRecaptchaResponse"]
    print(f"Obtido token com pontuação: {solution.get('score', 'N/A')}")

    # Submeter a solicitação com o token usando o método de classe do Scrapling
    response = Fetcher.post(
        target_url,
        data={
            "g-recaptcha-response": captcha_token,
        },
        headers={
            "User-Agent": solution.get("userAgent", "Mozilla/5.0")
        }
    )

    return response

# Exemplo de uso
if __name__ == "__main__":
    url = "https://example.com/api/dados"
    site_key = "6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"

    result = scrape_with_recaptcha_v3(url, site_key, page_action="obterDados")
    print(f"Resposta: {result.body.decode()[:200]}")  # Use .body para conteúdo

ReCaptcha v3 Enterprise

python Copy
solution = solve_captcha(
    task_type="ReCaptchaV3EnterpriseTaskProxyLess",
    website_url=target_url,
    website_key=site_key,
    pageAction=page_action,
    enterprisePayload={
        "s": "parâmetro_s_opcional"
    }
)

Resolvendo Cloudflare Turnstile com Scrapling + CapSolver

O Cloudflare Turnstile é uma alternativa mais recente ao captcha tradicional, projetada como uma "solução amigável ao usuário, preservando a privacidade" para substituir os captchas tradicionais. Ele está cada vez mais presente em sites que usam o Cloudflare.

Entendendo o Turnstile

O Turnstile vem em três modos:

  • Gerenciado: Mostra um widget apenas quando necessário
  • Não Interativo: Funciona sem interação do usuário
  • Invisível: Totalmente invisível para os usuários

Boa notícia? O CapSolver lida com todos os três automaticamente.

Encontrando a Chave de Site

Procure o Turnstile no HTML da página:

html Copy
<div class="cf-turnstile" data-sitekey="0x4xxxxxxxxxxxxxxxxxxxxxxxxxx"></div>

Ou no JavaScript:

javascript Copy
turnstile.render('#container', {
    sitekey: '0x4xxxxxxxxxxxxxxxxxxxxxxxxxx',
    callback: function(token) { ... }
});

Implementação

python Copy
from scrapling import Fetcher

def scrape_with_turnstile(target_url, site_key, action=None, cdata=None):
    """
    Raspagem de uma página protegida pelo Cloudflare Turnstile.

    Args:
        target_url: A URL da página com o captcha
        site_key: A chave de site do Turnstile (começa com 0x4...)
        action: Parâmetro de ação opcional
        cdata: Parâmetro cdata opcional

    Returns:
        A resposta da página protegida
    """
    print("Resolvendo Cloudflare Turnstile...")

    # Construir metadados se fornecido
    metadata = {}
    if action:
        metadata["action"] = action
    if cdata:
        metadata["cdata"] = cdata

    task_params = {
        "task_type": "AntiTurnstileTaskProxyLess",
        "website_url": target_url,
        "website_key": site_key,
    }

    if metadata:
        task_params["metadata"] = metadata

    solution = solve_captcha(**task_params)

    turnstile_token = solution["token"]
    user_agent = solution.get("userAgent", "")

    print(f"Obtido token do Turnstile: {turnstile_token[:50]}...")

    # Submeter com o token usando o método de classe do Scrapling
    headers = {}
    if user_agent:
        headers["User-Agent"] = user_agent

    response = Fetcher.post(
        target_url,
        data={
            "cf-turnstile-response": turnstile_token,
        },
headers=headers
    )

    return response

# Exemplo de uso
if __name__ == "__main__":
    url = "https://example.com/protected"
    site_key = "0x4AAAAAAAxxxxxxxxxxxxxx"

    result = scrape_with_turnstile(url, site_key)
    print(f"Sucesso! Obteve {len(result.body)} bytes")  # Use .body para conteúdo

Turnstile com Action e CData

Alguns implementações exigem parâmetros adicionais:

python Copy
solution = solve_captcha(
    task_type="AntiTurnstileTaskProxyLess",
    website_url=target_url,
    website_key=site_key,
    metadata={
        "action": "login",
        "cdata": "session_id_ou_dados_customizados"
    }
)

Usando o StealthyFetcher para Proteção Anti-Bot Avançada

Às vezes, requisições HTTP básicas não são suficientes. Alguns sites usam detecção de bots sofisticada que verifica:

  • Impressões digitais do navegador
  • Execução de JavaScript
  • Movimentos do mouse e timing
  • Impressões digitais TLS
  • Cabeçalhos de requisição

O StealthyFetcher do Scrapling fornece proteção contra bots de nível de navegador usando um motor de navegador real com modificações de stealth.

O que é o StealthyFetcher?

O StealthyFetcher usa um navegador Firefox modificado com:

  • Impressões digitais reais do navegador
  • Capacidades de execução de JavaScript
  • Tratamento automático de desafios do Cloudflare
  • Falsificação de impressões digitais TLS
  • Gerenciamento de cookies e sessões

Quando usar o StealthyFetcher

Cenário Use Fetcher Use StealthyFetcher
Formulários simples com captcha Sim Não
Páginas com muito JavaScript Não Sim
Múltiplas camadas de proteção contra bots Não Sim
Velocidade é crítica Sim Não
Modo "Cloudflare Under Attack" Não Sim

Combinando o StealthyFetcher com o CapSolver

Aqui está como usar ambos juntos para máxima eficácia:

python Copy
from scrapling import StealthyFetcher
import asyncio

async def scrape_with_stealth_and_recaptcha(target_url, site_key, captcha_type="v2"):
    """
    Combina as funcionalidades anti-bot do StealthyFetcher com o CapSolver para ReCaptcha.

    Args:
        target_url: A URL para scraping
        site_key: A chave do captcha
        captcha_type: "v2" ou "v3"

    Returns:
        O conteúdo da página após resolver o captcha
    """

    # Primeiro, resolva o captcha usando o CapSolver
    print(f"Resolvendo ReCaptcha {captcha_type}...")

    if captcha_type == "v2":
        solution = solve_captcha(
            task_type="ReCaptchaV2TaskProxyLess",
            website_url=target_url,
            website_key=site_key
        )
        token = solution["gRecaptchaResponse"]

    elif captcha_type == "v3":
        solution = solve_captcha(
            task_type="ReCaptchaV3TaskProxyLess",
            website_url=target_url,
            website_key=site_key,
            pageAction="submit"
        )
        token = solution["gRecaptchaResponse"]

    else:
        raise ValueError(f"Tipo de captcha desconhecido: {captcha_type}")

    print(f"Obteve token: {token[:50]}...")

    # Use o StealthyFetcher para comportamento de navegador
    fetcher = StealthyFetcher()

    # Navegue até a página
    page = await fetcher.async_fetch(target_url)

    # Injeta a solução do ReCaptcha usando JavaScript
    await page.page.evaluate(f'''() => {{
        // Encontre o campo g-recaptcha-response e defina seu valor
        let field = document.querySelector('textarea[name="g-recaptcha-response"]');
        if (!field) {{
            field = document.createElement('textarea');
            field.name = "g-recaptcha-response";
            field.style.display = "none";
            document.body.appendChild(field);
        }}
        field.value = "{token}";
    }}''')

    # Encontre e clique no botão de submissão
    submit_button = page.css('button[type="submit"], input[type="submit"]')
    if submit_button:
        await submit_button[0].click()
        # Aguarde a navegação
        await page.page.wait_for_load_state('networkidle')

    # Obtenha o conteúdo final da página
    content = await page.page.content()

    return content

# Wrapper síncrono para uso mais fácil
def scrape_stealth(target_url, site_key, captcha_type="v2"):
    """Wrapper síncrono para o scraper assíncrono do stealth."""
    return asyncio.run(
        scrape_with_stealth_and_recaptcha(target_url, site_key, captcha_type)
    )

# Exemplo de uso
if __name__ == "__main__":
    url = "https://example.com/pagina-altamente-protegida"
    site_key = "6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"

    content = scrape_stealth(url, site_key, captcha_type="v2")
    print(f"Obteve {len(content)} bytes de conteúdo")

Exemplo Completo: Scraping em Múltiplas Páginas com Sessão

python Copy
from scrapling import StealthyFetcher
import asyncio

class StealthScraper:
    """Um scraper que mantém sessão entre múltiplas páginas."""

    def __init__(self, api_key):
        self.api_key = api_key
        self.fetcher = None

    async def __aenter__(self):
        self.fetcher = StealthyFetcher()
        return self

    async def __aexit__(self, *args):
        if self.fetcher:
            await self.fetcher.close()

    async def solve_and_access(self, url, site_key, captcha_type="v2"):
        """Resolve o ReCaptcha e acessa a página."""
        global CAPSOLVER_API_KEY
        CAPSOLVER_API_KEY = self.api_key

        # Resolve o ReCaptcha
        task_type = f"ReCaptcha{captcha_type.upper()}TaskProxyLess"
        solution = solve_captcha(
            task_type=task_type,
            website_url=url,
            website_key=site_key
        )
        token = solution["gRecaptchaResponse"]

        # Navegue e injete o token
        page = await self.fetcher.async_fetch(url)
        # ... continue com interação na página

        return page

# Uso
async def main():
    async with StealthScraper("sua_api_key") as scraper:
        page1 = await scraper.solve_and_access(
            "https://example.com/login",
            "site_key_aqui",
            "v2"
        )
        # Sessão é mantida para requisições subsequentes
        page2 = await scraper.solve_and_access(
            "https://example.com/dashboard",
            "outro_site_key",
            "v3"
        )

asyncio.run(main())

Melhores Práticas & Dicas

1. Limitação de Taxa

Não ataque os sites com muitas requisições. Implemente atrasos entre as requisições:

python Copy
import time
import random

def scrape_polite(urls, min_delay=2, max_delay=5):
    """Scrape com atrasos aleatórios para parecer mais humano."""
    results = []
    for url in urls:
        result = scrape_page(url)
        results.append(result)

        # Atraso aleatório entre requisições
        delay = random.uniform(min_delay, max_delay)
        time.sleep(delay)

    return results

2. Tratamento de Erros

Sempre trate falhas com cuidado:

python Copy
def robust_solve_captcha(task_type, website_url, website_key, max_retries=3, **kwargs):
    """Resolve captcha com tentativas automáticas."""
    for attempt in range(max_retries):
        try:
            return solve_captcha(task_type, website_url, website_key, **kwargs)
        except Exception as e:
            print(f"Tentativa {attempt + 1} falhou: {e}")
            if attempt < max_retries - 1:
                time.sleep(5)  # Espere antes de tentar novamente
            else:
                raise

3. Respeite o robots.txt

Verifique o robots.txt do site antes de fazer scraping:

python Copy
from urllib.robotparser import RobotFileParser

def pode_scrape(url):
    """Verifique se o scraping é permitido pelo robots.txt."""
    rp = RobotFileParser()
    rp.set_url(f"{url}/robots.txt")
    rp.read()
    return rp.can_fetch("*", url)

4. Use Proxies para Escalabilidade

Ao fazer scraping em larga escala, rotacione proxies para evitar bloqueios de IP:

python Copy
# O CapSolver suporta tarefas com proxy
solution = solve_captcha(
    task_type="ReCaptchaV2Task",  # Note: sem "ProxyLess"
    website_url=target_url,
    website_key=site_key,
    proxy="http://user:pass@proxy.example.com:8080"
)

5. Cacheie Soluções Quando Possível

Tokens de captcha geralmente são válidos por 1-2 minutos. Se precisar fazer várias requisições, reutilize o token:

python Copy
import time

class CaptchaCache:
    def __init__(self, ttl=120):  # TTL padrão de 2 minutos
        self.cache = {}
        self.ttl = ttl

    def get_or_solve(self, key, solve_func):
        """Obtenha o token em cache ou resolva um novo."""
        if key in self.cache:
            token, timestamp = self.cache[key]
            if time.time() - timestamp < self.ttl:
                return token

        token = solve_func()
        self.cache[key] = (token, time.time())
        return token

Tabelas de Comparação

Comparação dos Tipos de Captcha

Funcionalidade ReCaptcha v2 ReCaptcha v3 Turnstile do Cloudflare
Interação do Usuário Caixa de seleção + desafio possível Nenhuma Mínima ou nenhuma
Formato da Chave do Site 6L... 6L... 0x4...
Campo de Resposta g-recaptcha-response g-recaptcha-response cf-turnstile-response
Parâmetro de Ação Não Sim (necessário) Opcional
Tempo para Resolver 1-10 segundos 1-10 segundos 1-20 segundos
Tarefa do CapSolver ReCaptchaV2TaskProxyLess ReCaptchaV3TaskProxyLess AntiTurnstileTaskProxyLess

Comparação dos Fetchers do Scrapling

Funcionalidade Fetcher StealthyFetcher
Velocidade Muito rápida Mais lenta
Suporte a JavaScript Não Sim
Impressão Digital do Navegador Nenhuma Firefox real
Uso de Memória Baixo Maior
Bypass do Cloudflare Não Sim
Ideal Para Requisições simples Anti-bot complexo

Perguntas Frequentes

Q: Quanto custa o CapSolver?

Verifique a página de preços do CapSolver para as taxas atuais.

Q: Como encontrar a chave do site em uma página web?

Procure no código fonte da página (Ctrl+U) por:

  • Atributo data-sitekey
  • Chamadas JavaScript grecaptcha.execute
  • Parâmetro render= em URLs de scripts do reCaptcha
  • class="cf-turnstile" para Turnstile

Q: E se o token do captcha expirar antes de usá-lo?

Tokens geralmente expiram após 1-2 minutos. Resolva o captcha o mais perto possível da submissão do formulário. Se obtiver erros de validação, resolva novamente com um token novo.

Q: Posso usar o CapSolver com código assíncrono?

Sim! Envolva a função de resolução em um executor assíncrono:

python Copy
import asyncio

async def async_solve_captcha(*args, **kwargs):
    loop = asyncio.get_event_loop()
    return await loop.run_in_executor(
        None,
        lambda: solve_captcha(*args, **kwargs)
    )

Q: Como lidar com múltiplos ReCaptchas em uma única página?

Resolva cada captcha separadamente e inclua todos os tokens em sua submissão:

python Copy
# Resolva múltiplos ReCaptchas
solution_v2 = solve_captcha("ReCaptchaV2TaskProxyLess", url, key1)
solution_v3 = solve_captcha("ReCaptchaV3TaskProxyLess", url, key2, pageAction="submit")

# Submeta os tokens usando o método da classe Scrapling
response = Fetcher.post(url, data={
    "g-recaptcha-response": solution_v2["gRecaptchaResponse"],
    "g-recaptcha-response-v3": solution_v3["gRecaptchaResponse"],
})

Conclusão

Combinando Scrapling e CapSolver, você obtém uma solução poderosa para scraping de sites protegidos por captchas. Aqui está um resumo rápido:

  1. Use o Fetcher do Scrapling para requisições simples onde a velocidade importa
  2. Use o StealthyFetcher quando enfrentar sistemas anti-bot sofisticados
  3. Use o CapSolver para resolver ReCaptcha v2, v3 e Turnstile do Cloudflare
  4. Implemente melhores práticas como limitação de taxa, tratamento de erros e rotação de proxies

Lembre-se de escrapear de forma responsável:

  • Respeite os termos de serviço do site
  • Não sobrecarregue os servidores com requisições
  • Use os dados de forma ética
  • Considere contatar os proprietários do site para acesso via API

Pronto para começar a escrapear? Obtenha sua chave de API do CapSolver em capsolver.com e instale o Scrapling com pip install "scrapling[all]".

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

Como resolver CAPTCHAs em Python Usando o Botasaurus e o CapSolver (Guia Completo)
Como resolver CAPTCHAs em Python usando Botasaurus e CapSolver (Guia Completo)

Aprenda a integrar o Botasaurus (framework de raspagem de web em Python) com a API do CapSolver para resolver automaticamente reCAPTCHA v2/v3 e Turnstile.

web scraping
Logo of CapSolver

Adélia Cruz

15-Dec-2025

Lumiproxy
Lumiproxy: Proxy Premium para Scraping de Web e Coleta de Dados

Neste artigo, mostraremos o que é Lumiproxy e os serviços que eles oferecem.

web scraping
Logo of CapSolver

Ethan Collins

12-Dec-2025

Aba Proxy
Tabproxy: Bom custo proxy residencial internacional

Neste artigo, vamos mostrar para você o que é o Tabproxy e os serviços que eles oferecem.

web scraping
Logo of CapSolver

Ethan Collins

12-Dec-2025

erros de raspagem de web
O que são erros 402, 403, 404 e 429 em raspagem de web? Um Guia Completo

Domine o tratamento de erros de raspagem de web entendendo o que são os erros 402, 403, 404 e 429. Aprenda a corrigir o erro 403 Proibido, implementar soluções para o erro de limitação de taxa 429 e tratar o código de status Payment Required emergente 402.

web scraping
Logo of CapSolver

Lucas Mitchell

12-Dec-2025

IP2Mundo
Proxies Residenciais IP2World: Soluções Líderes de Proxies IP Globais

Neste artigo, vamos mostrar o que é o IP2World e os serviços que eles oferecem.

web scraping
Logo of CapSolver

Ethan Collins

12-Dec-2025

Raspagem de Web com Python
Web Scraping com Python: 2026 Melhores Táticas

Aprenda as principais táticas de raspagem de web em Python para 2026, incluindo lidar com conteúdo JavaScript dinâmico, gerenciar fluxos de autenticação, resolver CAPTCHAs, identificar armadilhas ocultas, simular comportamento humano, otimizar padrões de requisição e reduzir o uso de recursos em projetos de raspagem em larga escala.

web scraping
Logo of CapSolver

Lucas Mitchell

12-Dec-2025