Respuesta rápida
¿Qué significa ERR_TUNNEL_CONNECTION_FAILED con un proxy?
net::ERR_TUNNEL_CONNECTION_FAILED significa que Chrome pidió al proxy abrir un túnel a un sitio HTTPS y el proxy no respondió 200 Connection established. El navegador oculta el estado real. Con proxies residenciales CrawlRelay, la causa suele ser credenciales faltantes en Playwright o Puppeteer, y luego un objetivo que el gateway no puede alcanzar. Reprodúcelo con curl -v para ver el código real.
ERR_TUNNEL_CONNECTION_FAILED en pocas palabras
| Error | ERR_TUNNEL_CONNECTION_FAILED |
|---|---|
| Tipo | Error de red en Chromium |
| Enviado por | Tu navegador, después de que el proxy rehusó o falló la solicitud CONNECT |
| Definido en | CONNECT method: RFC 9110, section 9.3.6 |
| ¿Reintentar? | Solo después de que conozcas el estado real |
| Primera comprobación | Reprodúcelo con curl -v para ver el estado real del CONNECT |
¿Qué significa ERR_TUNNEL_CONNECTION_FAILED?
Para cargar una página HTTPS vía proxy HTTP, el navegador envía primero CONNECT host:443. Si el proxy responde 200, el navegador inicia TLS dentro del túnel. Cualquier otra respuesta, como 407, 403 o 502, termina el intento, y Chromium reporta un error genérico.
Por eso este error te dice dónde falló (el túnel), pero no por qué. El por qué es el código que envió el proxy, que puedes ver con curl.
¿Cómo se ve ERR_TUNNEL_CONNECTION_FAILED en Python, curl, Node.js y navegadores?
El mismo fallo se muestra de forma diferente en cada herramienta. Estos son los mensajes que debes buscar en tus registros:
- Playwright:
page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://... - Puppeteer:
Error: net::ERR_TUNNEL_CONNECTION_FAILED at https://... - Barra de direcciones de Chrome: 'No se puede acceder a este sitio' con el código
ERR_TUNNEL_CONNECTION_FAILED - Selenium con Chrome: el mismo código dentro de un
WebDriverException
¿Qué causa ERR_TUNNEL_CONNECTION_FAILED?
Lo más probable al principio:
- No se enviaron credenciales (407 oculto). Chrome ignora un usuario y contraseña dentro de
--proxy-server. - Un destino rechazado (403 oculto), como una categoría bloqueada por la política de uso del proxy.
- Un objetivo inalcanzable (502 o 504 ocultos): un host muerto, una falta de ortografía o un fallo DNS en la salida.
- Un puerto erróneo: apuntar el navegador al puerto SOCKS5 como si fuera HTTP, o al revés.
¿Cómo diagnostico ERR_TUNNEL_CONNECTION_FAILED paso a paso?
- Ejecuta la misma URL con curl usando
-v(comando abajo) y lee la línea después deCONNECT. - Un
407significa credenciales; un403significa un destino rechazado; un502o504el objetivo o la salida. - Confirma que el navegador usa el puerto HTTP para un servidor proxy
http://. - Prueba una página simple como
https://api.ipify.organtes de tu destino real.
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL
# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL¿Cómo soluciono ERR_TUNNEL_CONNECTION_FAILED?
- Playwright: pasa
server,usernameypassworden la opciónproxy, por navegador o por contexto. Ver la guía de Playwright. - Puppeteer: lanza con
--proxy-server=http://host:porty llama apage.authenticate()antes del primergoto. Ver la guía de Puppeteer. - Selenium: ejecuta un pequeño reenviador local que añade las credenciales. Ver la guía de Selenium.
- Verifica el destino con nuestra Política de Uso Aceptable.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "http://gw.crawlrelay.com:7777",
"username": "USERNAME-country-us",
"password": "PASSWORD",
})
page = browser.new_page()
response = page.goto("https://api.ipify.org")
print(response.status, page.inner_text("body"))
browser.close()¿Debo reintentar después de ERR_TUNNEL_CONNECTION_FAILED?
Reintenta solo cuando conozcas el estado oculto. Un 407 o 403 ocultos se repetirán para siempre; corrige la configuración. Un 502 o 504 ocultos pueden reintentarse en una nueva salida, como cualquier error de gateway.
¿Cómo se aplica ERR_TUNNEL_CONNECTION_FAILED a CrawlRelay?
El puerto HTTP de CrawlRelay transporta HTTPS a través de túneles CONNECT, que todas las herramientas basadas en Chromium soportan. Usa el puerto HTTP para navegadores: Chromium no soporta SOCKS5 con usuario y contraseña.
Gateway: gw.crawlrelay.com, puerto 7777 (HTTP, HTTPS a través de CONNECT) y puerto 7778 (SOCKS5). Formato de usuario: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Relacionado: 407 Proxy Authentication Required · ERR_PROXY_CONNECTION_FAILED · Guía de Playwright.
ERR_TUNNEL_CONNECTION_FAILED: preguntas que hacen los desarrolladores
¿Por qué curl funciona pero Playwright muestra ERR_TUNNEL_CONNECTION_FAILED?
Porque curl envía las credenciales desde la URL del proxy, mientras Chromium ignora las credenciales escritas en la dirección del servidor proxy. En Playwright, pasa username y password como campos separados de la opción proxy. En Puppeteer, llama a page.authenticate() antes de navegar.
¿Puedo usar proxies SOCKS5 con autenticación en Chrome?
No directamente. Chromium soporta proxies SOCKS5 pero no autenticación con usuario y contraseña para SOCKS5. Usa en su lugar el puerto HTTP del gateway, que maneja sitios HTTPS mediante túneles CONNECT, o ejecuta un reenviador local que autentique para el navegador.
¿Es ERR_TUNNEL_CONNECTION_FAILED culpa del sitio web?
Rara vez directamente. El túnel es entre el navegador y el proxy, por lo que el error sucede antes de que el sitio web vea un handshake TLS. El sitio puede ser la causa indirecta cuando es inalcanzable y el proxy responde 502 o 504 a la petición CONNECT.
Otros errores de proxy en esta referencia
Códigos de estado HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Errores de navegador y cliente
Errores de conexión y TLS
Proxies residenciales con documentación que cubre los casos de fallo
CrawlRelay proxies residenciales de 0,50 US$/GB, tráfico que nunca expira.