Voltar ao blog

Como Diagnosticar a Causa da Taxa de Sucesso Baixa

A taxa de sucesso do proxy é uma métrica crítica para qualquer projeto. Vamos entender como identificar a causa da queda e restaurar a eficiência.

📅3 de dezembro de 2025

Como diagnosticar a causa de uma taxa de sucesso baixa: guia passo a passo

Taxa de sucesso é o percentual de requisições bem-sucedidas do número total de tentativas. Quando esse indicador cai abaixo do normal, você perde dinheiro, tempo e dados. Mas pode haver dezenas de causas: desde configuração incorreta até bloqueios do servidor de destino. Neste artigo, vamos analisar uma abordagem sistemática para diagnóstico e encontrar a solução.

O que é taxa de sucesso e qual é a norma

Taxa de sucesso (SR) = (Requisições bem-sucedidas / Número total de requisições) × 100%

Os valores normais dependem do tipo de tarefa:

Tarefa SR Normal Nível Crítico
Análise de dados públicos 95–99% abaixo de 85%
Automação SMM 90–97% abaixo de 80%
Verificação de anúncios 98–99.5% abaixo de 95%
Integração de API 99–99.9% abaixo de 98%

Se a SR caiu 5–10% da sua linha de base — este é um sinal para diagnóstico. Se caiu 20%+ — ações urgentes são necessárias.

Primeiros passos do diagnóstico

Passo 1: Verifique logs e métricas

Colete dados dos últimos 24–72 horas:

  • Quando exatamente a SR caiu? (hora exata)
  • Qual percentual de requisições retorna erro 407 (Proxy Authentication Required)?
  • Qual percentual — 429 (Too Many Requests)?
  • Qual percentual — timeouts (connection timeout)?
  • A carga mudou (RPS — requisições por segundo)?

Passo 2: Teste isoladamente

Use um script simples para verificar o proxy sem sua aplicação:

import requests
import time

proxy = "http://proxy_ip:port"
proxies = {"http": proxy, "https": proxy}
target_url = "https://httpbin.org/ip"

success = 0
failed = 0

for i in range(100):
    try:
        response = requests.get(
            target_url, 
            proxies=proxies, 
            timeout=10,
            verify=False
        )
        if response.status_code == 200:
            success += 1
            print(f"✓ Tentativa {i+1}: sucesso")
        else:
            failed += 1
            print(f"✗ Tentativa {i+1}: status {response.status_code}")
    except Exception as e:
        failed += 1
        print(f"✗ Tentativa {i+1}: {str(e)}")
    time.sleep(0.5)

sr = (success / (success + failed)) * 100
print(f"\nTaxa de Sucesso: {sr:.1f}%")
print(f"Bem-sucedidas: {success}, Erros: {failed}")

Se este teste mostrar SR normal — o problema está no seu código ou configuração. Se a SR for baixa mesmo aqui — o problema está no proxy ou no servidor de destino.

Problemas do lado do proxy

Erro 407: Proxy Authentication Required

Causas:

  • Credenciais incorretas (login/senha)
  • Conta expirada
  • Endereço IP não está na lista branca (se necessário)
  • Rotação de IP não funciona ou está desativada

Solução:

import requests

# Formato correto para proxies residenciais
proxy = "http://login:password@proxy-host:port"
proxies = {"http": proxy, "https": proxy}

# Teste
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
print(response.text)

Sobrecarga do servidor proxy

Se todos os usuários do serviço estão enviando uma enorme quantidade de requisições simultaneamente, pode haver limitação por RPS (requisições por segundo). Isso é raro, mas acontece.

Verifique:

  • Seu RPS atual no pico
  • Limites do seu plano
  • Se há erros 429 nos logs

Solução: adicione atraso entre requisições ou atualize seu plano.

Qualidade dos endereços IP

Para proxies residenciais uma SR baixa pode significar que você está recebendo endereços bloqueados. Verifique:

  • Qual percentual de endereços IP retorna 403 Forbidden?
  • Os mesmos endereços se repetem?
  • Há um padrão — um país/região funciona, outro não?

Bloqueios e filtros do servidor de destino

Erro 429: Too Many Requests

O servidor de destino vê muitas requisições de um IP ou em geral. Soluções:

  • Adicione atraso: `time.sleep(random.uniform(1, 3))`
  • Use rotação de IP: cada requisição — novo IP
  • Reduza RPS: envie requisições sequencialmente, não em paralelo
  • Adicione headers realistas: User-Agent, Referer, Accept-Language

Erro 403 Forbidden

O servidor bloqueou seu IP (ou o IP do proxy). Isso pode ser:

  • Filtro por geolocalização
  • Lista negra de serviços proxy
  • Detector de bot (JavaScript, CAPTCHA)

