Protocolos · 2 min de lectura

El Método HTTP CONNECT Explicado

CONNECT es el método HTTP que hace que HTTPS funcione a través de un proxy. En lugar de recuperar una página, le pide al proxy que abra un túnel en bruto a un destino para que el tráfico cifrado pueda pasar sin ser tocado. Esta guía explica cómo funciona CONNECT, paso a paso.

Por qué existe CONNECT

Un proxy HTTP ordinario funciona leyendo tu solicitud, obteniendo el recurso y devolviéndolo; ve y retransmite la solicitud y la respuesta completas. Eso está bien para HTTP simple, pero se rompe para HTTPS: el objetivo de TLS es que ningún intermediario puede leer el tráfico, por lo que el proxy no puede simplemente "obtener la página" en tu nombre sin romper la encriptación.

El método CONNECT resuelve esto. En lugar de pedirle al proxy que recupere algo, tu cliente le pide al proxy que abra un túnel TCP en bruto a un host y puerto y luego se haga a un lado. Una vez que el túnel está abierto, tu cliente realiza el apretón de manos TLS directamente con el destino a través del proxy, y el proxy retransmite ciegamente los bytes encriptados en ambas direcciones. El proxy nunca ve el texto sin formato; solo ve un flujo opaco y, a través de la línea CONNECT y TLS SNI, el nombre de host de destino. Así es como el s4m proxy HTTP en el puerto 3128 maneja HTTPS.

Cómo se establece el túnel

El flujo es corto y específico:

  1. Tu cliente envía CONNECT example.com:443 HTTP/1.1 al proxy, con un encabezado Host y, si es necesario, credenciales de Proxy-Authorization.
  2. El proxy abre una conexión TCP a example.com:443.
  3. Si eso tiene éxito, el proxy responde HTTP/1.1 200 Conexión Establecida. A partir de este momento, la conexión es un túnel desnudo: no más semántica HTTP.
  4. Tu cliente ahora realiza el apretón de manos TLS directamente con example.com a través de ese túnel, y todos los datos de aplicación subsiguientes están encriptados de extremo a extremo.

Dos consecuencias siguen. Primero, TLS se mantiene verdaderamente de extremo a extremo: el proxy no autentica nada y no lee nada dentro del túnel, por lo que la validación del certificado ocurre entre tu cliente y el servidor real. Segundo, como CONNECT solo abre un túnel TCP, los proxies pueden, en principio, tunelar otros protocolos basados en TLS o arbitrarios en otros puertos, que es exactamente por qué los proxies suelen restringir CONNECT al puerto 443 (y algunos otros) para evitar convertirse en un relé abierto.

Ver CONNECT con curl

curl emite CONNECT automáticamente para una URL https:// a través de un proxy HTTP. Usa -v para observar la solicitud CONNECT y la respuesta '200 Conexión Establecida'.

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

Preguntas, respondidas

¿Qué hace el método HTTP CONNECT?

Pide a un proxy que abra un túnel TCP en bruto a un host y puerto de destino, en lugar de recuperar un recurso. Una vez que el proxy responde 200 Conexión Establecida, el cliente envía su propio apretón de manos TLS y datos encriptados directamente al destino, y el proxy solo retransmite los bytes opacos. Así es como funciona HTTPS a través de un proxy HTTP.

¿Puede el proxy leer mi tráfico HTTPS durante un túnel CONNECT?

No. Después de que se abre el túnel, TLS se negocia de extremo a extremo entre tu cliente y el servidor de destino, por lo que el proxy solo ve bytes encriptados. Puede ver el nombre de host y el puerto de destino desde la línea CONNECT y TLS SNI, pero no el contenido — a menos que realice una interceptación de TLS con un certificado que tu dispositivo confíe.

¿Por qué los proxies restringen CONNECT al puerto 443?

Debido a que CONNECT abre un túnel TCP arbitrario, un proxy sin restricciones podría retransmitir cualquier protocolo a cualquier puerto y convertirse en un relay abierto para abusos. Limitar CONNECT a 443 (y a veces a una lista de permitidos corta) lo confina a HTTPS normal mientras evita que el proxy se use para túneles de servicios no relacionados.

Un proxy HTTP que tunela HTTPS

El proxy HTTP autenticado de s4m en el puerto 3128 maneja CONNECT para que HTTPS permanezca encriptado de extremo a extremo, junto con SOCKS5 en 1080. Medido, pago por uso, cuentas anónimas, criptomonedas aceptadas.

Las personas encontraron esta página buscando

Frases de búsqueda reales que esta página responde — los enlaces abren la página que las cubre en profundidad.