TL;DR
Scrapling oferece poderosas capacidades de bypass anti-bot através de seus modos StealthyFetcher e DynamicFetcher. Use StealthyFetcher para sites protegidos pelo Cloudflare (solução automática de Turnstile, randomização de impressão digital de canvas, bloqueio de WebRTC) ou DynamicFetcher para implementações anti-bot pesadas em JavaScript. Integre com OpenClaw para controlar todas as operações de scraping através de comandos de linguagem natural.
Introdução
Você visita um site para coletar dados. A página carrega. Então você vê: "Acesso Negado" ou um desafio CAPTCHA. O site detectou seu scraper e bloqueou o acesso. Este cenário se repete constantemente para desenvolvedores, cientistas de dados e pesquisadores que precisam de dados da web para projetos legítimos.
Isso acontece porque os sites implementam cada vez mais sistemas anti-bot sofisticados. Cloudflare, PerimeterX, Akamai e serviços semelhantes analisam impressões digitais de navegadores, padrões de comportamento e características de solicitações para identificar acesso automatizado. Scrapers tradicionais falham imediatamente contra essas defesas.
A indústria de detecção de bots se tornou um mercado multibilionário. As empresas investem pesadamente na proteção de seus ativos digitais contra acesso automatizado. O Cloudflare sozinho relata o bloqueio de bilhões de solicitações de bots diariamente. Isso cria desafios significativos para a coleta legítima de dados, seja para pesquisa de mercado, análise competitiva, monitoramento de preços ou pesquisa acadêmica.
Scrapling resolve este problema. A biblioteca inclui vários modos anti-detecção projetados especificamente para contornar essas proteções. Combinado com a interface de linguagem natural do OpenClaw, você pode instruir seu assistente de IA a contornar as verificações anti-bot sem escrever código complexo.
Compreendendo a Detecção Anti-Bot
Antes de contornar a detecção, você precisa entender como ela funciona. Sistemas anti-bot analisam vários fatores:
Impressão Digital do Navegador (Browser Fingerprinting): Sites coletam informações sobre seu navegador, incluindo resolução de tela, fontes instaladas, renderizador WebGL, saída de canvas e centenas de outros sinais. Ferramentas automatizadas frequentemente se revelam através de impressões digitais consistentes que diferem das de navegadores reais.
Análise Comportamental: Usuários humanos movem o mouse de forma imprevisível, rolam em velocidades variadas e digitam com tempo natural. Bots frequentemente exibem padrões mecânicos: carregamentos instantâneos de página, velocidades de rolagem uniformes, tempo perfeito entre as ações.
Análise de Solicitações: Cada solicitação HTTP inclui cabeçalhos, impressões digitais TLS e padrões de conexão. Bibliotecas HTTP padrão, como 'requests', fazem solicitações que parecem claramente automatizadas em comparação com o tráfego real de navegadores.
Desafios JavaScript: Sites modernos executam JavaScript para coletar informações do navegador. O Turnstile do Cloudflare, por exemplo, executa testes invisíveis que verificam a integridade do navegador antes de exibir o conteúdo.
Reputação de IP: Endereços IP são sinalizados com base no provedor de hospedagem, histórico de atividade suspeita e localização geográfica. IPs de data centers geram suspeita imediata.
Scrapling aborda cada um desses vetores de detecção através de seus fetchers especializados.
Recursos Anti-Bot do Scrapling
Scrapling oferece dois fetchers principais para contornar sistemas anti-bot:

