Os proxies HTTP são proxies de camada de aplicação otimizados para tráfego web (HTTP/HTTPS), enquanto os proxies SOCKS são proxies de camada de sessão capazes de lidar com qualquer protocolo de rede e tipo de tráfego, oferecendo maior versatilidade para aplicações que não são web.
Um servidor proxy atua como intermediário para requisições de clientes que buscam recursos em outros servidores. Ele encaminha as requisições do cliente ao servidor de destino e devolve a resposta ao cliente. A principal diferença entre proxies HTTP e SOCKS está na camada em que operam dentro do modelo OSI e na especificidade de protocolo de cada um.
Proxy HTTP
Um proxy HTTP opera na camada de aplicação (camada 7) do modelo OSI. Ele foi projetado especificamente para entender e processar tráfego HTTP e HTTPS.
Como funcionam os proxies HTTP
Quando um cliente configura um proxy HTTP, todas as requisições web são enviadas ao servidor proxy em vez de irem diretamente ao servidor web de destino.
Para tráfego HTTP padrão, o proxy interpreta os cabeçalhos da requisição HTTP, pode modificá-los (por exemplo, adicionar X-Forwarded-For) e então encaminha a requisição. O servidor de destino vê a requisição partindo do endereço IP do proxy.
Para tráfego HTTPS, o cliente inicia uma requisição com o método CONNECT ao proxy HTTP. O proxy então estabelece um túnel TCP entre o cliente e o servidor HTTPS de destino. Uma vez estabelecido o túnel, o tráfego TLS criptografado flui diretamente entre o cliente e o servidor de destino, através do proxy, sem que o proxy descriptografe ou inspecione o conteúdo.
Características
- Especificidade de protocolo: trata principalmente HTTP e HTTPS.
- Inspeção de requisições: pode ler e modificar cabeçalhos HTTP e, no caso de HTTP não criptografado, inspecionar o conteúdo.
- Cache: pode armazenar conteúdo web em cache, reduzindo o consumo de banda e melhorando os tempos de carregamento de recursos acessados com frequência.
- Filtragem e segurança: capaz de filtrar conteúdo, bloquear anúncios, escanear malware e controlar acesso com base em URLs ou conteúdo.
- Modificação de cabeçalhos: costuma adicionar cabeçalhos como
X-Forwarded-Forpara indicar o IP original do cliente, ou pode remover cabeçalhos identificadores por privacidade.
Casos de uso
- Navegação web
- Acesso a conteúdo web com restrição geográfica
- Cache de recursos web para acesso mais rápido
- Segurança de rede corporativa (filtragem de conteúdo, logs)
- Web scraping (quando é preciso manipular cabeçalhos HTTP específicos)
Exemplo: curl com proxy HTTP
# For HTTP traffic
curl -x http://your_http_proxy_ip:port http://example.com
# For HTTPS traffic (CONNECT method)
curl -x http://your_http_proxy_ip:port https://example.com
Proxy SOCKS
SOCKS (Socket Secure) é um protocolo de rede que roteia pacotes entre um cliente e um servidor através de um servidor proxy. Os proxies SOCKS operam na camada de sessão (camada 5) do modelo OSI, o que os torna agnósticos em relação ao protocolo.
Como funcionam os proxies SOCKS
Um proxy SOCKS não interpreta protocolos de rede como o HTTP. Em vez disso, ele age como um encaminhador genérico de TCP/UDP. Quando um cliente se conecta a um proxy SOCKS, ele informa ao proxy o endereço IP e a porta de destino. O proxy SOCKS então estabelece uma conexão com o destino em nome do cliente e retransmite todos os pacotes de dados nos dois sentidos, sem modificá-los.
Características
- Agnóstico de protocolo: lida com qualquer protocolo baseado em TCP (por exemplo, HTTP, FTP, SMTP, POP3, IMAP, SSH, P2P) e, no SOCKS5, também com tráfego UDP.
- Sem inspeção de requisições: não interpreta protocolos de camada de aplicação nem modifica cabeçalhos. Encaminha pacotes de dados brutos.
- Maior anonimato: como não modifica cabeçalhos de camada de aplicação, o servidor de destino tem menos informações sobre o cliente original, além do IP do proxy.
- Suporte a UDP (SOCKS5): o SOCKS5 suporta associação UDP, o que é essencial para aplicações como jogos, VoIP e compartilhamento de arquivos P2P. O SOCKS4 não suporta UDP.
- Autenticação (SOCKS5): o SOCKS5 inclui métodos de autenticação nativos. O SOCKS4 não.
Casos de uso
- Tunelamento genérico de aplicações (por exemplo, clientes de e-mail, clientes FTP, clientes SSH)
- Compartilhamento de arquivos P2P (BitTorrent)
- Jogos online
- Aplicações VoIP
- Contornar firewalls para tráfego que não é web
- Encadeamento de vários proxies
Exemplo: curl com proxy SOCKS5
# For TCP traffic (HTTP over SOCKS5)
curl --socks5-hostname your_socks_proxy_ip:port http://example.com
# For TCP traffic (HTTPS over SOCKS5)
curl --socks5-hostname your_socks_proxy_ip:port https://example.com
SOCKS4 vs. SOCKS5
O SOCKS5 é a versão mais avançada e mais usada do protocolo SOCKS.
- Suporte a UDP: o SOCKS5 suporta UDP, o SOCKS4 não.
- Autenticação: o SOCKS5 suporta vários métodos de autenticação (por exemplo, usuário/senha), o SOCKS4 não.
- IPv6: o SOCKS5 suporta IPv6, o SOCKS4 não.
- Nomes de domínio: o SOCKS5 consegue resolver nomes de domínio no servidor proxy, enquanto o SOCKS4 exige que o cliente resolva o domínio para um endereço IPv4 antes de enviar a requisição ao proxy.
Comparação: proxy HTTP vs. SOCKS
| Recurso | Proxy HTTP | Proxy SOCKS |
|---|---|---|
| Camada OSI | Camada de aplicação (camada 7) | Camada de sessão (camada 5) |
| Protocolo | HTTP, HTTPS (via CONNECT) | Qualquer protocolo sobre TCP; UDP (SOCKS5) |
| Tipo de tráfego | Tráfego web | Qualquer tráfego de rede (web, e-mail, P2P etc.) |
| Anonimato | Menor (modifica/adiciona cabeçalhos como XFF) | Maior (encaminha pacotes brutos, sem modificar cabeçalhos) |
| Desempenho | Potencialmente mais rápido para web (cache) | Um pouco mais de overhead que a conexão direta, mas eficiente para encaminhamento genérico |
| Ciente do conteúdo | Sim (pode inspecionar e modificar tráfego HTTP) | Não (encaminha bytes brutos) |
| Cache | Sim | Não |
| Filtragem | Sim (por URL, por conteúdo) | Não |
| Criptografia | Depende do TLS cliente-servidor (para HTTPS) | Depende da criptografia cliente-servidor |
| Suporte a UDP | Não | Sim (somente SOCKS5) |
| Casos de uso | Navegação web, filtragem de conteúdo, web scraping | Tunelamento genérico, P2P, jogos, e-mail, SSH |
Escolhendo o protocolo certo
A escolha entre um proxy HTTP e um SOCKS depende dos requisitos específicos da aplicação, do tipo de tráfego e do nível desejado de controle ou anonimato.
Escolha o proxy HTTP quando:
- Somente tráfego web: seu uso principal é navegar em sites ou usar aplicações que só utilizam HTTP/HTTPS.
- É preciso cache: você precisa armazenar conteúdo web em cache para melhorar o desempenho ou reduzir o consumo de banda.
- Filtragem de conteúdo/segurança: você precisa filtrar conteúdo, bloquear sites específicos ou inspecionar o tráfego web por questões de segurança.
- Configuração simples: a configuração costuma ser direta em navegadores web.
Escolha o proxy SOCKS quando:
- Tráfego que não é web: você precisa passar por proxy o tráfego de aplicações que não são navegadores (por exemplo, clientes de e-mail, FTP, SSH, software P2P, jogos).
- Tunelamento agnóstico de protocolo: você precisa de um túnel genérico para qualquer protocolo baseado em TCP, ou para tráfego UDP (com SOCKS5).
- Maior anonimato: você prioriza que o proxy não modifique nem adicione cabeçalhos de camada de aplicação.
- Encadeamento de proxies: proxies SOCKS costumam ser a base de cadeias de proxy mais complexas por causa de sua natureza de baixo nível.
- Aplicações UDP: você usa aplicações que dependem de UDP (por exemplo, VoIP, jogos, P2P) e precisa de um proxy compatível (SOCKS5).
Implicações de segurança
A escolha do proxy também afeta a postura de segurança.
- Proxy HTTP: pode oferecer mais segurança por meio de inspeção de conteúdo, filtragem de URLs e escaneamento de malware no tráfego HTTP. No entanto, em HTTPS o proxy não consegue inspecionar o conteúdo criptografado, apenas tunelá-lo. Proxies HTTP mal configurados também podem revelar o IP original do cliente por meio de cabeçalhos
X-Forwarded-For. - Proxy SOCKS: oferece menos segurança inerente do ponto de vista de inspeção de conteúdo, porque não interpreta dados de camada de aplicação. A segurança depende inteiramente da criptografia cliente-servidor (por exemplo, TLS para HTTPS sobre SOCKS). Proxies SOCKS oferecem, sobretudo, uma passagem anônima na camada de rede, e não recursos de segurança de camada de aplicação.
