Proxy não suporta o protocolo necessário: o que fazer
Você configurou o proxy, iniciou o script — e recebeu o erro "Protocol not supported" ou "Connection refused". O problema de incompatibilidade de protocolos é mais comum do que se imagina. Vamos analisar por que isso acontece e como resolver a situação sem trocar de provedor.
Quais protocolos os proxies utilizam
Antes de resolver o problema, é importante entender a diferença entre os protocolos. Cada um tem sua área de aplicação e limitações.
| Protocolo | Portas Padrão | Características |
|---|---|---|
| HTTP | 80, 8080, 3128 | Apenas tráfego HTTP, pode modificar cabeçalhos |
| HTTPS (CONNECT) | 443, 8443 | Tunelamento via HTTP CONNECT, criptografia |
| SOCKS4 | 1080 | Conexões TCP, sem autenticação, sem UDP |
| SOCKS5 | 1080, 1081 | TCP e UDP, autenticação, DNS via proxy |
Conflitos Típicos:
- Selenium e Puppeteer exigem HTTP/HTTPS, mas você tem SOCKS5
- Bots do Telegram funcionam via SOCKS5, mas o proxy só suporta HTTP
- Clientes de Torrent exigem SOCKS5 com UDP, mas o proxy é SOCKS4
- Aplicações de jogos exigem UDP, mas proxies HTTP não o suportam
Diagnóstico: determinando o protocolo do proxy
Se o provedor não especificou o protocolo explicitamente ou você está em dúvida, teste o proxy por conta própria.
Teste via curl
Testando o protocolo HTTP:
# Proxy HTTP
curl -x http://proxy_ip:port http://httpbin.org/ip
# Com autenticação
curl -x http://user:pass@proxy_ip:port http://httpbin.org/ip
Testando SOCKS5:
# Proxy SOCKS5
curl -x socks5://proxy_ip:port http://httpbin.org/ip
# SOCKS5 com DNS via proxy (socks5h)
curl -x socks5h://proxy_ip:port http://httpbin.org/ip
Se o comando retornar o endereço IP do proxy, o protocolo foi determinado corretamente. Um erro como Connection refused ou Unsupported proxy indica que o protocolo está incorreto.
Teste via Python
import requests
proxy_ip = "proxy_ip:port"
# Teste HTTP
try:
r = requests.get("http://httpbin.org/ip",
proxies={"http": f"http://{proxy_ip}"},
timeout=10)
print(f"HTTP funciona: {r.json()}")
except Exception as e:
print(f"HTTP não funciona: {e}")
# Teste SOCKS5 (requer pip install requests[socks])
try:
r = requests.get("http://httpbin.org/ip",
proxies={"http": f"socks5://{proxy_ip}"},
timeout=10)
print(f"SOCKS5 funciona: {r.json()}")
except Exception as e:
print(f"SOCKS5 não funciona: {e}")
Detecção Automática
Script para iterar sobre protocolos:
import requests
def detect_protocol(proxy_address):
protocols = ["http", "https", "socks4", "socks5", "socks5h"]
for proto in protocols:
try:
proxies = {
"http": f"{proto}://{proxy_address}",
"https": f"{proto}://{proxy_address}"
}
r = requests.get("http://httpbin.org/ip",
proxies=proxies, timeout=5)
if r.status_code == 200:
return proto
except:
continue
return None
result = detect_protocol("proxy_ip:port")
print(f"Protocolo detectado: {result}")
Conversão de HTTP para SOCKS e vice-versa
Se o proxy suporta um protocolo diferente do exigido pelo seu software, use um conversor local.
Privoxy: HTTP → SOCKS
O Privoxy aceita requisições HTTP e as encaminha através de um proxy SOCKS.
Instalação:
# Ubuntu/Debian
sudo apt install privoxy
# macOS
brew install privoxy
# Windows — baixar do site oficial
Configuração (arquivo /etc/privoxy/config):
# Escuta na porta local 8118 (HTTP)
listen-address 127.0.0.1:8118
# Encaminha através do SOCKS5 externo
forward-socks5 / socks_proxy_ip:1080 .
# Com autenticação
forward-socks5 / user:pass@socks_proxy_ip:1080 .
Agora, seu software se conecta a 127.0.0.1:8118 via HTTP, e o tráfego é roteado pelo SOCKS5.
Gost: conversor universal
Gost é uma ferramenta poderosa para qualquer transformação de protocolo.
# Proxy HTTP na entrada → SOCKS5 na saída
gost -L http://:8080 -F socks5://socks_proxy_ip:1080
# SOCKS5 na entrada → HTTP na saída
gost -L socks5://:1080 -F http://http_proxy_ip:8080
# Com autenticação em ambas as pontas
gost -L http://local_user:local_pass@:8080 \
-F socks5://remote_user:remote_pass@proxy_ip:1080
Conversor em Python
Um conversor minimalista para tarefas simples:
# pip install pproxy
# HTTP na entrada, SOCKS5 na saída
pproxy -l http://:8080 -r socks5://proxy_ip:1080
# SOCKS5 na entrada, HTTP na saída
pproxy -l socks5://:1080 -r http://proxy_ip:8080
Configuração de túneis locais
Às vezes, a conversão não é suficiente — é necessário um túnel completo.
Túnel SSH sobre proxy HTTP
Se você tem um servidor SSH e um proxy HTTP, pode criar um SOCKS5:
# Cria um SOCKS5 em localhost:1080 através do proxy HTTP
ssh -D 1080 -o ProxyCommand="nc -X connect -x http_proxy:8080 %h %p" user@ssh_server
Stunnel para HTTPS
Se você precisa de um proxy HTTPS, mas só tem HTTP:
# stunnel.conf
[https-proxy]
client = yes
accept = 127.0.0.1:8443
connect = http_proxy_ip:8080
protocol = connect
protocolHost = target_host:443
Configurando o software para o protocolo disponível
Às vezes, é mais fácil configurar o software para o protocolo disponível do que converter o tráfego.
Selenium com diferentes protocolos
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Proxy HTTP (método padrão)
options = Options()
options.add_argument('--proxy-server=http://proxy_ip:8080')
# Proxy SOCKS5
options.add_argument('--proxy-server=socks5://proxy_ip:1080')
# Para Firefox com SOCKS5
from selenium.webdriver.firefox.options import Options as FirefoxOptions
profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.socks", "proxy_ip")
profile.set_preference("network.proxy.socks_port", 1080)
profile.set_preference("network.proxy.socks_version", 5)
aiohttp com SOCKS
# pip install aiohttp-socks
import aiohttp
from aiohttp_socks import ProxyConnector
async def fetch_with_socks():
connector = ProxyConnector.from_url('socks5://proxy_ip:1080')
async with aiohttp.ClientSession(connector=connector) as session:
async with session.get('http://httpbin.org/ip') as response:
return await response.json()
Bots do Telegram via HTTP
Se a biblioteca do Telegram exigir SOCKS5, mas você tiver HTTP:
# python-telegram-bot com proxy HTTP
from telegram.ext import ApplicationBuilder
application = (
ApplicationBuilder()
.token("YOUR_TOKEN")
.proxy_url("http://proxy_ip:8080") # Funciona com HTTP
.build()
)
Dica: Muitas bibliotecas modernas suportam ambos os protocolos. Verifique a documentação — talvez seja suficiente alterar o esquema de URL de
socks5://parahttp://.
Como escolher um proxy com o protocolo correto
Para evitar problemas de protocolo, defina os requisitos com antecedência.
Matriz de Compatibilidade
| Tarefa | Protocolo Recomendado | Porquê |
|---|---|---|
| Web Scraping | HTTP/HTTPS | Amplo suporte, configuração simples |
| Automação de Navegador | HTTP ou SOCKS5 | Depende do navegador e do framework |
| Bots do Telegram, Discord | SOCKS5 | Requisitos das bibliotecas |
| Torrents | SOCKS5 com UDP | DHT e PEX usam UDP |
| Jogos, VoIP | SOCKS5 com UDP | Baixa latência, tráfego UDP |
| Requisições de API | HTTP/HTTPS | APIs REST funcionam via HTTP |
O que observar ao escolher um provedor
- Lista de protocolos suportados — deve ser explicitamente indicada
- Capacidade de alternância — alguns provedores dão acesso ao mesmo IP através de portas/protocolos diferentes
- Suporte a UDP para SOCKS5 — nem todos os proxies SOCKS5 suportam UDP
- Documentação de configuração — exemplos para diferentes linguagens e ferramentas
Proxies residenciais geralmente suportam HTTP/HTTPS e SOCKS5 simultaneamente, o que elimina a maioria dos problemas de compatibilidade. Proxies de datacenter são mais frequentemente limitados a HTTP/HTTPS.
Checklist antes da compra
- Determine qual protocolo seu software exige
- Verifique se o UDP é necessário (jogos, torrents, VoIP)
- Confirme com o provedor o suporte ao protocolo desejado
- Solicite acesso de teste para verificar a compatibilidade
- Prepare um plano B — um conversor local
Conclusão
A incompatibilidade de protocolos é um problema solucionável. Na maioria dos casos, um conversor local como Privoxy ou Gost é suficiente. Para projetos de longo prazo, é mais vantajoso escolher um proxy que suporte o protocolo necessário desde o início.
Para tarefas que exigem flexibilidade na escolha do protocolo, proxies residenciais com acesso multiprotocolo são adequados — mais detalhes em proxycove.com.