Voltar ao blog

Como Resolver Problemas de Autenticação de Proxy: Guia Completo

Por que o proxy retorna 407 ou desconecta? Analisamos as causas de erros de autenticação e mostramos como diagnosticá-los e corrigi-los.

📅10 de dezembro de 2025
```html

Como resolver problemas de autenticação de proxy: um guia completo

Código 407, redefinição de conexão, timeout ao conectar — sintomas familiares? Erros de autenticação de proxy ocorrem constantemente, mas em 90% dos casos são resolvidos em poucos minutos. Vamos analisar as causas e mostrar métodos concretos de diagnóstico.

Como funciona a autenticação de proxy

Antes de procurar o erro, é importante entender o mecanismo. Os servidores proxy usam dois métodos principais de autenticação:

Autenticação por login e senha (Basic Auth) — o cliente envia o cabeçalho Proxy-Authorization com as credenciais codificadas em Base64. Este é o método padrão para proxies HTTP.

Autenticação por IP (IP Whitelist) — o servidor verifica o endereço IP do cliente em uma lista de permissões. Sem logins — se o seu IP estiver na lista, o acesso é concedido.

Para proxies SOCKS5, o esquema é semelhante, mas a autenticação ocorre no nível do protocolo, e não através de cabeçalhos HTTP.

Erros comuns e seus significados

Erro O que significa Causa provável
407 Proxy Authentication Required O proxy exige autorização Credenciais não fornecidas ou incorretas
403 Forbidden Acesso negado IP não está na lista de permissões, assinatura expirada
Connection reset Conexão redefinida Protocolo incorreto, bloqueio por firewall
Connection timeout Tempo limite de conexão Host/porta incorretos, problemas de rede
SOCKS5 auth failed Falha na autenticação SOCKS Dados incorretos ou método incompatível

Problemas com credenciais

A causa mais comum do erro 407 é um erro de digitação ou confusão com os dados. Verifique:

  • Cópia com espaços — ao copiar do painel de controle, muitas vezes são capturados espaços invisíveis no início ou fim da string
  • Sensibilidade a maiúsculas/minúsculas — logins e senhas diferenciam maiúsculas de minúsculas
  • Confusão de contas — os dados da área do cliente e os dados do proxy geralmente são diferentes
  • Prazo de validade expirado — a assinatura terminou, mas os dados ainda parecem válidos

Teste rápido — tente se autenticar via curl:

curl -v -x http://user:password@proxy.example.com:8080 https://httpbin.org/ip

O sinalizador -v mostrará todo o processo de conexão, incluindo a resposta do servidor proxy.

Lista de permissão de IP: armadilhas

A autenticação por IP parece conveniente — não é preciso enviar senhas no código. Mas existem suas próprias armadilhas:

IP dinâmico do provedor. Provedores de internet residencial mudam o IP ao reconectar o roteador ou em um cronograma. Funcionava ontem, hoje dá 403.

NAT e IP compartilhado. Se você estiver atrás de um NAT corporativo, seu IP externo é compartilhado por dezenas de colegas. Adicionar tal IP à lista de permissões é uma falha de segurança.

VPNs e servidores em nuvem. O IP do seu VPS pode mudar durante a migração ou reinicialização. AWS, Google Cloud e outros provedores não garantem IP estático sem um IP Elástico/Estático.

Como descobrir seu IP externo atual:

curl https://api.ipify.org
# ou
curl https://ifconfig.me

Compare o resultado com o IP na lista de permissões do provedor de proxy.

Codificação e caracteres especiais na senha

Se a senha contiver caracteres especiais (@, :, #, %), eles podem quebrar o formato URL do proxy. O caractere @ é especialmente traiçoeiro — ele separa as credenciais do host.

Exemplo de problema: a senha p@ss:word na string http://user:p@ss:word@proxy.com:8080 será analisada incorretamente.

Solução — Codificação URL de caracteres especiais:

Caractere Codificação
@ %40
: %3A
# %23
% %25
/ %2F

A senha p@ss:word se transforma em p%40ss%3Aword.

Em Python, a codificação é feita automaticamente:

from urllib.parse import quote

password = "p@ss:word"
encoded_password = quote(password, safe='')
print(encoded_password)  # p%40ss%3Aword

Diagnóstico passo a passo

Quando o proxy não funciona, verifique em ordem:

Passo 1: Verifique a acessibilidade do servidor

# Verificação de conexão TCP
nc -zv proxy.example.com 8080

# Ou via telnet
telnet proxy.example.com 8080

Se a conexão não for estabelecida, o problema está no nível da rede: host ou porta incorretos, ou firewall.

Passo 2: Teste a autenticação sem o aplicativo

# Proxy HTTP
curl -v --proxy-user "username:password" -x http://proxy.example.com:8080 https://httpbin.org/ip

# Proxy SOCKS5
curl -v --proxy-user "username:password" -x socks5://proxy.example.com:1080 https://httpbin.org/ip

Se o curl funcionar, mas seu aplicativo não — o problema está no código ou na configuração do aplicativo.

Passo 3: Verifique o protocolo

Um erro comum é usar um cliente HTTP para um proxy SOCKS ou vice-versa. Confirme o tipo de proxy com o provedor:

  • Proxy HTTP/HTTPS — funciona através de cabeçalhos, portas geralmente 8080, 3128, 8888
  • SOCKS4/SOCKS5 — protocolo binário, portas geralmente 1080, 1081

Passo 4: Verifique os logs do provedor

Muitos provedores exibem logs de conexão na área pessoal. Lá você pode ver: se a solicitação chegou ao servidor, quais credenciais foram enviadas e por que foi rejeitada.

Exemplos de código para diferentes linguagens

Python (requests)

import requests
from urllib.parse import quote

# Efetua a codificação de caracteres especiais na senha
username = "user123"
password = quote("p@ss:word", safe='')

proxies = {
    "http": f"http://{username}:{password}@proxy.example.com:8080",
    "https": f"http://{username}:{password}@proxy.example.com:8080"
}

try:
    response = requests.get(
        "https://httpbin.org/ip",
        proxies=proxies,
        timeout=10
    )
    print(response.json())
except requests.exceptions.ProxyError as e:
    print(f"Erro de proxy: {e}")

Python (aiohttp para requisições assíncronas)

import aiohttp
import asyncio
from aiohttp_socks import ProxyConnector

async def fetch_with_proxy():
    # Para SOCKS5
    connector = ProxyConnector.from_url(
        'socks5://user:password@proxy.example.com:1080'
    )
    
    async with aiohttp.ClientSession(connector=connector) as session:
        async with session.get('https://httpbin.org/ip') as response:
            return await response.json()

# Para proxy HTTP
async def fetch_with_http_proxy():
    async with aiohttp.ClientSession() as session:
        async with session.get(
            'https://httpbin.org/ip',
            proxy='http://user:password@proxy.example.com:8080'
        ) as response:
            return await response.json()

Node.js (axios)

const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');

const proxyUrl = 'http://user:password@proxy.example.com:8080';
const agent = new HttpsProxyAgent(proxyUrl);

axios.get('https://httpbin.org/ip', {
    httpsAgent: agent
})
.then(response => console.log(response.data))
.catch(error => {
    if (error.response?.status === 407) {
        console.log('Erro de autenticação de proxy');
    }
});

PHP (cURL)

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://httpbin.org/ip',
    CURLOPT_PROXY => 'proxy.example.com:8080',
    CURLOPT_PROXYUSERPWD => 'user:password',
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 10
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo 'Erro: ' . curl_error($ch);
} elseif ($httpCode === 407) {
    echo 'Erro de autenticação de proxy';
} else {
    echo $response;
}

curl_close($ch);

Selenium (Python)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# Para proxy com autenticação no Selenium, é necessário um plugin
# A opção simples é usar um proxy com lista de permissões de IP

chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://proxy.example.com:8080')

# Para autenticação via extensão
# (requer a criação de manifest.json e background.js)

driver = webdriver.Chrome(options=chrome_options)
driver.get('https://httpbin.org/ip')

Dica: O Selenium funciona mal com proxies que exigem login/senha. Para automação de navegador, é melhor usar proxies residenciais com autenticação por IP — isso evitará problemas com janelas pop-up de autenticação.

Características de diferentes tipos de proxy

Os problemas de autenticação podem depender do tipo de proxy:

Proxies de data center geralmente usam credenciais estáticas. Se pararem de funcionar, verifique a validade ou o limite de tráfego.

Proxies residenciais frequentemente usam rotação. As credenciais podem incluir parâmetros de sessão no login (por exemplo, user-session-abc123). O formato incorreto é a causa dos erros.

Proxies móveis podem exigir parâmetros adicionais para troca de IP. Consulte a documentação do provedor — o formato das solicitações de rotação é diferente.

Lista de verificação para diagnóstico rápido

Salve esta lista para problemas futuros:

  1. O ping/telnet para o host e porta do proxy funciona?
  2. As credenciais foram copiadas sem espaços extras?
  3. Os caracteres especiais na senha foram codificados?
  4. O protocolo correto está sendo usado (HTTP vs SOCKS)?
  5. O IP foi adicionado à lista de permissões (se a autenticação por IP for usada)?
  6. A assinatura está ativa e o limite não foi excedido?
  7. O curl com as mesmas credenciais funciona?

Conclusão

A maioria dos erros de autenticação de proxy é resolvida verificando itens básicos: correção das credenciais, codificação de caracteres especiais, correspondência do IP na lista de permissões. Se as verificações simples não ajudarem — use o curl com o sinalizador -v para um diagnóstico detalhado.

Para tarefas de raspagem (scraping) e automação onde a estabilidade da conexão é crucial, é mais conveniente usar proxies residenciais com um sistema de autenticação flexível — mais detalhes em proxycove.com.

```