Como corrigir o erro ERR_TUNNEL_CONNECTION_FAILED com proxy

Atualizado:

Para carregar uma página https:// por meio de um proxy, o navegador envia uma requisição CONNECT e aguarda o proxy abrir um túnel até o site. O erro ERR_TUNNEL_CONNECTION_FAILED ocorre quando o proxy responde a essa requisição com um erro em vez de aceitá-la. O problema é que o Chrome não informa qual foi o erro, então o primeiro passo é descobrir o código real.

Proxies compatíveis com Puppeteer e Playwright

Dois casos que reproduzimos

Ambos foram executados em um proxy de teste, representado aqui com o endereço de documentação 203.0.113.10:8080 e user123:pass456. Em uma janela normal do Chrome, o caso do 407 não vira um erro de túnel; em vez disso, o Chrome abre uma caixa de diálogo para inserir o usuário e a senha do proxy. Por isso, erros de túnel causados por 407 aparecem principalmente em ferramentas de automação e aplicativos que não exibem solicitação de senha.

O proxy responde ao CONNECT comO Chrome exibeO curl exibe
407 sem opção de inserir senha (Chrome headless)ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 407
502 porque o proxy não consegue acessar o siteERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 502

Causas mais prováveis, em ordem

  • Um script de automação não envia credenciais. O parâmetro --proxy-server do Chrome aceita apenas host e porta, não user:pass. O Puppeteer ou Selenium em modo headless recebe um 407 e relata falha no túnel.
  • Um aplicativo de celular usando um proxy Wi-Fi protegido por senha. O app não tem caixa de diálogo de login, fazendo com que conexões HTTPS falhem enquanto o navegador continua funcionando.
  • O proxy não consegue acessar o destino. Ele retorna 502 para o CONNECT; a página sobre 502 Bad Gateway aborda isso detalhadamente.
  • Apenas alguns sites falham. O destino está bloqueando o acesso ou fora do ar, enquanto outros sites funcionam normalmente pelo mesmo proxy.

Descubra o código real com um comando curl

Execute curl -v -x http://user123:[email protected]:8080 https://example.com com os seus próprios valores. Veja a linha logo após > CONNECT example.com:443 HTTP/1.1: um 407 indica que você deve seguir o guia do erro 407; já um 502 aponta para problemas no destino ou na rota após o proxy. Se preferir não usar o terminal, cole a linha no verificador de proxy, que relata auth failed (407) ou HTTP 502 para as mesmas situações.

Soluções por ambiente

  • Puppeteer: mantenha --proxy-server=http://host:port na inicialização e chame page.authenticate({ username, password }) antes de navegar. Veja o exemplo completo no guia de proxy para Puppeteer.
  • Playwright: passe proxy: { server, username, password } ao iniciar o navegador e o Playwright responderá ao 407 por você; veja o guia do Playwright.
  • Selenium: o Chrome não aceita user:pass pela linha de comando; o guia do Selenium mostra alternativas viáveis.
  • Chrome no Windows: se a caixa de diálogo de login nunca aparecer, verifique se alguma extensão de proxy a está bloqueando e tente novamente em uma janela sem extensões.
  • Celulares: para aplicativos que exigem um proxy autenticado, use um app de proxy com suporte a user:pass, conforme descrito no guia de configuração para Android.

Passo a passo

  1. 1

    Identifique a resposta ao CONNECT

    Execute curl -v -x com a sua linha de proxy ou cole-a no verificador para descobrir se o proxy retorna 407 ou 502.

  2. 2

    Para 407: forneça as credenciais corretamente

    Em scripts, use o método de autenticação da biblioteca em vez de incluir user:pass no parâmetro --proxy-server.

  3. 3

    Para 502: teste outro site

    Acesse um site grande como example.com pelo mesmo proxy. Se funcionar, o problema está no destino original.

  4. 4

    Execute novamente e confirme o IP de saída

    Assim que o túnel for aberto, acesse meu IP no mesmo navegador para confirmar que o tráfego está passando pelo proxy.

Perguntas frequentes

Por que páginas http carregam enquanto páginas https falham?

O tráfego http comum não precisa de CONNECT; o proxy apenas encaminha a requisição diretamente. Somente o https abre um túnel, portanto erros de túnel só acontecem nele.

O que causa o ERR_TUNNEL_CONNECTION_FAILED no Android?

Geralmente é um aplicativo que não consegue enviar usuário e senha para um proxy Wi-Fi. Acesse a mesma página no Chrome para Android; se o Chrome solicitar o login e carregar o site, a falha está no app.

Posso colocar user:pass dentro de --proxy-server?

Não. O Chrome ignora credenciais nessa flag, o que resulta em um 407 e no erro de túnel. Em vez disso, faça a autenticação pelo Puppeteer, Playwright ou por uma extensão.

Mudar para SOCKS5 elimina o erro de túnel?

Apenas se o seu plano for SOCKS5. A VinaProxy oferece tanto HTTP(S) quanto SOCKS5; escolha o protocolo indicado para o seu plano no painel, já que protocolos divergentes causam outros erros.

Proxies compatíveis com Puppeteer e Playwright

Os proxies da VinaProxy usam autenticação padrão por user:pass, compatível nativamente com as bibliotecas de automação mais populares.

Ver preços

Artigos relacionados

Erros de proxy
Como corrigir o erro 407 Proxy Authentication Required
O erro 407 Proxy Authentication Required significa que o proxy respondeu, mas rejeitou seu login. Veja saídas reais do curl, as causas prováveis e como resolver por aplicativo.
Erros de proxy
Erros 502 Bad Gateway no proxy: descubra quem enviou o erro
Um erro 502 Bad Gateway via proxy significa que um servidor intermediário não obteve uma resposta válida. Veja como descobrir se a culpa é do proxy ou do site, com saídas reais do curl.
Configuração de proxy
Como configurar um proxy com autenticação no Puppeteer (Node.js)
Configure proxies HTTP(S) autenticados no Puppeteer com Node.js usando o argumento --proxy-server e o método await page.authenticate().
Configuração de proxy
Como configurar proxy no Playwright (autenticação global e por contexto)
Configure proxies HTTP(S) autenticados no Playwright para Node.js e Python. Execute múltiplos IPs estáticos isolados entre diferentes BrowserContexts.
Configuração de proxy
Como configurar proxy autenticado no Selenium WebDriver
Configure proxies HTTP(S) autenticados por usuário e senha no Selenium WebDriver usando selenium-wire ou uma extensão onAuthRequired.
Ferramentas grátis
Verificador de Proxy: Teste Seus Proxies Online
Verificador de proxy grátis: cole até 100 proxies como ip:port:user:pass e teste proxy online para ver status, IP de saída e latência, com cada erro explicado.
Configuração de proxy
Como configurar proxy no Google Chrome
Configure proxies HTTP(S) da VinaProxy no Google Chrome sem alterar o IP de todo o sistema utilizando extensões, flags --proxy-server ou perfis independentes.
Configuração de proxy
Como configurar proxy no Windows 10 e Windows 11
Configure proxies HTTP(S) da VinaProxy no Windows 10 e Windows 11 usando as Configurações do Sistema WinINET, variáveis de ambiente do PowerShell ou netsh winhttp.