StealthyFetcher lida com a maioria das proteções do Cloudflare e similares. Ele usa Chrome sem interface gráfica (headless) com técnicas de evasão incorporadas que corrigem vetores de detecção comuns automaticamente.
DynamicFetcher oferece automação completa do navegador através do Playwright. Use-o quando o StealthyFetcher falhar ou quando o site usar detecção avançada baseada em JavaScript.
Veja como escolher:
| Cenário | Fetcher Recomendado |
|---|---|
| Proteção Cloudflare | StealthyFetcher |
| CAPTCHA Turnstile | StealthyFetcher |
| Detecção básica de bot | StealthyFetcher |
| Desafios JavaScript complexos | DynamicFetcher |
| Rolagem infinita com anti-bot | DynamicFetcher |
| Soluções anti-bot personalizadas | DynamicFetcher |
Aprofundando no StealthyFetcher
StealthyFetcher é a ferramenta principal do Scrapling para contornar sistemas anti-bot. Ele lida com a maioria dos mecanismos de proteção comuns automaticamente.
Uso Básico
from scrapling.fetchers import StealthyFetcher
fetcher = StealthyFetcher()
page = fetcher.get('https://protected-site.com')
print(page.text)
O fetcher tenta automaticamente contornar Cloudflare, PerimeterX e proteções similares.
Bypass de Cloudflare Turnstile
Cloudflare Turnstile é um dos desafios anti-bot mais comuns. O StealthyFetcher o resolve automaticamente:
page = StealthyFetcher.fetch(
'https://cloudflare-protected-site.com',
solve_cloudflare=True
)
O parâmetro solve_cloudflare=True aciona a solução automática do desafio. Isso funciona tanto para desafios intersticiais (a página "Verificando seu navegador antes de acessar") quanto para widgets do Turnstile.
Randomização de Impressão Digital de Canvas
A impressão digital de canvas cria identificadores únicos com base em como seu navegador renderiza gráficos. O StealthyFetcher adiciona ruído aleatório às operações de canvas:
page = StealthyFetcher.fetch(
'https://site.com',
hide_canvas=True
)
Cada solicitação gera uma saída de canvas diferente, tornando o rastreamento de impressão digital ineficaz.
Prevenção de Vazamento WebRTC
WebRTC pode expor seu endereço IP real mesmo ao usar proxies. O StealthyFetcher bloqueia as solicitações WebRTC:
page = StealthyFetcher.fetch(
'https://site.com',
block_webrtc=True
)
Isso evita vazamentos de IP local que poderiam revelar sua identidade ou localização.
Spoofing de Referer de Pesquisa Google
Muitos sites permitem acesso quando acreditam que o tráfego vem da pesquisa Google. O StealthyFetcher falsifica este referer:
page = StealthyFetcher.fetch(
'https://site.com',
google_search=True
)
Isso faz com que a solicitação pareça vir da página de resultados da pesquisa do Google.
Usando o Chrome Instalado
Para máxima evasão, use seu navegador Chrome instalado em vez do Chromium do Playwright:
page = StealthyFetcher.fetch(
'https://site.com',
real_chrome=True
)
Isso usa sua instalação real do Chrome, que possui uma impressão digital de navegador legítima.
Spoofing Geográfico
Corresponda sua solicitação a uma localização específica:
page = StealthyFetcher.fetch(
'https://site.com',
locale='en-US',
timezone_id='America/New_York'
)
Isso define o fuso horário e as configurações de idioma do navegador para corresponder à sua localização desejada.
DynamicFetcher para Proteção Avançada
Alguns sites usam sistemas anti-bot sofisticados que o StealthyFetcher não consegue contornar. O DynamicFetcher oferece automação completa do navegador com Playwright:
from scrapling.fetchers import DynamicFetcher
fetcher = DynamicFetcher()
page = fetcher.get('https://highly-protected-site.com')
print(page.text)
Lidando com Rolagem Infinita
Sites com rolagem infinita e proteção anti-bot exigem automação do navegador:
from scrapling.fetchers import DynamicFetcher
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
fetcher = DynamicFetcher(playwright=p)
page = fetcher.get('https://site.com/infinite-scroll')
# Aguardar o carregamento do conteúdo
page.wait_for_selector('.content-item')
# Rolar para carregar mais
for _ in range(5):
page.evaluate('window.scrollTo(0, document.body.scrollHeight)')
page.wait_for_timeout(1000)
Aguardando a Execução de JavaScript
Parte do conteúdo é carregada via JavaScript após o carregamento inicial da página:
page = DynamicFetcher.get('https://site.com')
page.wait_for_load_state('networkidle')
content = page.content()
Isso garante que todo o JavaScript foi executado antes de extrair o conteúdo.
Lidando com CAPTCHAs Manualmente
Para CAPTCHAs que não podem ser resolvidos automaticamente:
page = DynamicFetcher.get('https://site.com')
# Verificar se o CAPTCHA está presente
if page.is_visible('.captcha-container'):
# Tirar screenshot para solução manual
page.screenshot(path='captcha.png')
# Após a solução manual, continuar
page.click('.captcha-submit')
Você pode pausar para intervenção manual, resolver o CAPTCHA por conta própria e retomar o scraping.
Usando com OpenClaw
OpenClaw permite controlar os recursos anti-bot do Scrapling através de linguagem natural (se você quiser verificar como configurar o Scrapling dentro do OpenClaw, confira este post):
Contornar Cloudflare em um site:
"Get the product data from https://shop.example.com, this site has Cloudflare protection"
OpenClaw usa automaticamente o StealthyFetcher com solve_cloudflare ativado.
Lidar com um site com proteção avançada:
"Scrape the job listings from https://careers.example.com, use headless browser mode because they have strong anti-bot protection"
OpenClaw muda para DynamicFetcher para automação completa do navegador.
Usar rotação de proxy:
"Extract data from these 100 URLs, rotate through these proxies: proxy1.com:8080, proxy2.com:8080, proxy3.com:8080"
OpenClaw distribui as solicitações entre múltiplos proxies.
Falsificar localização geográfica:
"Get the price data from https://site.com, use US East Coast settings"
OpenClaw configura o fuso horário e o local para corresponder.
Técnicas Anti-Bot Explicadas
Compreender as técnicas subjacentes ajuda você a escolher a abordagem correta:
Falsificação de Impressão Digital TLS
Quando seu navegador se conecta a um site, ele realiza um handshake TLS. A mensagem ClientHello inclui características que identificam sua biblioteca cliente. Solicitações Python padrão possuem impressões digitais distintas que os sistemas anti-bot reconhecem.
Scrapling falsifica impressões digitais TLS para aparecer como navegadores legítimos. Isso acontece automaticamente com StealthyFetcher e DynamicFetcher.
Rotação de User-Agent
Enviar solicitações com a mesma string de User-Agent aciona a detecção. Scrapling rotaciona os User-Agents automaticamente:
# User-Agent é rotacionado automaticamente
page = StealthyFetcher.get('https://site.com')
Cada solicitação parece vir de uma versão diferente do navegador.
Falsificação de Cabeçalhos
Navegadores reais enviam cabeçalhos específicos em ordens específicas. O Scrapling garante que os cabeçalhos correspondam ao comportamento legítimo do navegador automaticamente.
Randomização de Canvas
Quando um site pede ao seu navegador para desenhar algo, os pixels exatos revelam seu navegador e GPU. O Scrapling adiciona ruído imperceptível às operações de canvas, tornando cada impressão digital única.
Resolução de Tela e Tamanho da Janela
Navegadores headless frequentemente reportam tamanhos de tela padrão. O Scrapling randomiza as dimensões da viewport para corresponder a exibições de usuários reais.
Simulação de Movimento do Mouse
DynamicFetcher pode simular movimentos de mouse semelhantes aos humanos:
page.mouse.move_to_element('.button')
page.mouse.move_by_offset(50, 20)
page.click('.submit')
Isso adiciona padrões de movimento realistas que passam na análise comportamental.
Integração de Proxy
Usar proxies ajuda a evitar o bloqueio baseado em IP e permite o scraping geográfico:
Uso Básico de Proxy
from scrapling.fetchers import StealthyFetcher
fetcher = StealthyFetcher()
page = fetcher.get(
'https://site.com',
proxy='http://username:password@proxy.example.com:8080'
)
Rotação de Proxy
Para scraping em larga escala, rotacione entre múltiplos proxies:
import random
from scrapling.fetchers import StealthyFetcher
proxies = [
'http://proxy1.com:8080',
'http://proxy2.com:8080',
'http://proxy3.com:8080'
]
fetcher = StealthyFetcher()
for url in urls:
proxy = random.choice(proxies)
page = fetcher.get(url, proxy=proxy)
# Processar página
Proxies Residenciais
Proxies residenciais usam endereços IP de provedores de serviços de internet reais. Eles são mais difíceis de detectar do que IPs de data center:
page = StealthyFetcher.get(
'https://site.com',
proxy='http://residential-proxy-provider:port'
)
Proxies residenciais custam mais, mas oferecem taxas de sucesso significativamente maiores em sites protegidos.
Cenários Comuns Anti-Bot
Proteção Cloudflare
Cloudflare é a solução anti-bot mais comum. A maioria dos sites funciona com o StealthyFetcher básico:
page = StealthyFetcher.fetch('https://cloudflare-site.com', solve_cloudflare=True)
Se o Cloudflare mostrar uma página de desafio, o fetcher a resolve automaticamente e tenta novamente.
PerimeterX (Agora Ownl)
PerimeterX (agora parte da Ownl) usa análise comportamental:
# Usar DynamicFetcher para PerimeterX
page = DynamicFetcher.get('https://perimeterx-site.com')
A automação completa do navegador lida melhor com desafios comportamentais.
Akamai
Akamai fornece gerenciamento de bots de nível empresarial:
# Akamai frequentemente exige proxies residenciais
page = StealthyFetcher.get(
'https://akamai-protected.com',
proxy='http://residential-proxy:port',
solve_cloudflare=True
)
Sites protegidos pelo Akamai frequentemente exigem a combinação de múltiplas técnicas de evasão.
Soluções Anti-Bot Personalizadas
Alguns sites constroem seus próprios sistemas de detecção:
# Usar configurações máximas de discrição
page = StealthyFetcher.fetch(
'https://custom-protected.com',
solve_cloudflare=True,
block_webrtc=True,
hide_canvas=True,
google_search=True,
real_chrome=True
)
Se isso falhar, mude para DynamicFetcher com automação completa do navegador.
Melhores Práticas
Comece Simples
Comece com o StealthyFetcher básico. Adicione complexidade apenas se encontrar bloqueios:
# Tentar o básico primeiro
page = StealthyFetcher.get('https://site.com')
# Adicionar evasão se necessário
if 'blocked' in page.text.lower():
page = StealthyFetcher.fetch('https://site.com', solve_cloudflare=True)
Respeitar Limites de Taxa
Mesmo com capacidades anti-bot, enviar muitas solicitações aciona a proteção:
import time
for url in urls:
page = StealthyFetcher.get(url)
time.sleep(2) # Aguardar entre as solicitações
Usar Proxies Residenciais para Produção
Proxies gratuitos ou baratos frequentemente têm má reputação. Invista em proxies residenciais de qualidade para scraping confiável:
# Proxy residencial de qualidade
page = StealthyFetcher.get(
'https://site.com',
proxy='http://premium-residential-proxy:port'
)
Verificar robots.txt
Sempre verifique se o site permite scraping:
# Verificar robots.txt antes de fazer scraping
from urllib.parse import urlparse
domain = urlparse('https://site.com').netloc
robots_url = f'https://{domain}/robots.txt'
Lidar com Erros de Forma Elegante
Incorpore o tratamento de erros em seu scraper:
from scrapling.fetchers import StealthyFetcher
fetcher = StealthyFetcher()
try:
page = fetcher.get('https://site.com')
except Exception as e:
print(f'Error: {e}')
# Recorrer ao DynamicFetcher
from scrapling.fetchers import DynamicFetcher
fetcher = DynamicFetcher()
page = fetcher.get('https://site.com')
Solução de Problemas
Ainda Sendo Bloqueado
Se você encontrar bloqueios apesar de usar o StealthyFetcher:
- Ativar todas as opções de evasão:
page = StealthyFetcher.fetch(
'https://site.com',
solve_cloudflare=True,
block_webrtc=True,
hide_canvas=True,
google_search=True,
real_chrome=True
)
- Mudar para DynamicFetcher:
from scrapling.fetchers import DynamicFetcher
page = DynamicFetcher.get('https://site.com')
- Adicionar rotação de proxy:
page = StealthyFetcher.get(
'https://site.com',
proxy='http://residential-proxy:port'
)
Loop de Desafio Cloudflare
Às vezes, o StealthyFetcher fica preso em um loop de desafio:
- Aumentar o tempo limite:
page = StealthyFetcher.fetch(
'https://site.com',
solve_cloudflare=True,
timeout=120
)
- Usar real_chrome:
page = StealthyFetcher.fetch(
'https://site.com',
solve_cloudflare=True,
real_chrome=True
)
CAPTCHAs Não Sendo Resolvidos
Alguns CAPTCHAs exigem intervenção manual:
page = DynamicFetcher.get('https://site.com')
if page.is_visible('[class*="captcha"]'):
page.screenshot(path='manual_captcha.png')
# Resolver manualmente, depois continuar
input('Pressione Enter após resolver o CAPTCHA...')
page.click('.submit-button')
Desempenho Lento
A evasão anti-bot adiciona sobrecarga. Para um scraping mais rápido:
- Use StealthyFetcher em vez de DynamicFetcher sempre que possível
- Adicione pooling de conexão
- Use proxies mais rápidos
- Reduza opções de evasão desnecessárias
Conclusão
Contornar as verificações anti-bot requer a compreensão de como a detecção funciona e o uso das ferramentas certas para cada situação. O Scrapling oferece soluções abrangentes através do StealthyFetcher para a maioria dos sistemas de proteção e do DynamicFetcher para cenários avançados.
Os principais pontos a serem lembrados:
- Use StealthyFetcher para Cloudflare, Turnstile e proteção básica contra bots
- Ative solve_cloudflare=True para solução automática de desafios
- Mude para DynamicFetcher quando StealthyFetcher falhar
- Adicione rotação de proxy para scraping em larga escala
- Combine múltiplas técnicas de evasão para sites teimosos
Com a integração do OpenClaw, você controla todas essas capacidades através de linguagem natural. Diga ao seu assistente de IA o que você precisa, e ele selecionará a abordagem anti-bot apropriada automaticamente. Depois de coletar seus dados, você pode usar o Apidog para testar e validar APIs, criar suites de teste automatizadas e gerar documentação para os endpoints que você descobrir.
FAQ
Qual a diferença entre StealthyFetcher e DynamicFetcher?
StealthyFetcher usa um Chrome headless modificado com patches de evasão incorporados. DynamicFetcher usa automação Playwright completa. StealthyFetcher é mais rápido, mas pode falhar contra detecção avançada. DynamicFetcher é mais confiável, mas mais lento.
O Scrapling funciona contra todos os sistemas anti-bot?
Nenhuma solução anti-bot funciona 100% do tempo. O Scrapling lida com a maioria dos sistemas comuns (Cloudflare, PerimeterX, Akamai) de forma confiável. Soluções personalizadas ou empresariais podem exigir técnicas adicionais ou intervenção manual.
Contornar anti-bot é legal?
As leis variam de acordo com a jurisdição e dependem dos termos de serviço do site. Geralmente, fazer scraping de dados públicos é aceitável. Contornar autenticação ou acessar dados privados sem autorização ultrapassa limites legais.
Por que meu scraping ainda está sendo bloqueado?
Verifique estes problemas comuns: reputação de IP (use proxies residenciais), limite de taxa (adicione atrasos), evasão insuficiente (habilite mais opções) ou desafios JavaScript (use DynamicFetcher).
Como lido com CAPTCHAs?
StealthyFetcher resolve automaticamente o Cloudflare Turnstile. Para outros CAPTCHAs, use DynamicFetcher e pause para solução manual, ou integre serviços de solução de CAPTCHA de terceiros.
Posso usar meu próprio navegador Chrome?
Sim. Defina real_chrome=True em StealthyFetcher para usar seu Chrome instalado em vez do Chromium do Playwright. Isso fornece uma impressão digital de navegador mais legítima.
Preciso de proxies?
Para scraping em pequena escala, não. Para operações em produção ou em larga escala, proxies residenciais melhoram significativamente as taxas de sucesso, evitando bloqueios baseados em IP.
Como faço para rotacionar User-Agents?
StealthyFetcher rotaciona os User-Agents automaticamente. Para controle manual:
fetcher = StealthyFetcher(headers={'User-Agent': 'Your-Custom-UA'})
Qual a taxa de sucesso contra o Cloudflare?
Com a configuração adequada, as taxas de sucesso excedem 90% para a maioria dos sites protegidos pelo Cloudflare. Desafios Turnstile são resolvidos automaticamente.
Posso fazer scraping de múltiplas localizações geográficas?
Sim. Use os parâmetros timezone_id e locale:
page = StealthyFetcher.fetch(
'https://site.com',
timezone_id='Europe/London',
locale='en-GB'
)
