Jak vyřešit ERR_TUNNEL_CONNECTION_FAILED při použití proxy
Updated:
Při načítání stránky s https:// přes proxy odesílá prohlížeč požadavek CONNECT a čeká, až proxy otevře k webu tunel. Chyba ERR_TUNNEL_CONNECTION_FAILED se zobrazí, když proxy na tento požadavek odpoví chybou místo navázání spojení. Háček je v tom, že Chrome neuvádí konkrétní chybu, takže prvním krokem je zjistit skutečný kód.
Dva případy, které jsme reprodukovali
Oba testy proběhly proti testovací proxy, zde uvedené s ukázkovou adresou 203.0.113.10:8080 a údaji user123:pass456. V běžném okně Chrome kód 407 nezpůsobí chybu tunelu – Chrome místo toho otevře přihlašovací dialog pro zadání uživatelského jména a hesla k proxy. Chyby tunelu způsobené kódem 407 se proto objevují především v automatizačních nástrojích a v aplikacích, které neumějí zobrazit výzvu k zadání hesla.
| Proxy na CONNECT odpoví | Chrome zobrazí | curl zobrazí |
|---|---|---|
407 bez možnosti zadat heslo (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502, protože proxy se nemůže spojit s webem | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Příčiny, od těch nejpravděpodobnějších
- Automatizační skript neodesílá přihlašovací údaje. Přepínač Chrome
--proxy-serverpřijímá pouze hostitele a port, nikoli user:pass. Headless Puppeteer nebo Selenium obdrží kód 407 a nahlásí selhání tunelu. - Mobilní aplikace za Wi-Fi proxy chráněnou heslem. Aplikace nemá žádný přihlašovací dialog, takže HTTPS přestane fungovat, zatímco prohlížeč stále běží.
- Proxy se nemůže spojit s cílem. Na požadavek CONNECT vrátí 502; podrobně se tomu věnuje stránka 502 Bad Gateway.
- Selhávají pouze některé weby. Cílový web proxy blokuje nebo má výpadek, zatímco jiné weby přes stejnou proxy fungují.
Zjistěte skutečný kód pomocí jediného příkazu curl
Spusťte curl -v -x http://user123:[email protected]:8080 https://example.com s vlastními hodnotami. Podívejte se na řádek hned za > CONNECT example.com:443 HTTP/1.1: kód 407 znamená, že byste měli postupovat podle průvodce chybou 407; kód 502 ukazuje na problém u cílového webu nebo na trase za proxy. Pokud nechcete používat terminál, vložte řádek do nástroje na kontrolu proxy, který ve stejných situacích nahlásí auth failed (407) nebo HTTP 502.
Řešení podle prostředí
- Puppeteer: při spuštění ponechte
--proxy-server=http://host:porta před přechodem na stránku zavolejtepage.authenticate({ username, password }). Kompletní příklad najdete v průvodci nastavením proxy pro Puppeteer. - Playwright: při spouštění prohlížeče předejte
proxy: { server, username, password }a Playwright kód 407 vyřeší za vás; viz Playwright. - Selenium: Chrome nepřijímá user:pass na příkazovém řádku; funkční řešení popisuje průvodce pro Selenium.
- Chrome ve Windows: pokud se přihlašovací dialog vůbec nezobrazí, zkontrolujte, zda ho nepotlačuje nějaké proxy rozšíření, a zkuste to znovu v okně bez rozšíření.
- Chytré telefony: u aplikací, které vyžadují autentizovanou proxy, použijte proxy aplikaci s podporou user:pass podle návodu k nastavení pro Android.
Krok za krokem
- 1
Zjistěte odpověď na požadavek CONNECT
Spusťte
curl -v -xse svým proxy řádkem nebo jej vložte do kontrolního nástroje a zjistěte, zda proxy vrací 407, nebo 502. - 2
Pro kód 407: předejte přihlašovací údaje správně
Ve skriptech použijte autentizační metodu dané knihovny namísto vkládání user:pass do
--proxy-server. - 3
Pro kód 502: vyzkoušejte jiný web
Načtěte přes stejnou proxy velký web, například example.com. Pokud funguje, problém je na straně původního cíle.
- 4
Spusťte test znovu a ověřte výstupní IP adresu
Jakmile se tunel otevře, navštivte ve stejném prohlížeči stránku moje IP a ověřte, že provoz skutečně prochází přes proxy.
Často kladené otázky
Proč se http stránky načítají, ale https stránky selhávají?
Běžné http požadavek CONNECT nepotřebuje; proxy předává požadavek přímo. Tunel otevírá pouze https, proto se chyby tunelu objevují jen u něj.
Co způsobuje ERR_TUNNEL_CONNECTION_FAILED na Androidu?
Nejčastěji jde o aplikaci, která neumí předat uživatelské jméno a heslo pro Wi-Fi proxy. Zkuste stejnou stránku otevřít v aplikaci Chrome pro Android; pokud Chrome zobrazí výzvu k přihlášení a stránku načte, problém je v samotné aplikaci.
Mohu zadat user:pass do parametru --proxy-server?
Ne. Chrome přihlašovací údaje v tomto parametru ignoruje, což vede ke kódu 407 a chybě tunelu. K přihlášení využijte raději Puppeteer, Playwright nebo rozšíření.
Odstraní přepnutí na SOCKS5 chybu tunelu?
Pouze pokud máte zakoupený protokol SOCKS5. VinaProxy nabízí HTTP(S) i SOCKS5; zvolte protokol, který máte uvedený u své objednávky v administračním panelu, protože nesoulad protokolů způsobuje jiné chyby.
Proxy, které fungují s Puppeteerem i Playwrightem
Proxy od VinaProxy využívají standardní přihlašování user:pass, které oblíbené automatizační knihovny podporují bez nutnosti složitého nastavování.
Zobrazit ceník