Protocolos · 2 min de leitura

O Método HTTP CONNECT Explicado

CONNECT é o método HTTP que faz o HTTPS funcionar através de um proxy. Em vez de buscar uma página, ele pede ao proxy para abrir um túnel bruto para um destino, para que o tráfego criptografado possa passar sem ser tocado. Este guia explica como o CONNECT funciona, passo a passo.

Por que o CONNECT existe

Um proxy HTTP comum funciona lendo sua solicitação, buscando o recurso e retornando-o — ele vê e retransmite a solicitação e a resposta completas. Isso é bom para HTTP simples, mas falha para HTTPS: o objetivo do TLS é que nenhum intermediário possa ler o tráfego, então o proxy não pode simplesmente "buscar a página" em seu nome sem quebrar a criptografia.

O método CONNECT resolve isso. Em vez de pedir ao proxy para recuperar algo, seu cliente pede ao proxy para abrir um túnel TCP bruto para um host e porta e então sair do caminho. Uma vez que o túnel está aberto, seu cliente realiza o handshake TLS diretamente com o destino através do proxy, e o proxy retransmite cegamente os bytes criptografados em ambas as direções. O proxy nunca vê o texto em claro — ele só vê um fluxo opaco e, através da linha CONNECT e do SNI TLS, o nome do host de destino. É assim que o s4m proxy HTTP na porta 3128 transporta HTTPS.

Como o túnel é estabelecido

O fluxo é curto e específico:

  1. Seu cliente envia CONNECT example.com:443 HTTP/1.1 para o proxy, com um cabeçalho Host e, se necessário, credenciais de Proxy-Authorization.
  2. O proxy abre uma conexão TCP para example.com:443.
  3. Se isso for bem-sucedido, o proxy responde HTTP/1.1 200 Conexão Estabelecida. A partir deste momento, a conexão é um túnel puro — sem mais semântica HTTP.
  4. Seu cliente agora executa o handshake TLS diretamente com example.com através desse túnel, e todos os dados de aplicação subsequentes são criptografados de ponta a ponta.

Duas consequências seguem. Primeiro, o TLS permanece verdadeiramente de ponta a ponta: o proxy não autentica nada e não lê nada dentro do túnel, então a validação do certificado acontece entre seu cliente e o servidor real. Segundo, porque o CONNECT apenas abre um túnel TCP, os proxies podem, em princípio, tunelar outros protocolos baseados em TLS ou arbitrários em outras portas — que é exatamente o motivo pelo qual os proxies geralmente restringem o CONNECT à porta 443 (e algumas outras) para evitar se tornar um relay aberto.

Veja CONNECT com curl

curl emite CONNECT automaticamente para uma URL https:// através de um proxy HTTP. Use -v para observar a solicitação CONNECT e a resposta '200 Conexão Estabelecida'.

bash
# Verbose: watch the CONNECT handshake to the proxy, then TLS to the site
curl -v -x http://USER:PASS@proxy.s4m.online:3128 https://example.com 2>&1 \
  | grep -Ei 'CONNECT|Connection established|SSL connection|Proxy-Auth'

# You'll see, in order:
#   > CONNECT example.com:443 HTTP/1.1        (client asks for a tunnel)
#   < HTTP/1.1 200 Connection established     (proxy opened the tunnel)
#   * SSL connection using TLSv1.3 ...        (TLS is end-to-end, past proxy)

# Contrast: plain HTTP needs no tunnel; the proxy relays the request itself:
curl -v -x http://USER:PASS@proxy.s4m.online:3128 http://example.com 2>&1 \
  | grep -Ei 'GET http|absolute'
Share this page
FAQ

Perguntas, respondidas

O que o método HTTP CONNECT faz?

Ele pede a um proxy para abrir um túnel TCP bruto para um host e porta de destino, em vez de buscar um recurso. Uma vez que o proxy responde 200 Conexão Estabelecida, o cliente faz seu próprio handshake TLS e dados criptografados diretamente para o destino, e o proxy apenas retransmite os bytes opacos. É assim que o HTTPS funciona através de um proxy HTTP.

O proxy pode ler meu tráfego HTTPS durante um túnel CONNECT?

Não. Depois que o túnel é aberto, o TLS é negociado de ponta a ponta entre seu cliente e o servidor de destino, então o proxy vê apenas bytes criptografados. Ele pode ver o nome do host de destino e a porta da linha CONNECT e o TLS SNI, mas não o conteúdo — a menos que realize a interceptação TLS com um certificado que seu dispositivo confia.

Por que os proxies restringem CONNECT à porta 443?

Porque o CONNECT abre um túnel TCP arbitrário, um proxy sem restrições poderia retransmitir qualquer protocolo para qualquer porta e se tornar um relay aberto para abuso. Limitar o CONNECT a 443 (e às vezes uma lista de permissão curta) o confina ao HTTPS normal, enquanto impede que o proxy seja usado para tunneling de serviços não relacionados.

Um proxy HTTP que tunela HTTPS

O proxy HTTP autenticado da s4m na porta 3128 lida com CONNECT para que o HTTPS permaneça criptografado de ponta a ponta, junto com SOCKS5 na porta 1080. Medido pay-as-you-go, contas anônimas, criptomoeda aceita.

As pessoas encontraram esta página pesquisando por

Frases de busca reais que esta página responde — os links abrem a página que as cobre em profundidade.