Lidando com proteção anti-bot
Sites modernos usam detecção avançada de bots. Este guia explica como a FourA lida com sistemas anti-bot e como maximizar sua taxa de sucesso.
Como a detecção de bots funciona
Os sites usam várias camadas de proteção:
- Reputação de IP: Data centers e endereços de proxy conhecidos são bloqueados
- Wire fingerprinting: Cada cliente HTTP possui uma assinatura de handshake única que os sites podem detectar
- Browser fingerprinting: O JavaScript verifica indicadores de navegadores headless
- Análise comportamental: Padrões de request, tempo e fluxo de navegação
- CAPTCHAs: Desafios visuais como última linha de defesa
Provedores comuns de anti-bot incluem Cloudflare, DataDome, PerimeterX e Akamai Bot Manager.
Caminho mais rápido: Auto
Se você ainda não conhece o nível de proteção, chame /api/auto/ com uma substring validate.data.accept que apenas a página real contém. O Auto percorre uma escada consciente dos custos (sonda barata, proxy rotacionado, renderização no navegador, navegador via proxy) e para no primeiro degrau que retorna uma response que suas regras aceitam. Em chamadas repetidas para o mesmo host, uma sessão quente é reproduzida em vez disso, para que a segunda chamada seja barata.
curl -X POST https://eu.api.foura.ai/api/auto/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://protected-site.com/product/42",
"validate": {"data": {"accept": ["Add to cart"]}}
}'
Sem o validate.data.accept, o auto não consegue distinguir um 200 real de um intersticial de desafio retornado com status 200 e pode retornar o desafio como sucesso. Consulte o guia do Smart Fetch para o tutorial completo.
Como a FourA ajuda em cada camada
Requisições realistas no nível da rede
O único endpoint (POST /api/single/) emite características de handshake que correspondem a um navegador real. Isso passa pelas verificações mais comuns no nível da rede sem a sobrecarga de executar um navegador completo.
Ative o unblocker para também injetar headers de navegador realistas (User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding). O unblocker está ativado por padrão; defina false apenas para enviar uma assinatura de cliente simples.
{
"method": "GET",
"url": "https://protected-site.com/data",
"unblocker": true
}
Renderização de Navegador Real
O endpoint do navegador (POST /api/browser/) executa uma instância completa do navegador Chrome. Combinado com patches de antidetecção, ele passa pela maioria das verificações de fingerprint baseadas em JavaScript. unblocker no Browser aciona o resolvedor automático de defesas (aprovação do Turnstile e bloqueios semelhantes); deixe-o ativado, a menos que você queira a página de desafio original de volta.
Rotação de Proxy
O endpoint do proxy (POST /api/proxy/) alterna automaticamente entre proxies residenciais e de data center. Se um IP for bloqueado, a próxima tentativa usará um diferente. Use ignoreProxies em uma chamada subsequente para ignorar as saídas que você já esgotou; use maxTries (padrão 5, máximo 90) para controlar a intensidade do esforço.
Saídas com Escopo de País
Passe exitCountries em /api/proxy/ para restringir a seleção a proxies cujo país visível ao alvo corresponda a uma allowlist rigorosa. Os valores são códigos de duas letras (["CZ", "GB"]), aparados, em letras maiúsculas e deduplicados. A FourA nunca recorre a um país não solicitado; se o pool atual não tiver correspondência, a response retorna code: "no_eligible_proxy" com o escopo normalizado em details.exitCountries para que você possa tentar novamente mais tarde sem afrouxar o requisito.
curl -X POST https://eu.api.foura.ai/api/proxy/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"maxTries": 5,
"exitCountries": ["CZ", "GB"],
"request": {"method": "GET", "url": "https://target.example/pricing"}
}'
A resposta inclui exitCountry quando o escopo foi solicitado. Verifique se ele pertence à sua allowlist antes de confiar no payload, depois reutilize o ID proxy retornado em qualquer chamada de Browser subsequente para que a renderização do JavaScript ocorra pela mesma saída.
O FourA informa o que bloqueou você
Você não precisa adivinhar qual sistema bloqueou uma requisição. Quando um alvo executa uma verificação de bot, a resposta o nomeia.
POST /api/single/ePOST /api/proxy/retornam um objetodefense:defense.vendoré o sistema,defense.solveddiz se a verificação foi aprovada, edefense.presentlista tudo o que foi reconhecido nessa resposta.POST /api/browser/retornadefenseSolvedmaisdefenses.presentedefenses.cleared.
{
"status": 200,
"data": "<!doctype html>...",
"defense": {
"vendor": "sgcaptcha",
"solved": true,
"present": ["sgcaptcha"],
"cookie": "_I_=<clearance>"
}
}
Duas regras decorrem disso:
solved: falsesignifica que o corpo pode ser o desafio, não a página. A FourA nunca apresenta um desafio não resolvido como conteúdo, portanto, verifique a flag antes de fazer o parsing.- Uma solução concede a você a liberação. Quando
defense.cookieestiver presente, envie-o de volta como um headerCookiena mesma saída com o mesmo User-Agent, e os requests subsequentes pularão a verificação completamente.
A FourA reconhece Cloudflare, SiteGround, DataDome, PerimeterX, Akamai, Incapsula, AWS WAF, hCaptcha, reCAPTCHA e o próprio desafio do eBay. Reconhecer é mais amplo do que liberar: um sistema que podemos nomear, mas não liberar, é reportado e nunca altera o que o request custa. Consulte Anti-Bot Defenses para obter todos os campos, a divisão atual entre liberar e detectar e um exemplo de replay.
Estratégia por Nível de Proteção
Proteção Desconhecida
Use auto. Ele faz testes baratos primeiro e só escala até onde o alvo o força, para que você pague pela descoberta apenas uma vez por host.
Proteção Baixa (maioria dos sites)
Use o endpoint único com unblocker. A correspondência no nível da rede é suficiente.
curl -X POST https://eu.api.foura.ai/api/single/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"method": "GET", "url": "https://news-site.com/article", "unblocker": true}'
Proteção Média (Cloudflare, WAF básico)
Use o endpoint do navegador para passar por desafios JavaScript:
curl -X POST https://eu.api.foura.ai/api/browser/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://protected-site.com/data", "timeout_ms": 15000}'
Alta proteção (DataDome, PerimeterX)
Use o endpoint do proxy com múltiplas tentativas de repetição:
curl -X POST https://eu.api.foura.ai/api/proxy/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"maxTries": 10,
"request": {
"method": "GET",
"url": "https://heavily-protected.com/prices",
"unblocker": true
}
}'
Para desafios de WAF em cadeia (Cloudflare "Just a moment", Vercel Security Checkpoint, Akamai Bot Manager) onde você precisa da página renderizada após o desafio ser superado, consulte as Receitas de MCP. A receita "Página protegida: proxy primeiro, browser quando JavaScript é necessário" mostra exatamente a transição de proxy para browser.
Melhores Práticas
Comece com auto para alvos desconhecidos. Passe uma regra
validate, deixe a escada escolher o degrau mais barato e, em seguida, leiameta.rungna response para ver qual motor funcionou. Uma vez que você souber, chame esse motor diretamente para o tráfego repetido.Reutilize a sessão vencedora. Após uma chamada auto, a
sessionretornada (proxy ID + cookies + userAgent) pode ser reproduzida através de/api/single/ou/api/browser/para páginas subsequentes no mesmo host, pelo preço do Single.Respeite os rate limits. Mesmo com a rotação de proxy, enviar centenas de requests por segundo para um único site acionará a detecção comportamental. Espace seus requests em pelo menos 1 a 2 segundos.
Mantenha
unblockerativado. Para requests Single, Proxy e Browser,unblocker: true(o padrão) injeta headers de browser realistas automaticamente. Desative-o apenas quando você precisar especificamente de uma assinatura de cliente simples ou de uma página de desafio bruta.Monitore as taxas de sucesso. Verifique as métricas do Dashboard para acompanhar sua taxa de sucesso ao longo do tempo. Uma queda repentina geralmente significa que o site alvo atualizou sua proteção.
Pule saídas queimadas. Se uma chamada
/api/proxy/ou/api/auto/retornou um proxy ID que começou a falhar, passe-o emignoreProxiesna próxima chamada para que o FourA escolha uma saída diferente.Leia
defenseantes de tentar novamente. O nome do fornecedor informa se vale a pena tentar um perfil de browser diferente, se você precisa de uma renderização completa ou se a verificação é uma que ninguém passa sem um serviço de resolução.Mude o browser que você apresenta. Alguns alvos aceitam um browser e recusam outro. Defina
browser,osouversionem Single e Proxy, e leiaGET /api/profilespara o catálogo atual. Detalhes na referência do endpoint.
O que o FourA não consegue fazer bypass
Alguns cenários exigem tratamento adicional fora da API:
- Conteúdo protegido por login: O FourA não gerencia logins de longa duração para você. O endpoint do navegador aceita
cookiespor request, carregue os seus cookies de sessão você mesmo. - CAPTCHAs interativos: reCAPTCHA e hCaptcha precisam de um serviço de resolução. O FourA reconhece ambos e os reporta em
defense.present, mas não os resolve. O Turnstile é gerenciado pelo Browser. - Conteúdo com restrição geográfica: use
exitCountriesem/api/proxy/para fixar a seleção nos países permitidos. Sites que também restringem por ISP ou ASN (algumas casas de apostas licenciadas no país, certos serviços governamentais) ainda podem bloquear saídas residenciais genéricas, o request retornano_eligible_proxyquando o pool atual não tem uma saída correspondente. - Sites com restrições legais: Sempre certifique-se de que a sua coleta de dados está em conformidade com os termos de serviço do site de destino e as leis aplicáveis.
Próximos passos
- Smart Fetch (Auto): Análise detalhada sobre
/api/auto/ - Escolhendo o endpoint certo: Guia de decisão para endpoints
- Problemas comuns: Corrija erros 403 e bloqueios de CAPTCHA
- Endpoints da API: Referência completa de parâmetros incluindo
exitCountries - Defesas Anti-Bot: O campo
defense, a lista de fornecedores e a repetição de liberação - Receitas MCP: Modelos de fluxo de trabalho incluindo a cadeia proxy-first-then-browser