Rotador de Proxies
Use esta skill quando um scraper precisar distribuir requisições entre vários proxies e parar de sobrecarregar aqueles que se tornaram inativos. O rotador entrega o próximo proxy saudável, conta falhas e desativa um proxy por um período de espera após falhar muitas vezes – depois dá a ele outra chance. Você fornece a lista de proxies; nada é comprometido.
Quando invocar
- O usuário diz: "rodar proxies", "distribuir requisições entre proxies", "parar de ser bloqueado por IP", "repetir através de outro proxy".
- O código na conversa faz muitas requisições de saída e precisa distribuí-las por um pool de proxies.
Quando NÃO invocar
- Uma única conexão é suficiente, ou o destino permite explicitamente seu volume – rodar proxies adiciona complexidade desnecessária.
- A intenção é evadir um bloqueio explícito ou abusar de um serviço; mantenha o uso dentro dos termos do destino.
Exemplo concreto
Entrada do usuário:
Tenho 5 proxies. Faça round-robin entre eles e pule qualquer um que começar a falhar.
Saída:
import requests
from rotator import ProxyRotator
rot = ProxyRotator.from_env() # PROXY_POOL="http://h1:8080,socks5://h2:1080,..."
for url in urls:
p = rot.get() # próximo proxy saudável
try:
r = requests.get(url, proxies=p.as_dict(), timeout=15)
rot.report(p, ok=r.ok) # alimenta o resultado de volta para que o pool se auto-cure
except Exception:
rot.report(p, ok=False) # muitas falhas -> desativado por um período de espera
Padrão a aplicar
- Carregue proxies do ambiente ou de um arquivo ignorado pelo git – nunca faça commit de URLs reais de proxy ou credenciais.
- Sempre chame
report(proxy, ok=...)após cada requisição para que proxies com falha sejam desativados automaticamente. - Ajuste
max_failsecooldownpara o destino; um cooldown curto recupera proxies instáveis, um longo descarta os ruins. - Execute
health_checkantes de um lote grande para desativar proxies mortos antecipadamente. - Trate o erro "nenhum proxy saudável" – recue e repita em vez de quebrar a execução.
Referência: assets/rotator.py.
Fonte
Extraído do uso em produção nos projetos de automação do autor. v1.0.0. Veja também: [[playwright-login-session]], [[pipeline-orchestrator]], [[cron-dispatch]].
→ Construa o bot executável completo com Trawlkit.