Os bots agora representam 51% de todo o tráfego da web. Os sites sabem disso e estão reagindo. Os sistemas antibots da Cloudflare, Akamai e DataDome agora combinam reputação de IP, impressão digital TLS, impressão digital do navegador e análise comportamental para bloquear scrapers antes que uma única linha de HTML seja retornada. Se o seu scraper continua sendo bloqueado, este guia explica exatamente o motivo e fornece 12 técnicas específicas para corrigir isso.
Resumo rápido: como fazer scraping sem ser bloqueado
- Alterne endereços IP usando proxies residenciais. IPs de datacenters são facilmente sinalizados.
- Defina cabeçalhos HTTP completos, semelhantes aos do navegador, incluindo
User-AgenteReferer.- Randomize o tempo de solicitação com atrasos variáveis entre 2 e 10 segundos.
- Use um navegador sem interface gráfica com plug-ins furtivos para passar nas verificações de impressão digital.
- Lide com CAPTCHAs automaticamente, pois a resolução manual não é escalável.
- Combine a geolocalização do Proxy com a base de usuários esperada do site de destino.
- Use uma API de scraping gerenciada (como o Web Unlocker da Bright Data) para automatizar todas as etapas acima.
Por que os sites bloqueiam os scrapers da web
Entender por que você é bloqueado é o primeiro passo para não ser bloqueado. A detecção não ocorre depois que você baixa uma página. Geralmente, ela ocorre nos primeiros milissegundos da conexão, antes que qualquer HTML seja servido. As técnicas anti-scraping mais comuns funcionam em combinação em camadas — e para contorná-las é necessário corresponder todas as camadas simultaneamente.
Detecção baseada em IP
Cada solicitação que você faz carrega um endereço IP de origem. Os sistemas anti-bot mantêm bancos de dados de reputação de intervalos de IPs de datacenters conhecidos (AWS, GCP, Azure, DigitalOcean), IPs previamente sinalizados e IPs que exibem alto volume de solicitações. Um único IP disparando 500 solicitações por minuto é facilmente identificado. Os IPs de datacenters são sinalizados por padrão em muitos sites de alta segurança porque nenhum usuário residencial real visita a partir de um datacenter AWS.
Impressão digital do navegador e TLS
Toda conexão HTTPS começa com um handshake TLS. Durante a fase ClientHello, seu cliente transmite seus conjuntos de criptografia suportados, versão TLS, extensões e preferências de curva elíptica, tudo em texto simples, antes que qualquer conteúdo seja trocado. Os sistemas antibots transformam esses dados em uma impressão digital (padrão JA3 ou JA4) e os comparam com assinaturas de bots conhecidos. A biblioteca de solicitações do Python tem uma impressão digital TLS distinta que difere de qualquer navegador real e é facilmente detectada pela Cloudflare e pela Akamai.
Além do TLS, os sites detectam o tipo de navegador através de dezenas de sinais JavaScript: navigator.webdriver, saída de renderização de tela, strings de GPU WebGL, fontes instaladas, resolução de tela, comportamento do contexto de áudio e listas de plug-ins. O Headless Chrome expõe o HeadlessChrome em sua string User-Agent e deixa o navigator.webdriver = true definido, o que é um sinal de detecção imediata na maioria das principais plataformas anti-bot.
Análise comportamental
Os sites não analisam apenas solicitações individuais. Eles observam padrões em toda a sessão. O PerimeterX/HUMAN e sistemas semelhantes medem o tempo entre solicitações, padrões de rolagem, trajetórias de movimento do mouse, comportamento de cliques, profundidade de navegação e duração da sessão. Um Scraper que dispara solicitações em intervalos exatos de 1,0 segundo, nunca rola a página, nunca move o mouse e salta diretamente para páginas profundas de produtos sem visitar a página inicial é imediatamente distinguível de um humano.
CAPTCHAs e desafios JavaScript
Quando um site suspeita de automação, mas não tem certeza, ele emite um desafio. O Cloudflare Turnstile, o reCAPTCHA v3 e o hCaptcha executam sondas JavaScript que verificam se há artefatos de automação. Falhar nesses desafios ou não ter execução JavaScript resulta em um bloqueio ou loop infinito de redirecionamento.
Armadilhas Honeypot
Alguns sites injetam links ocultos em seu HTML, invisíveis para usuários reais via CSS (display: none), mas totalmente acessíveis para Scrapers que realizam Parsing de HTML bruto. Seguir esses links sinaliza você como um bot instantaneamente. Um Scraper que segue cegamente todas as tags <A href> em um documento acabará encontrando um.
As principais técnicas para rastrear sites sem ser bloqueado
1. Alterne seus endereços IP com proxies
A rotação de IP é a técnica anti-detecção mais fundamental. Em vez de enviar todas as solicitações de um único endereço IP, um Pool de proxies distribui o tráfego por centenas ou milhares de IPs, para que nenhum IP acumule um volume suspeito de solicitações. Aprender a alternar proxies em Python é uma habilidade essencial para qualquer pessoa que esteja criando um Scraper sério.
O padrão básico: roteie cada solicitação por um endpoint de Proxy diferente e implemente uma lógica de repetição automática quando um IP for bloqueado.
import requests
from itertools import cycle
import random
import time
proxies = [
"http://proxy1.example.com:8080",
"http://proxy2.example.com:8080",
"http://proxy3.example.com:8080",
]
proxy_pool = cycle(proxies)
def fetch(url):
proxy = next(proxy_pool)
try:
response = requests.get(
url,
proxies={"http": proxy, "https": proxy},
timeout=10
)
response.raise_for_status()
return response.text
exceto requests.exceptions.RequestException como e:
imprimir(f"Proxy {Proxy} falhou: {e}")
retornar None
# Adicione um atraso aleatório entre as solicitações para evitar a limitação de taxa
time.sleep(random.uniform(2, 6))
Uma operação de alto volume precisa de mais do que uma simples rotação round-robin. Ela precisa de gerenciamento inteligente de sessões, aposentadoria automática de IPs e seleção direcionada geograficamente. É por isso que os scrapers de produção usam infraestrutura de Proxy gerenciada em vez de uma lista estática.
2. Use proxies residenciais ou móveis
Nem todos os proxies são iguais. Proxies de datacenter versus proxies residenciais representam uma escolha fundamental entre custo e risco de detecção. Proxies de datacenter encaminham o tráfego através de IPs de servidores em nuvem: rápidos, baratos, mas imediatamente identificáveis como não humanos por qualquer sistema anti-bot com uma lista de bloqueio ASN.
Os proxies residenciais encaminham o tráfego através de endereços IP reais atribuídos pelo ISP, vinculados a conexões domésticas e comerciais reais. Para um site de destino, a solicitação parece ter origem em um usuário real em uma cidade específica em um ISP específico. Os proxies móveis vão além, encaminhando o tráfego através de IPs reais de operadoras móveis (4G/5G), que são ainda menos propensos a serem colocados na lista negra, pois as operadoras utilizam CGNAT (um IP compartilhado por muitos usuários reais).
| Tipo de Proxy | Detectabilidade | Velocidade | Ideal para |
|---|---|---|---|
| Centro de dados | Alta | Muito rápida | Locais com baixa segurança, alto volume |
| ISP/Estático Residencial | Médio | Rápido | Identidade consistente, scraping baseado em conta |
| Residencial | Baixo | Médio | Comércio eletrônico, viagens, plataformas sociais |
| Celular | Muito baixo | Médio | Conteúdo específico para dispositivos móveis, sites agressivos |
A Bright Data opera uma rede de mais de 150 milhões de IPs residencialis em mais de 195 países, a maior rede de proxies residenciais de origem ética disponível. Para cenários em que até mesmo IPs residencialis são sinalizados, mais de 7 milhões de IPs móveis fornecem o maior sinal de confiança possível.
3. Defina cabeçalhos de solicitação realistas
A biblioteca de solicitações do Python envia um conjunto mínimo de cabeçalhos por padrão. Em comparação com um navegador Chrome real, a diferença é imediatamente óbvia:
# O que o Python envia por padrão:
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
# O que o Chrome 121 realmente envia:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/121.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8
Aceitar idioma: en-US,en;q=0.9
Aceitar codificação: gzip, deflate, br, zstd
Conexão: manter ativa
Atualizar solicitações inseguras: 1
Sec-Fetch-Dest: documento
Sec-Fetch-Mode: navegar
Sec-Fetch-Site: nenhum
Sec-Fetch-User: ?1
Os sites verificam os cabeçalhos Accept, Accept-Language, Accept-Encoding, Sec-Fetch-* e a ordem dos cabeçalhos para distinguir navegadores reais de scripts. Defina cabeçalhos que correspondam ao navegador real que você afirma ser, incluindo o cabeçalho Referer ao navegar entre páginas no mesmo domínio. Para um aprofundamento, consulte nosso guia sobre cabeçalhos HTTP para Scraping de dados.
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Aceitar codificação": "gzip, deflate, br",
"Referência": "https://www.google.com/",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "cross-site",
"Upgrade-Insecure-Requests": "1",
}
response = requests.get(url, headers=headers)
4. Alterne os agentes do usuário
Enviar a mesma string de agente do usuário em todas as solicitações é outra bandeira fácil. Nem todos os usuários reais executam o Chrome 121 no Windows 10. Crie um conjunto de strings de agente do usuário realistas e ativas recentemente e gire-as. A regra crítica: o agente do usuário para o qual você gira deve ser internamente consistente. Se você afirma ser o Chrome no macOS, seus cabeçalhos Accept-Language e Sec-CH-UA devem refletir isso.
import random
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0",
"Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 como Mac OS X) AppleWebKit/605.1.15 (KHTML, como Gecko) Versão/17.2 Mobile/15E148 Safari/604.1",
]
headers["User-Agent"] = random.choice(user_agents)
Mantenha seu conjunto de User-Agents atualizado. As versões de navegadores de 2021 são, por si só, um sinal de detecção, pois é estatisticamente improvável que representem o tráfego real em 2026.
5. Gerencie a impressão digital TLS
Esta é a técnica mais comumente esquecida e a que derrota os Scrapers que fizeram tudo certo.
Quando a biblioteca de solicitações do Python inicia uma conexão HTTPS, a pilha TLS subjacente (OpenSSL ou similar) envia um ClientHello com uma combinação específica de conjuntos de criptografia e extensões. Essa combinação gera um valor JA3 que é distintamente não navegador. Cloudflare, Akamai e DataDome verificam essa impressão digital antes de servir qualquer conteúdo, então você pode ser bloqueado antes mesmo que seus cabeçalhos sejam avaliados.
A solução: use um cliente HTTP que imite a pilha TLS de um navegador real. curl_cffi é o padrão atual para Python:
from curl_cffi import requests as curl_requests
# impersonate="chrome121" diz ao curl_cffi para usar exatamente os conjuntos de criptografia TLS, extensões e configurações HTTP/2 do Chrome 121
# TLS cipher suites, extensions, and HTTP/2 settings
response = curl_requests.get(
"https://example.com",
impersonate="chrome121",
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...",
})
print(response.status_code)
curl_cffi envolve curl-impersonate, uma compilação da libcurl que imita as impressões digitais TLS reais do navegador no nível criptográfico. O requisito crítico: seu User-Agent deve corresponder ao perfil do navegador que você está representando. Enviar uma impressão digital TLS do Chrome 121 junto com um User-Agent do Firefox cria uma inconsistência que os sistemas avançados detectam.
Para uso em escala de produção, o Web Unlocker da Bright Data lida com a correspondência de impressões digitais TLS automaticamente, sem a necessidade de gerenciamento de biblioteca.
6. Use um navegador headless com plug-ins furtivos
Quando o site de destino executa desafios JavaScript, você precisa de um navegador real. Entender o que é um navegador headless e como ele funciona fornece uma base para essa técnica. O Playwright e o Puppeteer automatizam o Chromium, permitindo a execução completa do JavaScript, o manuseio de cookies e a renderização de conteúdo dinâmico.
O problema: o Chrome sem interface padrão é facilmente detectado. Ele expõe navigator.webdriver = true, uma string HeadlessChrome User-Agent, plug-ins de navegador ausentes e dimensões de tela anormais. O Turnstile da Cloudflare e sistemas semelhantes executam mais de 200 verificações de JavaScript e detectam uma sessão padrão do Playwright em milissegundos.
A solução é o playwright-stealth, um plug-in que corrige esses vetores de detecção:
from playwright.sync_api import sync_playwright
from playwright_stealth import stealth_sync
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
# Corrige navigator.webdriver, chrome runtime, janelas de conteúdo iframe,
# codecs de mídia e outros artefatos de automação
stealth_sync(page)
page.goto("https://example.com")
print(page.title())
browser.close()
O playwright-stealth lida com os vetores de detecção mais comuns: navigator.webdriver, window.chrome, navigator.plugins, navigator.languages e inconsistências da API de permissões. Para usuários do Selenium, o undetected-chromedriver é o equivalente, corrigindo o ChromeDriver no nível binário.
Limitação importante: os plug-ins stealth reduzem o risco de detecção, mas não o eliminam. O Cloudflare Turnstile e o Akamai Bot Manager evoluíram significativamente e ainda podem detectar navegadores headless corrigidos. Para máxima confiabilidade, o Navegador de scraping da Bright Data é um ambiente de navegador pré-fortificado, criado especificamente para passar nessas verificações imediatamente, sem qualquer configuração de plug-in.
7. Randomize o tempo e o comportamento das solicitações
Os Scrapers que disparam solicitações em um intervalo fixo, mesmo que generoso, são detectáveis por análise de tempo. Usuários reais não visitam páginas a cada 2,0 segundos. Eles leem, rolam a tela, clicam, fazem pausas e navegam de forma não linear.
Use a distribuição gaussiana (normal) para atrasos. Isso produz uma variação semelhante à humana, em que a maioria dos atrasos se aglomera em torno de uma média, mas ocasionalmente se prolonga:
import numpy as np
import time
import random
def human_delay(mean=4.0, std=1.5, min_delay=1.0):
"""Gere um atraso semelhante ao humano usando distribuição normal."""
delay = np.random.normal(mean, std)
# Certifique-se de não ficar abaixo do mínimo
delay = max(delay, min_delay)
time.sleep(delay)
# Entre solicitações de página
human_delay(mean=4.0, std=1.5)
# Entre ações na mesma página (mais rápido)
human_delay(mean=1.2, std=0.4)
Além do tempo, simule um comportamento realista da sessão com o Playwright: role a página gradualmente antes de extrair os dados, mova o mouse para os elementos antes de clicar e varie o ponto de entrada do seu rastreamento, em vez de sempre navegar diretamente para o URL de destino.
# Simule o comportamento humano de rolagem antes de extrair o conteúdo
page.evaluate("window.scrollTo(0, document.body.scrollHeight * 0.3)")
time.sleep(random.uniform(0.8, 2.0))
page.evaluate("window.scrollTo(0, document.body.scrollHeight * 0.7)")
time.sleep(random.uniform(0.5, 1.5))
8. Lide com CAPTCHAs automaticamente
Os CAPTCHAs são uma barreira, não um beco sem saída, mas a resolução manual não é escalável. Para o Scraping de dados em produção, você precisa de um tratamento automatizado de CAPTCHAs. Analisar os melhores solucionadores de CAPTCHAs para o Scraping de dados ajudará você a escolher a ferramenta certa para o seu caso de uso.
As principais abordagens:
- Serviços de solucionadores terceirizados (2captcha, Anti-Captcha): envie a imagem do CAPTCHA ou a chave do site para solucionadores humanos ou modelos de IA, receba o token e insira-o no formulário.
- Gerenciamento de pontuação do reCAPTCHA v3: o reCAPTCHA v3 é executado silenciosamente e atribui uma pontuação de risco. Quanto maior sua pontuação, menos provável será que você veja um desafio, portanto, uma boa higiene de sessão (cabeçalhos realistas, tempo, histórico de navegação) mantém as pontuações altas.
- Soluções gerenciadas: o Web Unlocker da Bright Data inclui um solucionador CAPTCHA integrado que lida com reCAPTCHA, hCaptcha e Cloudflare Turnstile de forma transparente, sem necessidade de integração.
importar solicitações
# Com o Bright Data Web Unlocker, a resolução de CAPTCHA é realizada automaticamente
# antes que a resposta seja retornada. Não é necessária integração com o solucionador.
response = requests.get(
"https://target-site.com/product-page",
proxies={
"https": "https://username:[email protected]:33335"
},
verify=False # O Web Unlocker usa seu próprio certificado SSL
)
imprimir(resposta.status_code) # Retorna 200 com conteúdo totalmente renderizado
9. Evite armadilhas Honeypot
Os links honeypot são invisíveis para usuários reais, mas visíveis no HTML bruto. Seguir esses links é um sinal instantâneo de bot.
Detecte-os antes de seguir os links, verificando a visibilidade do CSS:
from bs4 import BeautifulSoup
def is_visible(tag):
"""Retorna False se o elemento estiver oculto via CSS."""
style = tag.get("style", "")
if "display:none" in style.replace(" ", "") or
"visibility:hidden" in style.replace(" ", ""):
return False
# Verifique também nomes de classes honeypot comuns
classes = tag.get("class", [])
honeypot_classes = {"hidden", "invisible", "honeypot", "trap"}
if honeypot_classes.intersection(set(classes)):
retorne False
retorne True
soup = BeautifulSoup(html_content, "html.parser")
safe_links = [
a["href"] for a in soup.find_all("a", href=True)
if is_visible(a)
]
Isso não captura todos os honeypots, pois alguns são ocultados por meio de classes CSS externas, em vez de estilos embutidos. O método page.is_visible() do Playwright é mais confiável, pois avalia o estilo CSS calculado, em vez de apenas atributos embutidos.
10. Lide com a limitação de taxa com backoff exponencial
Para respostas HTTP 429 (Too Many Requests, ou Muitas solicitações), tentar novamente imediatamente é contraproducente — isso acelera o bloqueio. Implemente o backoff exponencial para recuar graciosamente e retomar a coleta de dados sem acionar um banimento mais severo:
import time
import random
import requests
def fetch_with_backoff(url, headers, proxies, max_retries=5):
"""Tente novamente com backoff exponencial em respostas de limitação de taxa."""
for attempt in range(max_retries):
response = requests.get(url, headers=headers, proxies=proxies, timeout=15)
if response.status_code == 200:
return response
elif response.status_code == 429:
# Respeitar o cabeçalho Retry-After, se presente
retry_after = int(response.headers.get("Retry-After", 2 ** tentativa))
print(f"Taxa limitada. Aguardando {retry_after}s (tentativa {attempt + 1})")
time.sleep(retry_after)
elif response.status_code in (403, 503):
# Provavelmente bloqueado, alterne o IP e recue
print(f"Bloqueado (HTTP {response.status_code}). Recuando...")
time.sleep(2 ** tentativa + random.uniform(0, 1))
else:
response.raise_for_status()
raise Exception(f"Máximo de tentativas excedido para {url}")
11. Correspondência do contexto geográfico
Muitos sites oferecem conteúdos diferentes ou aplicam uma detecção de bots mais rigorosa com base na origem geográfica das solicitações. Um Scraper de preços de produtos direcionado a um site de comércio eletrônico dos EUA deve encaminhar as solicitações por meio de IPs residencialis dos EUA, e não alemães ou cingapurianos. A incompatibilidade geográfica cria uma inconsistência entre a origem da solicitação e os cabeçalhos Accept-Language ou locale, que os sistemas de análise comportamental podem sinalizar.
A rede de Proxy da Bright Data oferece suporte à segmentação por país, estado, cidade e operadora, permitindo que suas solicitações sejam originadas do contexto geográfico preciso que o site de destino espera. Você pode explorar todos os locais de IP Proxy disponíveis antes de criar sua estratégia de segmentação geográfica.
12. Aproveite as APIs subjacentes
Antes de criar um Scraper complexo, verifique se o site de destino expõe uma API interna que seu front-end consome. Abra as ferramentas de desenvolvedor do seu navegador, vá para a guia Rede e observe as solicitações XHR/Fetch enquanto navega pelo site. Muitos sites, incluindo grandes plataformas de comércio eletrônico, carregam seus dados de pontos de extremidade JSON que são muito mais fáceis de chamar diretamente do que realizar Parsing de HTML.
Essas APIs internas geralmente têm respostas JSON estruturadas (sem necessidade de Parsing de HTML), menor escrutínio anti-bot do que a página renderizada principal e parâmetros de paginação que são fáceis de automatizar.
A desvantagem: as APIs internas não são documentadas, podem mudar sem aviso prévio e podem exigir tokens de autenticação que precisam ser obtidos através do site principal. Mas quando estão disponíveis e estáveis, são o caminho mais eficiente para scraping.
A maneira mais rápida: use uma API de Scraping de dados
Todas as 12 técnicas acima exigem implementação individual, manutenção e adaptação contínua à medida que os sistemas anti-bot evoluem. Em grande escala, gerenciar essa pilha se torna o trabalho em si.
A alternativa: consolidar toda a pilha em uma única chamada de API.
Bright Data Web Unlocker
O Web Unlocker é um gateway proxy alimentado por IA que lida automaticamente com rotação de IP, correspondência de impressão digital TLS, Resolução de CAPTCHA e renderização do navegador com base no que o site de destino exige. Você faz uma solicitação HTTP padrão. O Web Unlocker decide qual tipo de Proxy usar, qual impressão digital apresentar, se deve realizar a Resolução de CAPTCHA e se deve renderizar JavaScript, e então retorna conteúdo limpo, independentemente da complexidade anti-bot do site.
import requests
response = requests.get(
"https://any-protected-site.com/data",
proxies={"https": "https://user:[email protected]:33335"},
verify=False,)
# Retorna conteúdo totalmente renderizado e desbloqueado
print(response.text)
O Web Unlocker é testado e atualizado continuamente contra Cloudflare, Akamai, DataDome e PerimeterX. Uma chamada de API substitui 10 técnicas manuais.
Navegador de scraping da Bright Data
Para sites que exigem interação total do navegador, incluindo fluxos de várias etapas, sequências de login e SPAs com uso intenso de JavaScript, o Navegador de scraping fornece uma instância Chromium pré-fortificada acessível através do CDP. Ele se integra diretamente ao Playwright e ao Puppeteer e passa nas verificações de impressão digital do Cloudflare Turnstile e do Akamai Bot Manager sem qualquer configuração de plug-in.
from playwright.sync_api import sync_playwright
SBR_WS_CDP = "wss://brd-customer-XXXX:[email protected]:9222"
com sync_playwright() como pw:
browser = pw.chromium.connect_over_cdp(SBR_WS_CDP)
page = browser.new_page()
page.goto("https://cloudflare-protected-site.com")
print(page.inner_text("body"))
browser.close()
APIs Bright Data Scraper
Para equipes que precisam de dados estruturados de plataformas específicas sem escrever ou manter qualquer Infraestrutura de scraping, as APIs Scraper da Bright Data oferecem uma biblioteca com mais de 120 Scrapers prontos para uso nos domínios mais populares: Amazon, LinkedIn, Instagram, Zillow, Indeed, TikTok, Walmart, Booking.com, Glassdoor e muito mais.
Cada Scraper aceita uma entrada de URL ou palavra-chave, lida com todo o desbloqueio e renderização internamente e retorna dados estruturados limpos em JSON ou CSV. Não há gerenciamento de Proxy, manutenção de analisador e ajuste de impressão digital necessários. Você paga apenas pelos registros entregues com sucesso.
# Exemplo: acione uma raspagem de produto da Amazon por meio das APIs do Scraper
curl -H "Authorization: Bearer API_TOKEN"
-H "Content-Type: application/json"
-d '[{"url":"https://www.amazon.com/dp/B0CRMZHDG8","asin":"B0CRMZHDG8","zipcode":"94107"}]'
"https://api.brightdata.com/conjuntos_de_datos/v3/trigger?dataset_id=gd_l7q7dkf244hwjntr0&format=json"
Scrapers dedicados estão disponíveis para plataformas de comércio eletrônico, LinkedIn e canais de mídia social, com resultados entregues via webhook, pesquisa de API ou download direto. Para domínios ainda não cobertos, o Scraper Studio permite que você crie um scraper personalizado usando IA, sem a necessidade de trabalho de infraestrutura.
Proxies residenciais da Bright Data
Para cenários em que você gerencia sua própria infraestrutura de scraping, mas precisa de um pool de IPs confiável e em grande escala: a rede de proxies residenciais da Bright Data cobre mais de 150 milhões de IPs em mais de 195 países, com segmentação geográfica granular até o nível da cidade e da operadora. Inclui mais de 7 milhões de IPs móveis para tráfego de operadoras móveis e proxies ISP para IPs residencialis estáticos com altos índices de confiança.
Sistemas anti-bot: o que você enfrenta
Cloudflare
O Cloudflare Bot Management é o sistema anti-bot mais amplamente implantado, protegendo milhões de sites, incluindo a maioria das principais propriedades de comércio eletrônico e mídia. Ele opera em camadas: desafios JavaScript (incluindo Turnstile), pontuação de reputação de IP, impressão digital TLS/JA4 e análise comportamental. O cookie cf_clearance da Cloudflare, uma vez obtido ao passar por um desafio em um navegador real, pode ser reutilizado dentro de seu TTL. A detecção depende muito da exposição do navigator.webdriver, conjuntos de cabeçalhos inconsistentes e hashes JA4 que não são de navegador. Para um passo a passo técnico completo dos métodos que funcionam, consulte nosso guia sobre como contornar a Cloudflare.
Akamai Bot Manager
A Akamai coleta dados do sensor do lado do cliente (canvas, fontes, fuso horário, WebGL) por meio de JavaScript injetado e os valida no lado do servidor em relação ao token do cookie abck. Ela cruza referências de impressões digitais TLS/JA3 e tokens de sessão simultaneamente, portanto, corrigir apenas uma camada não é suficiente. A Akamai é comum em sites de varejo, companhias aéreas e financeiros corporativos. Conjuntos de criptografia incompatíveis por si só podem acionar um bloqueio suave ou 403.
DataDome
O DataDome protege contra scraping de navegador e scraping de API com pontuação em tempo real baseada em ML. Ele valida IP ASN, cadência de solicitação, entropia de cabeçalho e sinais JavaScript do lado do cliente juntos. Validações com falha retornam uma página distinta “Acesso negado. Desenvolvido por DataDome”. A automação completa do navegador com IPs residencialis móveis e sessões persistentes tem um desempenho significativamente melhor contra o DataDome do que clientes HTTP brutos.
PerimeterX / HUMAN
A PerimeterX (agora HUMAN Security) é especializada em análise comportamental, rastreando movimentos do mouse, teclas digitadas, profundidade de rolagem, eventos de foco/desfoque e tempo em uma sessão completa para construir uma impressão digital comportamental. Ela compara as sessões com as linhas de base humanas e atribui pontuações aos bots. Notavelmente, ela usa uma estratégia de aplicação retardada, permitindo que os bots suspeitos naveguem livremente enquanto acumulam evidências comportamentais antes do bloqueio. Isso significa que suas primeiras solicitações podem ser bem-sucedidas antes que um bloqueio seja acionado.
Comparação: mecanismos de bloqueio e contramedidas
| Mecanismo de bloqueio | Técnica recomendada | Solução da Bright Data |
|---|---|---|
| Banimento de IP/limite de taxa | Rotação de IPs com proxies | Proxies residenciais (mais de 150 milhões de IPs) |
| Detecção de IP de datacenter | Use proxies residenciais ou móveis | Proxies de ISP, proxies móveis |
| Impressão digital TLS | curl_cffi com representação do navegador |
Web Unlocker (correspondência TLS automática) |
| Impressão digital do navegador | Navegador sem interface + plug-ins furtivos | Navegador de scraping (stealth integrado) |
| Desafios CAPTCHA | Solucionador automático de CAPTCHA | Web Unlocker (solucionador integrado) |
| Análise comportamental | Randomização de tempo + simulação de ações humanas | Navegador de scraping (comportamento semelhante ao humano) |
| Armadilhas honeypot | Ignorar links ocultos | Navegador de scraping (navegação inteligente) |
| Desafios JavaScript | Renderização completa do navegador | Navegador de scraping, Web Unlocker |
| Bloqueio geográfico | Proxies com segmentação geográfica | Segmentação em mais de 195 países |
| Limitação de taxa | Backoff exponencial | Web Unlocker (limitação de taxa gerenciada) |
Resumo
Não existe uma técnica única que derrote todos os sistemas anti-bot. A detecção moderna é feita em camadas, incluindo reputação de IP, impressão digital TLS, impressão digital do navegador e análise comportamental, e para contorná-la é necessário combinar todas as camadas simultaneamente.
Para desenvolvimento e scraping de baixo volume: comece com Proxies residenciais, cabeçalhos realistas, curl_cffi para gerenciamento de impressão digital TLS e Playwright com playwright-stealth para sites com muito JavaScript.
Para scraping em escala de produção: a complexidade de manter todas essas camadas manualmente, incluindo rotação de impressões digitais, atualização de plug-ins stealth, gerenciamento de pools de proxies e integração de solucionadores de CAPTCHA, é significativa. As soluções da Bright Data consolidam a rotação de IP, o gerenciamento de impressões digitais TLS, a resolução de CAPTCHA e a renderização do navegador em uma única chamada de API. É assim que você se concentra nos dados, não na infraestrutura.
Perguntas frequentes
Um site pode saber se você está fazendo scraping?
Sim. Os sites detectam Scrapers usando reputação de IP, análise de cabeçalho HTTP, impressão digital TLS, impressão digital do navegador, desafios CAPTCHA e análise comportamental. A maior parte da detecção ocorre em milissegundos antes que qualquer conteúdo da página seja exibido.
Por que os scrapers da web são bloqueados?
Os Scrapers são bloqueados quando fazem muitas solicitações de um único IP, enviam cabeçalhos HTTP não humanos, falham nas verificações de impressão digital TLS ou do navegador ou acionam desafios CAPTCHA. Proxies residenciais e navegadores furtivos reduzem todos esses riscos.
Qual é a melhor maneira de fazer scraping sem ser bloqueado?
A abordagem mais confiável combina Proxies residenciais rotativos, cabeçalhos de solicitação realistas, atrasos de tempo aleatórios e um navegador sem interface com plug-ins furtivos. Para scraping em escala de produção, uma solução gerenciada como o Web Unlocker da Bright Data lida com tudo isso automaticamente, consolidando a rotação de IP, o gerenciamento de impressões digitais TLS, a resolução de CAPTCHA e a renderização do navegador em uma única chamada de API.
O scraping de dados é legal?
O Scraping de dados acessíveis ao público é geralmente legal na maioria das jurisdições, especialmente para dados não pessoais e sem direitos autorais. Sempre verifique o robots.txt e os Termos de Serviço do site de destino. O Scraping de dados pessoais pode ser restrito pelo GDPR, CCPA e leis semelhantes. Nos EUA, a decisão hiQ v. LinkedIn afirmou que o Scraping de dados públicos não viola a Lei de Fraude e Abuso de Computadores.
O que é impressão digital TLS?
A impressão digital TLS identifica o tipo de cliente (navegador, bot ou script) analisando a combinação única de conjuntos de criptografia, versão TLS e extensões usadas durante o handshake HTTPS. Os sistemas antibot usam hashes JA3 e JA4 para bloquear ferramentas de scraping conhecidas, como a biblioteca de solicitações do Python. A principal implicação: mesmo cabeçalhos HTTP perfeitamente realistas não ajudarão se sua pilha TLS se parecer com OpenSSL em vez de Chrome.
Por que os proxies residenciais funcionam melhor do que os proxies de datacenter?
Os proxies residenciais encaminham o tráfego por meio de endereços IP reais atribuídos pelo ISP. Os sistemas antibot verificam o ASN (Autonomous System Number) de cada IP de entrada. Os IPs de datacenter pertencem a ASNs bem conhecidos (AWS, GCP, etc.) que são bloqueados por padrão em sites de alta segurança. Os IPs residencialis pertencem a ISPs como Comcast ou BT, tornando-os indistinguíveis do tráfego real do usuário na camada de rede. Para uma análise completa das diferenças de desempenho, consulte nossa comparação entre Proxy de datacenter e Proxy residencial.