Um cliente de jogo que ignora o proxy do navegador, um Telegram que pede um "servidor SOCKS5", um scraper cujas consultas DNS não podem sair da rede do seu escritório: os três casos levam ao mesmo protocolo. O SOCKS5 abre uma conexão em seu nome e passa os bytes nos dois sentidos, seja qual for o tráfego.
Este guia cobre o SOCKS4 e o SOCKS5, o handshake passo a passo, UDP e DNS pelo proxy, a configuração, o que verificar na compra e os erros mais comuns. O código foi testado contra um servidor SOCKS5 local.
O que é SOCKS?
Um proxy SOCKS é um servidor intermediário entre o seu programa e o servidor de destino. O cliente diz ao proxy qual endereço e qual porta quer alcançar, o proxy abre essa conexão e, a partir daí, repassa o tráfego entre os dois lados. O destino vê o endereço IP do proxy, e não o seu.
Diferente de um proxy HTTP, o SOCKS não trabalha na camada de aplicação: não lê os pacotes nem os modifica, apenas repassa o tráfego como está. Por isso ele fica na camada 5 do modelo OSI, abaixo do HTTP, e por isso os proxies SOCKS se dão bem com programas que falam protocolos muito diferentes: um cliente de jogo, um programa de e-mail e uma sessão SSH podem usar o mesmo proxy. O próprio OpenSSH vira um servidor SOCKS local quando é iniciado com ssh -D (manual do OpenSSH).
Existem duas versões principais: SOCKS4 e SOCKS5. Quando um provedor fala em "SOCKS" hoje, ele quer dizer SOCKS5.
O que é o SOCKS4, o protocolo antigo?
O SOCKS4 surgiu antes do SOCKS5 e cobre o básico: só conexões TCP. A requisição dele é mínima: um byte de versão, um comando, a porta de destino, o endereço IPv4 de destino e um ID de usuário (especificação do SOCKS4).
Principais características do SOCKS4
- Só TCP: CONNECT para conexões de saída (páginas web, e-mail e outros aplicativos TCP) e BIND para as de entrada. Não há UDP.
- Só IPv4: o campo de destino tem quatro bytes, então só dá para alcançar destinos IPv4.
- Sem senha: o ID de usuário identifica quem se conecta, mas não faz login. Na prática, os servidores SOCKS4 controlam o acesso pelo IP do cliente.
- DNS no cliente: o cliente precisa resolver o nome de domínio e enviar um IP. A extensão SOCKS4a corrigiu isso ao permitir que o cliente envie o nome para o proxy resolver (especificação do SOCKS4a).
O SOCKS4 sobrevive em ferramentas antigas e em proxies internos simples; fora disso, você quase não vai encontrá-lo. Os clientes de jogos modernos precisam de UDP e de nomes de host, e por isso quem procura um proxy para jogos escolhe SOCKS5. Um servidor que só fala SOCKS5 recusa requisições SOCKS4, então confira qual versão a sua ferramenta envia.
O que é um proxy SOCKS5?
O SOCKS5 é a versão atual do protocolo, publicada em 1996 como RFC 1928. Ele faz o mesmo que o SOCKS4 e acrescenta os recursos de que os aplicativos modernos precisam:
- TCP e UDP: além de CONNECT e BIND, tem o comando UDP ASSOCIATE, então transporta tráfego web, e-mail, transferência de arquivos, chamadas de voz (VoIP), consultas DNS e tráfego de jogos.
- Autenticação: cliente e servidor combinam um método: nenhum, GSSAPI ou usuário e senha, como define a RFC 1929. Assim, só clientes autorizados usam o proxy. Provedores comerciais usam usuário e senha ou uma whitelist de IP.
- IPv6: o destino pode ser um endereço IPv4, um endereço IPv6 ou um nome de domínio.
- DNS no proxy: o cliente pode enviar o nome de domínio; o proxy o resolve, e a consulta não passa pela sua própria rede.
A configuração pede um host, uma porta e, geralmente, usuário e senha. O que muda é o suporte das ferramentas: o Chrome não consegue enviar senha SOCKS5, as configurações de Wi-Fi do iPhone e do Android aceitam só proxy HTTP, e algumas bibliotecas precisam de um pacote extra.
Como funciona uma conexão SOCKS5?
Toda sessão SOCKS5 começa com uma troca curta de mensagens sobre uma conexão TCP com o proxy. Os passos seguem a RFC 1928:
- Saudação. O cliente envia a versão e os métodos de autenticação que aceita, por exemplo
05 02 00 02: nenhum (0x00) e usuário/senha (0x02). - Escolha do método. O servidor devolve a escolha dele, por exemplo
05 02, ou05 FFse nenhum for aceitável. - Autenticação. O cliente envia o usuário e a senha, cada um precedido pelo seu tamanho. Status 0 significa sucesso.
- Requisição. O cliente envia um comando (CONNECT = 1, BIND = 2, UDP ASSOCIATE = 3), um tipo de endereço (IPv4 = 1, nome de domínio = 3, IPv6 = 4), o endereço e a porta.
- Resposta. O proxy tenta a conexão e responde com um código: 0 sucesso, 1 falha geral, 2 não permitido pelas regras, 3 rede inalcançável, 4 host inalcançável, 5 conexão recusada, 6 TTL expirado, 7 comando não suportado, 8 tipo de endereço não suportado.
- Repasse. O proxy copia os bytes nos dois sentidos. No HTTPS, o TLS roda dentro desse túnel, então o proxy vê só dados criptografados.
O script abaixo faz esses passos à mão e depois abre uma conexão TLS com httpbin.org pelo túnel. No nosso servidor de teste, ele imprimiu server picked method 0x2, auth status 0, reply code 0 e o IP de saída; com a senha errada, parou em auth status 1.
import socket
import ssl
import struct
PROXY_HOST, PROXY_PORT = "pr.proxynet.io", 1080
USER, PASSWORD = b"user", b"pass"
TARGET_HOST, TARGET_PORT = "httpbin.org", 443
def recv_exact(sock, n):
data = b""
while len(data) < n:
chunk = sock.recv(n - len(data))
if not chunk:
raise ConnectionError("proxy closed the connection")
data += chunk
return data
sock = socket.create_connection((PROXY_HOST, PROXY_PORT), timeout=15)
# 1. Saudação: versão 5, dois métodos oferecidos (0x00 sem autenticação, 0x02 usuário/senha)
sock.sendall(b"\x05\x02\x00\x02")
ver, method = recv_exact(sock, 2)
print("server picked method", hex(method))
if method == 0xFF:
raise SystemExit("no acceptable authentication method: send credentials or whitelist your IP")
# 2. Subnegociação de usuário e senha (RFC 1929)
if method == 0x02:
sock.sendall(b"\x01" + bytes([len(USER)]) + USER + bytes([len(PASSWORD)]) + PASSWORD)
_, status = recv_exact(sock, 2)
print("auth status", status) # 0 = sucesso
if status != 0:
raise SystemExit("wrong username or password")
# 3. Requisição CONNECT com nome de domínio (ATYP 0x03): o proxy resolve o DNS
name = TARGET_HOST.encode()
sock.sendall(b"\x05\x01\x00\x03" + bytes([len(name)]) + name + struct.pack(">H", TARGET_PORT))
ver, rep, _, atyp = recv_exact(sock, 4)
print("reply code", rep) # 0 = sucesso, 4 = host inalcançável, 5 = conexão recusada
if rep != 0:
raise SystemExit(f"SOCKS5 request failed with REP={rep}")
addr_len = {1: 4, 4: 16}.get(atyp) or recv_exact(sock, 1)[0]
recv_exact(sock, addr_len + 2) # endereço e porta vinculados, não precisamos deles aqui
# 4. Daqui em diante o socket é um túnel simples: o TLS vai de ponta a ponta com o destino
tls = ssl.create_default_context().wrap_socket(sock, server_hostname=TARGET_HOST)
tls.sendall(b"GET /ip HTTP/1.1\r\nHost: httpbin.org\r\nConnection: close\r\n\r\n")
response = b""
while chunk := tls.recv(4096):
response += chunk
print(response.decode(errors="replace").split("\r\n\r\n", 1)[1])Como o SOCKS5 transporta tráfego UDP?
O proxy não repassa UDP simplesmente na porta em que você se conecta. O caminho tem quatro etapas:
- O cliente abre a conexão TCP de sempre, faz a autenticação e envia uma requisição UDP ASSOCIATE.
- O proxy responde com o endereço e a porta do seu relay UDP, o ponto que recebe e reenvia os datagramas.
- O cliente envia cada datagrama ao relay com um pequeno cabeçalho que contém o endereço e a porta de destino; o relay o encaminha e empacota as respostas do mesmo jeito.
- A associação dura enquanto durar a conexão TCP do passo 1.
Os dois lados precisam implementar isso. O Chrome, por exemplo, nunca repassa UDP pelo SOCKS5, como afirma a documentação de proxy do Chromium. O serviço SOCKS5 da Proxynet suporta UDP. Os dois protocolos de transporte são comparados em Diferença entre TCP e UDP.
Quais são as diferenças entre SOCKS4 e SOCKS5?
O SOCKS4a entra na tabela porque fechou a lacuna do DNS antes do SOCKS5.
| Característica | SOCKS4 | SOCKS4a | SOCKS5 |
|---|---|---|---|
| Tráfego | TCP | TCP | TCP e UDP |
| Autenticação | Só ID de usuário, sem senha | Igual ao SOCKS4 | Nenhuma, GSSAPI, usuário e senha |
| Endereço de destino | IPv4 | IPv4 ou nome de domínio | IPv4, IPv6 ou nome de domínio |
| Resolução de DNS | Cliente | Proxy | Cliente ou proxy, o cliente decide |
| Esquema no cURL | socks4:// | socks4a:// | socks5://, socks5h:// |
| Uso típico hoje | Ferramentas antigas | Ferramentas antigas | Jogos, aplicativos, mensagens, scraping |
O SOCKS5 barra usuários não autorizados com senha, enquanto o SOCKS4 só consegue filtrar por IP. O SOCKS5 também alcança destinos IPv6 (veja Proxies IPv4 e IPv6: qual escolher?) e transporta UDP para chamadas, streaming e jogos. No conjunto, o SOCKS5 é a versão mais flexível, e o SOCKS4 representa um estágio mais antigo e restrito do protocolo.
SOCKS5 ou proxy HTTP: qual você precisa?
Um proxy HTTP(S) entende requisições web; o SOCKS5 transporta qualquer conexão TCP ou UDP sem saber nada de HTTP. Para tráfego web, os dois funcionam, e o HTTP(S) tem suporte mais amplo nas ferramentas: se o caso for scraping puro sobre HTTP, um proxy HTTPS não traz desvantagem. Para jogos, aplicativos de desktop, protocolos que não são web e UDP, o SOCKS5 é o que funciona. A comparação completa está em Diferença entre SOCKS e HTTP proxy: qual escolher?.
socks5 vs socks5h: onde o DNS é resolvido?
Uma requisição SOCKS5 pode indicar o destino por IP ou por nome de domínio, e isso decide quem consulta o nome:
- cURL:
socks5://resolve localmente;socks5h://ou--socks5-hostnamedeixa o proxy resolver (Everything curl). - Python Requests e HTTPX: os mesmos esquemas; a documentação do Requests diz que
socks5hresolve no proxy. - Firefox: a caixa "Proxy DNS ao usar SOCKS v5", ativada por padrão desde o Firefox 128.
- Chrome: sempre deixa a resolução para o proxy SOCKS5.
No log do nosso servidor de teste, o cURL com socks5h:// chegou como domain httpbin.org:443; com socks5://, chegou como um IP puro, ou seja, a consulta já tinha passado pelo resolvedor local. Isso é mais que um detalhe: se o nome for resolvido pela sua própria máquina, a consulta DNS revela à sua rede e à sua operadora cada domínio que você visita, mesmo que o tráfego depois passe pelo proxy. Por isso, prefira a resolução remota. Os testes de vazamento estão em Vazamentos de WebRTC e DNS: o que são e como evitar.
O proxy SOCKS5 é seguro? Ele criptografa o tráfego?
Não. O SOCKS5 muda o caminho do seu tráfego, não o conteúdo. O HTTPS já criptografa as páginas web, então o proxy só fica sabendo o destino e a porta; HTTP simples, FTP ou e-mail sem TLS podem ser lidos no caminho.
- A senha do proxy trafega em texto puro. A própria RFC 1929 diz isso. Use uma senha exclusiva, ou uma whitelist de IP em redes compartilhadas.
- O operador vê as suas conexões. Um proxy pago é operado por uma empresa conhecida; as listas gratuitas de SOCKS5, não. Veja Proxies gratuitos e sites de web proxy são seguros?.
Se o trecho até o proxy precisar ser criptografado, ssh -D 1080 user@server cria um servidor SOCKS local cujo tráfego viaja dentro do SSH.
Como usar um proxy SOCKS5?
| Ferramenta | Suporte a SOCKS5 | Onde configurar |
|---|---|---|
| cURL | Sim, com senha | -x socks5h://user:pass@host:port |
| Python Requests / HTTPX | Sim, com pacote extra | pip install "requests[socks]" ou "httpx[socks]" |
| Firefox | Sim, sem campo de senha | Configurações, pesquise "proxy", Configurar proxy (versões antigas: Configurações de rede > Configurar conexão…), SOCKS v5 |
| Chrome | Só TCP, sem senha | --proxy-server="socks5://host:port" com whitelist de IP |
| macOS | Sim | Ajustes do Sistema > Rede > Detalhes > Proxies > Proxy SOCKS |
| Wi-Fi do iPhone e do Android | Não, só HTTP | A porta HTTP, ou um aplicativo com configuração própria |
| Telegram, Proxifier | Sim, com senha | A configuração de proxy do próprio aplicativo |
Guias passo a passo: Firefox, Windows e Chrome, Telegram e Proxifier.
Teste o proxy com o cURL
# O proxy resolve o DNS (recomendado)
curl -x "socks5h://user:pass@pr.proxynet.io:1080" https://httpbin.org/ip
# A mesma requisição com opções separadas
curl --socks5-hostname pr.proxynet.io:1080 --proxy-user user:pass https://httpbin.org/ipA resposta mostra o IP de saída do proxy. Mais opções estão em cURL com proxy: como configurar proxy HTTP e SOCKS5; uma verificação feita só pelo navegador está em Seu proxy está funcionando? Como testar um proxy.
Use em Python com novas tentativas
Este script tenta de novo quando a rede falha, mas para na hora diante de erros de configuração, que uma nova tentativa não resolve.
# pip install "requests[socks]"
import time
import requests
PROXY = "socks5h://user:pass@pr.proxynet.io:1080" # socks5h = o proxy resolve o DNS
PROXIES = {"http": PROXY, "https": PROXY}
# Erros de configuração: tentar de novo não resolve
FATAL = ("SOCKS5 authentication failed", "sent invalid data", "Missing dependencies for SOCKS")
def fetch(url, attempts=3):
for attempt in range(1, attempts + 1):
try:
r = requests.get(url, proxies=PROXIES, timeout=(10, 30))
r.raise_for_status()
return r
except (requests.ConnectionError, requests.Timeout, requests.exceptions.InvalidSchema) as exc:
message = str(exc)
if any(text in message for text in FATAL) or attempt == attempts:
raise
print(f"attempt {attempt} failed, retrying: {exc.__class__.__name__}")
time.sleep(2 ** attempt)
start = time.perf_counter()
r = fetch("https://httpbin.org/ip")
print("exit IP:", r.json()["origin"], f"({time.perf_counter() - start:.2f}s)")No nosso teste, ele imprimiu o IP de saída, falhou na hora com a senha errada e tentou de novo duas vezes com uma porta fechada. As portas aqui são exemplos; o seu painel mostra as suas.
Para que servem os proxies SOCKS5?
- Jogos online. Os clientes de jogos usam protocolos próprios e muitas vezes UDP; uma ferramenta de roteamento envia esse tráfego pelo SOCKS5. Veja a nossa página de proxy para Growtopia como exemplo.
- Aplicativos de mensagens. O Telegram aceita SOCKS5 com senha nas próprias configurações.
- Programas sem configuração de proxy. O Proxifier roteia qualquer programa de desktop pelo SOCKS5, aplicativo por aplicativo.
- Coleta de dados. Scrapers que devem resolver o DNS na saída usam SOCKS5 com
socks5h; veja as nossas soluções de web scraping.
Residencial, móvel, ISP ou datacenter: o que verificar antes de comprar proxies SOCKS5
SOCKS5 é um protocolo, não um tipo de IP. Comprar um proxy SOCKS5 significa escolher o tipo de IP certo para a tarefa e um serviço que funcione com as suas ferramentas.
| Tipo de IP | De onde vem o IP | Indicado para |
|---|---|---|
| Datacenter | Servidores de data center, fixo | Jogos, transferências grandes, destinos que não filtram por tipo de IP |
| ISP estático | Endereços de provedores de internet residencial, fixos por meses | Sessões longas, gestão de contas |
| Residencial | Conexões domésticas, rotativo ou de sessão fixa | Scraping, resultados locais, verificação de preços |
| Móvel | IPs de operadoras 4G/5G | Aplicativos móveis, plataformas que esperam IPs de operadora |
Um proxy SOCKS5 privado é um IP que só você usa; os IPs residenciais e móveis, por outro lado, vêm de um pool compartilhado. Veja Diferença entre proxy residencial e datacenter. Antes de comprar, verifique:
- UDP. Nem todo serviço SOCKS5 repassa UDP. O da Proxynet repassa.
- Autenticação. Se a sua ferramenta não consegue enviar senha SOCKS5, como acontece com o Chrome, você precisa de uma whitelist de IP; a Proxynet aceita até 10 IPs. Veja Autenticação de proxy: user:pass ou whitelist de IP.
- DNS remoto. O serviço deve aceitar nomes de domínio para que o
socks5hfuncione. - Portas e credenciais. Na Proxynet, residencial e móvel usam um único gateway com portas separadas para HTTP e SOCKS5; o Gerador de endpoints do painel monta o nome de usuário com país, cidade e sessão.
- Sessões. As sessões fixas (de 1 a 60 minutos na Proxynet) mantêm o mesmo IP durante todo um fluxo de login.
- Um teste antes. Rode o comando do cURL e confira a localização e os vazamentos de DNS.
Os pools residencial e móvel da Proxynet somam 160 milhões de IPs, dos quais 140 milhões são residenciais, e o pool móvel inclui linhas Turkcell, Türk Telekom e Vodafone na Türkiye. Páginas de produto: Proxies SOCKS5, Proxies residenciais, Proxies móveis e Proxies ISP. Outras perguntas estão em O que observar ao comprar um proxy: 10 perguntas. Para ver lado a lado quem vende SOCKS5 e em que condições, confira Os melhores provedores de proxy SOCKS5 - 2026.
Erros comuns do SOCKS5 e como resolver
Reproduzimos as mensagens do cURL 8.21, do Python e do Chrome no nosso servidor de teste; o texto do pacote ausente foi citado do código-fonte do Requests.
| Mensagem de erro | Causa provável | Solução |
|---|---|---|
curl: (97) User was rejected by the SOCKS5 server (1 1). | Usuário ou senha errados | Copie as credenciais de novo; codifique os caracteres especiais para URL |
curl: (97) No authentication method was acceptable. | Nenhuma credencial enviada e o seu IP não está na whitelist | Adicione user:pass ou coloque o seu IP na whitelist |
curl: (97) Received invalid version in initial SOCKS5 response. | SOCKS5 enviado para uma porta de proxy HTTP | Use a porta SOCKS5 |
curl: (56) Proxy CONNECT aborted | Esquema http:// apontado para uma porta SOCKS5 | Troque para socks5h:// |
Missing dependencies for SOCKS support. | O PySocks não está instalado | pip install "requests[socks]" |
ERR_SOCKS_CONNECTION_FAILED (Chrome) | O proxy exige uma senha que o Chrome não consegue enviar | Coloque o seu IP na whitelist |
ERR_PROXY_CONNECTION_FAILED (Chrome) | Host ou porta do proxy inacessível | Confira o host, a porta e o firewall |
| O jogo faz login e cai no meio da partida | O UDP não é repassado | Use um serviço SOCKS5 e uma ferramenta de roteamento com suporte a UDP |
O Python embrulha esses erros em uma linha Max retries exceeded; veja Max Retries Exceeded With URL: o que é e como resolver.
Guia de decisão
| Sua necessidade | Recomendação |
|---|---|
| Cliente de jogo, chamadas de voz ou outro tráfego UDP | SOCKS5 com UDP, mais uma ferramenta de roteamento se precisar |
| Telegram ou outro aplicativo com campo para SOCKS5 | SOCKS5 com usuário e senha |
| Automação com Chrome ou Chromium | SOCKS5 com whitelist de IP, ou HTTP(S) com senha |
| Scraping de sites com Python ou Node.js | HTTP(S), ou SOCKS5 com socks5h |
| Proxy para o sistema inteiro no iPhone ou no Android | A porta HTTP(S) do mesmo plano |
Perguntas frequentes
Qual porta o SOCKS5 usa?
Por convenção, a porta 1080. Os provedores costumam usar outras portas, então use a que o seu painel mostra. As portas de proxy são explicadas em O que é a porta 8080? Portas de proxy e o que significam.
SOCKS5 é a mesma coisa que VPN?
Não. Uma VPN criptografa todo o tráfego do dispositivo até o servidor dela. O SOCKS5 cobre só os aplicativos que você configura e não criptografa nada. Veja Diferença entre proxy e VPN: quando usar cada um?.
Proxy SOCKS5 é a mesma coisa que proxy residencial?
Não. SOCKS5 é o protocolo que o seu aplicativo usa para falar com o proxy; residencial descreve de onde vem o IP de saída. Proxies residenciais, de datacenter, ISP e móveis podem ser acessados por HTTP ou por SOCKS5.
O SOCKS5 funciona com sites HTTPS?
Sim. O handshake TLS e a verificação do certificado acontecem entre o seu cliente e o site, então o proxy não consegue ler a página.
Dá para usar SOCKS5 no iPhone ou no Android?
Não pelas configurações de proxy do Wi-Fi, que nos dois sistemas aceitam só proxy HTTP. Aplicativos com configuração de proxy própria, como o Telegram, aceitam SOCKS5. Para uso no sistema inteiro, informe a porta HTTP(S) do mesmo plano, como mostramos em Como configurar proxy no celular Android.
Listas gratuitas de proxies SOCKS5 são seguras?
Não para nada que envolva login. Você não tem como saber quem opera um servidor gratuito, e ele pode ler o tráfego não criptografado. Use essas listas só para testes descartáveis.
Em resumo
O SOCKS5 repassa conexões TCP e UDP sem lê-las e substitui o SOCKS4 em todos os aspectos práticos, mas não criptografa. Use socks5h, uma whitelist de IP quando a ferramenta não consegue enviar senha SOCKS5, e confira o suporte a UDP para jogos ou chamadas. Para acesso SOCKS5 e HTTP(S) no mesmo plano, veja os nossos serviços de proxy.




