A rotação de proxy é uma muleta, não uma solução. A maioria das operações de scraping falha porque trata endereços IP como o único sinal que os sistemas anti-bot medem. A realidade é que gerenciadores de bots modernos — Akamai Bot Manager, Cloudflare Turnstile, Datadome — coletam impressões digitais de muito mais do que seu IP de origem. Um pool rotativo de proxies públicos gratuitos não lhe traz quase nada contra esses sistemas, e muitas vezes piora as coisas.
A Ilusão da Rotação de IP
Quando você rotaciona IPs a cada requisição, você se anuncia como um scraper. Padrões de navegação humana mostram sessões persistentes (sticky sessions) — um único IP por minutos ou horas, impressões digitais de navegador consistentes e intervalos de requisição previsíveis. Ferramentas como requests com um objeto Session e uma lista de proxies rotativos quebram todos esses sinais. O cabeçalho X-Akamai-Device-Fingerprint da Akamai e a correlação cf-request-id da Cloudflare podem vincular requisições de IPs diferentes quando parâmetros TLS, configurações HTTP/2 e temporização permanecem idênticos. O desafio JavaScript da Datadome verifica artefatos de navegador headless que sobrevivem a mudanças de proxy. Rotacionar IPs sem rotacionar a impressão digital completa do cliente é como trocar a placa do carro mas dirigir o mesmo veículo — as câmeras de pedágio ainda te identificam.
Para scraping de baixa taxa e baixo volume contra sites que usam apenas limitação de taxa básica baseada em IP (ex.: um limite de 10 requisições por minuto sem desafios JavaScript), um único IP residencial muitas vezes é suficiente. Eu executei scrapers por anos contra portais de dados governamentais e APIs públicas usando um IP estático e um time.sleep(2) educado. Nenhum proxy necessário. A regra é simples: se o site não exibe uma página de desafio ou um CAPTCHA após 50 requisições, você não precisa de rotação.
Além do Endereço IP: Fingerprinting
Sistemas anti-bot agora coletam dezenas de sinais por requisição. A string User-Agent é trivial de falsificar, mas a ordem de Accept-Language, Sec-CH-UA, Connection e Accept-Encoding não é. Mais criticamente, o TLS fingerprinting — padronizado no hash JA3 (veja JA3) — identifica a biblioteca do cliente pela ordem dos conjuntos de cifras e pela lista de extensões TLS. A biblioteca requests do Python (via urllib3) produz um hash JA3 que é distinto do Chrome 124. Tanto o Turnstile da Cloudflare quanto o Datadome verificam JA3. Rotacionar IPs mantendo a mesma pilha TLS faz cada requisição parecer o mesmo cliente automatizado, apenas saltando entre nós de saída. Proxies gratuitos agravam isso porque frequentemente executam versões desatualizadas do OpenSSL ou usam configurações TLS semelhantes a bots que já estão na lista negra.
O HTTP/2 fingerprinting vai além. O frame SETTINGS, os valores de atualização de janela e os parâmetros de concorrência de fluxo formam uma “impressão digital HTTP/2” única que o Bot Manager da Akamai rastreia entre sessões. Um pool de proxies rotativo que também não rotaciona a implementação HTTP/2 é trivial de agrupar. A única maneira de evadir essas verificações é usar um mecanismo de navegador real (Puppeteer, Playwright) ou uma pilha TLS/HTTP cuidadosamente construída que imite uma versão específica de navegador — e mesmo assim, você precisa persistir a mesma impressão digital entre requisições de uma determinada sessão.
A Economia dos Pools de Proxies Públicos Gratuitos
Listas de proxies públicos gratuitos têm uma taxa de falha de 60–80% em meus testes. A maioria dos proxies está morta na chegada, limitada pelo host ou já sinalizada por grandes gerenciadores de bots. A vida útil média de um proxy SOCKS5 gratuito extraído de um diretório público é inferior a 15 minutos. Manter um pool rotativo de 500 proxies significa que você queima milhares de IPs por hora, e 80% das suas requisições ou expiram ou retornam 403. A largura de banda não é confiável, picos de latência são comuns, e muitos proxies gratuitos injetam anúncios ou modificam corpos de resposta. Redes de proxies residenciais pagas (ex.: Bright Data, Oxylabs) oferecem taxas de sucesso de 95%+ e opções de sessão persistente, mas a um custo de $10–$20 por GB. Para escala, a matemática favorece proxies residenciais apenas quando você precisa contornar bloqueios baseados em IP em alvos de alto valor. Para todo o resto, um único IP limpo com ritmo adequado de requisições supera um pool gratuito caótico.
Quando a Rotação Realmente Funciona
A rotação de proxy é eficaz contra uma ameaça específica: limites de taxa baseados em IP que são redefinidos por IP. Se um site usa uma verificação simples de X-Forwarded-For ou um token bucket por IP, rotacionar após cada requisição contorna o limite. Isso é comum em sites de e-commerce menores e APIs legadas que nunca atualizaram sua detecção de bots. Nesses casos, até mesmo um pool de proxies gratuitos funciona — mas apenas se você implementar lógica de repetição que descarte proxies com falha e percorra rapidamente novos.
Aqui está um exemplo mínimo em Python usando requests e um loop de repetição com rotação. Ele assume uma lista de URLs de proxy em proxy_list e um alvo url:
import requests
from itertools import cycle
proxy_pool = cycle(proxy_list)
max_retries = 5
for attempt in range(max_retries):
proxy = next(proxy_pool)
try:
resp = requests.get(
url,
proxies={"http": proxy, "https": proxy},
timeout=10,
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..."}
)
if resp.status_code == 200:
break
except (requests.ConnectionError, requests.Timeout):
continue
else:
raise RuntimeError("All proxies failed")
Esse padrão funciona apenas quando a detecção do site é puramente baseada em IP. Adicione um time.sleep(random.uniform(1,3)) entre as requisições para imitar o tempo humano. Para sites que executam Turnstile ou Datadome, esse código falhará toda vez — a página de desafio retornará um 403 ou um CAPTCHA independentemente do proxy. Nesses casos, você precisa de um navegador headless com uma impressão digital real, não de uma lista de IPs rotativos.
Sessões persistentes (sticky sessions) — manter o mesmo IP para um conjunto de requisições relacionadas — são frequentemente mais eficazes do que a rotação por requisição. Muitos sites de e-commerce esperam um único IP para uma sessão de navegação (ex.: adicionar itens ao carrinho, finalizar compra). Rotacionar no meio da sessão aciona flags de fraude. Use um pool de proxies, mas atribua um IP por sessão, não por requisição. Proxies gratuitos raramente suportam sessões persistentes porque o mesmo IP é reutilizado por vários usuários; você verá contaminação cruzada de dados de sessão. Proxies residenciais pagos oferecem durações de sessão persistente (5–30 minutos) que se alinham ao comportamento natural de navegação.
Escolha a rotação apenas quando você entender a pilha de detecção do alvo. Teste primeiro com um único IP. Adicione rotação apenas se você atingir um limite de taxa. E nunca confie em proxies gratuitos para produção — a taxa de falha deles custará mais em tempo de engenharia e dados perdidos do que um plano residencial barato.