Solução: use proxies móveis ou proxies residenciais com rotação. Eles são mais difíceis de bloquear.

Erro 403: Verificação de User-Agent

Alguns serviços rejeitam requisições com User-Agent suspeito:

import requests
import random

user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15"
]

headers = {
    "User-Agent": random.choice(user_agents),
    "Accept-Language": "en-US,en;q=0.9",
    "Accept": "text/html,application/xhtml+xml",
    "Referer": "https://google.com"
}

response = requests.get(
    "https://target-site.com",
    headers=headers,
    proxies={"http": proxy, "https": proxy},
    timeout=10
)
print(response.status_code)

Erros no código do cliente

Tratamento incorreto de exceções

Erro comum: o código trata um erro de conexão como uma requisição falhada, mas não tenta reconectar:

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

# Forma correta com retries
session = requests.Session()
retry_strategy = Retry(
    total=3,
    backoff_factor=1,
    status_forcelist=[429, 500, 502, 503, 504],
    allowed_methods=["GET", "POST"]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("http://", adapter)
session.mount("https://", adapter)

try:
    response = session.get(url, proxies=proxies, timeout=10)
except requests.exceptions.RequestException as e:
    print(f"Erro: {e}")
    # Registre e passe para a próxima requisição

Timeouts incorretos

Se o timeout for muito curto (1–2 segundos), proxies lentos serão rejeitados:

  • Para análise comum: 10–30 segundos
  • Para proxies móveis: 15–45 segundos
  • Para API: 5–10 segundos

Erros SSL/TLS

Se você usar `verify=False`, isso pode mascarar problemas reais. É melhor atualizar certificados:

import requests
import certifi

# Correto
response = requests.get(
    url,
    proxies=proxies,
    verify=certifi.where(),  # Em vez de verify=False
    timeout=15
)

Problemas de rede e timeouts

Connection timeout vs Read timeout

A diferença é importante:

  • Connection timeout: proxy não responde (problema com proxy ou rede)
  • Read timeout: servidor de destino envia dados lentamente (problema do servidor de destino)
import requests

# timeout = (connection_timeout, read_timeout)
try:
    response = requests.get(
        url,
        proxies=proxies,
        timeout=(5, 15)  # 5 seg para conectar, 15 para ler
    )
except requests.exceptions.ConnectTimeout:
    print("Proxy não responde")
except requests.exceptions.ReadTimeout:
    print("Servidor de destino é lento")

Problemas de DNS

Se o servidor de destino não resolver, este não é um erro de proxy:

import socket

# Verifique DNS fora do proxy
try:
    ip = socket.gethostbyname("target-site.com")
    print(f"Resolvido: {ip}")
except socket.gaierror:
    print("Erro de DNS — site não encontrado")

Checklist de diagnóstico de SR baixa

  1. Estabeleça a linha de base: qual era a SR normal antes?
  2. Execute teste isolado (script acima) com 100 requisições
  3. Verifique logs: quais códigos HTTP dominam? (407, 429, 403, timeouts?)
  4. Se 407: verifique login/senha e lista branca de IP
  5. Se 429: adicione atraso entre requisições, use rotação de IP
  6. Se 403: verifique User-Agent, Referer, adicione headers realistas
  7. Se timeouts: aumente timeout, verifique RPS, use lógica de retry
  8. Verifique seu código: tratamento correto de exceções, timeouts corretos
  9. Verifique servidor de destino: está acessível diretamente (sem proxy)?
  10. Se nada mais funcionar: tente outro tipo de proxy ou outro provedor

Tabela de diagnóstico rápido

Código HTTP Causa Provável Solução
407 Credenciais de proxy incorretas Verifique login/senha, lista branca de IP
429 Muitas requisições Adicione atraso, use rotação de IP
403 IP bloqueado ou detector de bot Adicione headers realistas, use proxies móveis
Timeout Proxy lento ou servidor de destino sobrecarregado Aumente timeout, verifique RPS
Connection refused Servidor proxy inacessível Verifique IP:port, status do proxy

Conclusão

Taxa de sucesso baixa é um sintoma, não uma doença. Pode haver muitas causas: desde um erro de digitação no código até bloqueio pelo servidor de destino. O diagnóstico sistemático é a chave para a solução:

  1. Verifique métricas e logs
  2. Isole o problema (proxy vs servidor de destino vs seu código)
  3. Determine o tipo de erro (407, 429, 403, timeout)
  4. Aplique a solução correspondente

Para tarefas que exigem confiabilidade e SR alta, recomendamos proxies residenciais com rotação de IP. Eles são mais difíceis de detectar e mais estáveis. Tente um teste gratuito em proxycove.com e teste em sua tarefa.