Explicado
SOCKS5 é um protocolo de proxy da camada de transporte definido na RFC 1928. Diferente de um proxy HTTP, que entende e analisa requisições e respostas HTTP, um proxy SOCKS5 opera em um nível mais baixo: ele encaminha pacotes TCP ou UDP brutos entre você e o destino sem inspecionar ou modificar o payload. Isso significa que um proxy SOCKS5 pode transportar qualquer protocolo que rode sobre TCP ou UDP, não apenas tráfego web.
SOCKS5 é a versão moderna do protocolo de proxy SOCKS, adicionando suporte a IPv6, encaminhamento de UDP e métodos de autenticação (sem autenticação, usuário/senha, GSS-API). A maioria dos provedores de proxy residencial e ISP expõe seus endpoints tanto via HTTP quanto via SOCKS5 para que os clientes possam escolher o protocolo mais adequado à sua stack.
Para web scraping via HTTPS, um proxy HTTP CONNECT e um proxy SOCKS5 se comportam de forma quase idêntica — ambos acabam tunelando tráfego TCP criptografado. As diferenças se tornam relevantes quando seu cliente usa protocolos não HTTP (FTP, SMTP, IRC, BitTorrent, jogos) ou quando você precisa especificamente de suporte a UDP.
Como Funciona
Quando seu cliente se conecta a um proxy SOCKS5, ele envia um pequeno handshake especificando o método de autenticação e, em seguida, um comando CONNECT com o host e a porta de destino. O proxy abre uma conexão TCP com esse destino e, a partir daí, simplesmente retransmite bytes entre o cliente e o destino. Não há consciência da camada HTTP — o proxy não lê a URL, os cabeçalhos nem o corpo da resposta.
Essa transparência na camada de transporte é o motivo pelo qual o SOCKS5 funciona para qualquer protocolo baseado em TCP. O suporte a UDP usa um fluxo separado de UDP ASSOCIATE, no qual o cliente envia datagramas UDP ao proxy e o proxy os encaminha ao destino. A autenticação, quando usada, acontece uma vez durante o handshake inicial e se aplica à sessão inteira.