Resposta rápida
O que ERR_TUNNEL_CONNECTION_FAILED significa com um proxy?
net::ERR_TUNNEL_CONNECTION_FAILED significa que o Chrome pediu ao proxy abrir um túnel para um site HTTPS, e o proxy não respondeu 200 Connection established. O navegador esconde o status real. Com proxies residenciais CrawlRelay, a causa comum é credenciais faltando no Playwright ou Puppeteer, depois um alvo que o gateway não alcança. Reproduza com curl -v para ver o código real.
ERR_TUNNEL_CONNECTION_FAILED de relance
| Erro | ERR_TUNNEL_CONNECTION_FAILED |
|---|---|
| Tipo | Erro de rede Chromium |
| Enviado por | Seu navegador, depois que o proxy recusou ou falhou na requisição CONNECT |
| Definido em | CONNECT method: RFC 9110, section 9.3.6 |
| Tentar novamente? | Só após encontrar o status real por trás |
| Primeira verificação | Reproduza com curl -v para ver o status real do CONNECT |
O que ERR_TUNNEL_CONNECTION_FAILED significa?
Para carregar uma página HTTPS via proxy HTTP, o navegador primeiro envia CONNECT host:443. Se o proxy responde 200, o navegador inicia TLS dentro do túnel. Qualquer outra resposta, como 407, 403 ou 502, termina a tentativa, e o Chromium mostra um erro genérico.
Por isso o erro aponta onde falhou, no túnel, mas não mostra o motivo. O motivo é o código que o proxy enviou, que você pode ver com curl.
Como ERR_TUNNEL_CONNECTION_FAILED aparece em Python, curl, Node.js e navegadores?
A mesma falha aparece de forma diferente em cada ferramenta. Estas são as mensagens para buscar nos seus logs:
- Playwright:
page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://... - Puppeteer:
Error: net::ERR_TUNNEL_CONNECTION_FAILED at https://... - Barra de endereço do Chrome: 'Este site não pode ser alcançado' com o código
ERR_TUNNEL_CONNECTION_FAILED - Selenium com Chrome: o mesmo código dentro de um
WebDriverException
O que causa ERR_TUNNEL_CONNECTION_FAILED?
Mais provável inicialmente:
- Nenhuma credencial enviada (407 oculta). O Chrome ignora usuário e senha dentro de
--proxy-server. - Destino recusado (403 oculta), como uma categoria bloqueada pela política de uso do proxy.
- Destino inalcançável (502 ou 504 ocultos): host morto, erro de digitação ou falha DNS na saída.
- Porta errada: apontando o navegador para a porta SOCKS5 como se fosse HTTP, ou vice-versa.
Como diagnosticar ERR_TUNNEL_CONNECTION_FAILED passo a passo?
- Execute a mesma URL pelo curl com
-v(comando abaixo) e leia a linha depois deCONNECT. - Um
407indica credenciais; um403indica destino recusado; um502ou504indica o destino ou a saída. - Confirme que o navegador usa a porta HTTP para um servidor proxy
http://. - Teste uma página simples como
https://api.ipify.organtes do seu 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_URLComo corrigir ERR_TUNNEL_CONNECTION_FAILED?
- Playwright: passe
server,usernameepasswordna opçãoproxy, por navegador ou contexto. Veja o Guia do Playwright. - Puppeteer: inicie com
--proxy-server=http://host:porte chamepage.authenticate()antes da primeiragoto. Veja o Guia do Puppeteer. - Selenium: rode um pequeno encaminhador local que adiciona as credenciais. Veja o Guia do Selenium.
- Verifique o destino conforme nossa Política de Uso Aceitável.
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()Devo tentar novamente após ERR_TUNNEL_CONNECTION_FAILED?
Tente novamente apenas quando souber o status oculto. Um 407 ou 403 oculto se repetirá para sempre; corrija a configuração. Um 502 ou 504 oculto pode ser tentado novamente em uma nova saída, como qualquer erro de gateway.
Como ERR_TUNNEL_CONNECTION_FAILED se aplica ao CrawlRelay?
A porta HTTP da CrawlRelay carrega HTTPS por túneis CONNECT, que todo recurso baseado em Chromium suporta. Use a porta HTTP para navegadores: Chromium não suporta SOCKS5 com usuário e senha.
Gateway: gw.crawlrelay.com, porta 7777 (HTTP, HTTPS via CONNECT) e porta 7778 (SOCKS5). Formato do usuário: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Relacionado: 407 Proxy Authentication Required · ERR_PROXY_CONNECTION_FAILED · Guia do Playwright.
ERR_TUNNEL_CONNECTION_FAILED: perguntas que desenvolvedores fazem
Por que o curl funciona mas o Playwright mostra ERR_TUNNEL_CONNECTION_FAILED?
Porque o curl envia credenciais pela URL do proxy, enquanto o Chromium ignora credenciais escritas no endereço do servidor proxy. No Playwright, passe username e password como campos separados da opção proxy. No Puppeteer, chame page.authenticate() antes de navegar.
Posso usar proxies SOCKS5 com autenticação no Chrome?
Não diretamente. Chromium suporta proxies SOCKS5, mas não autenticação por usuário e senha em SOCKS5. Use a porta HTTP do gateway, que trata sites HTTPS via túneis CONNECT, ou rode um encaminhador local que autentica para o navegador.
O ERR_TUNNEL_CONNECTION_FAILED é causado pelo site?
Raramente diretamente. O túnel é entre o navegador e o proxy, então o erro ocorre antes do site ver o handshake TLS. O site pode ser causa indireta quando está inacessível e o proxy responde 502 ou 504 à requisição CONNECT.
Outros erros de proxy nesta referência
Códigos de status HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Erros no navegador e cliente
Erros de conexão e TLS
Proxies residenciais com documentação que cobre os casos de falha
CrawlRelay proxies residenciais a partir de US$ 0,50/GB, tráfego que nunca expira.