Ako opraviť ERR_TUNNEL_CONNECTION_FAILED pri použití proxy
Updated:
Ak chcete načítať stránku s https:// cez proxy, prehliadač odošle požiadavku CONNECT a čaká, kým proxy otvorí tunel k cieľovému webu. ERR_TUNNEL_CONNECTION_FAILED sa zobrazí vtedy, keď proxy namiesto potvrdenia odpovie chybou. Háčik je v tom, že Chrome vám nepovie, o akú chybu ide, takže prvým krokom je zistiť skutočný kód.
Dva prípady, ktoré sme reprodukovali
Oba prípady sme testovali na testovacej proxy, tu uvedenej s dokumentačnou adresou 203.0.113.10:8080 a prihlasovacími údajmi user123:pass456. V bežnom okne prehliadača Chrome sa kód 407 nezmení na chybu tunela – Chrome namiesto toho otvorí prihlasovací dialóg pre používateľské meno a heslo k proxy. Chyby tunela spôsobené kódom 407 sa preto vyskytujú najmä v automatizačných nástrojoch a v aplikáciách, ktoré nedokážu zobraziť výzvu na zadanie hesla.
| Proxy odpovedá na CONNECT kódom | Chrome zobrazuje | curl zobrazuje |
|---|---|---|
407 bez možnosti zadať heslo (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502, pretože proxy sa nedokáže spojiť s cieľovým webom | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Príčiny od najpravdepodobnejších
- Automatizačný skript neodosiela prihlasovacie údaje. Parameter
--proxy-serverv prehliadači Chrome prijíma iba hostiteľa a port, nie user:pass. Headless Puppeteer alebo Selenium dostane kód 407 a nahlási zlyhanie tunela. - Mobilná aplikácia za Wi-Fi proxy chránenou heslom. Aplikácia nemá prihlasovací dialóg, takže HTTPS spojenie zlyhá, hoci prehliadač naďalej funguje.
- Proxy sa nedokáže spojiť s cieľom. Na požiadavku CONNECT vráti kód 502; podrobnosti nájdete na stránke 502 Bad Gateway.
- Zlyhávajú iba niektoré stránky. Cieľový web blokuje pripojenie alebo je nedostupný, zatiaľ čo iné stránky cez tú istú proxy fungujú.
Zistite skutočný kód pomocou jedného príkazu curl
Spustite príkaz curl -v -x http://user123:[email protected]:8080 https://example.com s vašimi vlastnými hodnotami. Pozrite sa na riadok hneď za > CONNECT example.com:443 HTTP/1.1: kód 407 znamená, že by ste mali postupovať podľa návodu pre chybu 407; kód 502 poukazuje na problém s cieľovým webom alebo trasou za proxy. Ak nechcete používať terminál, vložte tento riadok do nástroja proxy checker, ktorý pre rovnaké situácie vypíše auth failed (407) alebo HTTP 502.
Riešenia podľa prostredia
- Puppeteer: pri spustení ponechajte
--proxy-server=http://host:porta pred navigáciou zavolajtepage.authenticate({ username, password }). Kompletný príklad nájdete v návode pre proxy v Puppeteeri. - Playwright: pri spúšťaní prehliadača odovzdajte
proxy: { server, username, password }a Playwright vyrieši kód 407 za vás; pozrite si návod pre Playwright. - Selenium: Chrome neprijíma user:pass v príkazovom riadku; funkčné možnosti nájdete v návode pre Selenium.
- Chrome v systéme Windows: ak sa prihlasovací dialóg vôbec nezobrazí, skontrolujte, či ho nepotláča rozšírenie pre proxy, a skúste to znova v okne bez rozšírení.
- Telefóny: v prípade aplikácií, ktoré vyžadujú overenú proxy, použite proxy aplikáciu s podporou user:pass podľa návodu na nastavenie pre Android.
Krok za krokom
- 1
Identifikujte odpoveď na CONNECT
Spustite príkaz
curl -v -xs údajmi vašej proxy alebo ich vložte do overovača a zistite, či proxy vracia kód 407 alebo 502. - 2
Pri kóde 407: zadajte prihlasovacie údaje správnym spôsobom
V skriptoch použite autentifikačnú funkciu danej knižnice namiesto vkladania user:pass do parametra
--proxy-server. - 3
Pri kóde 502: vyskúšajte inú stránku
Načítajte cez tú istú proxy veľký web, napríklad example.com. Ak funguje, problém je v pôvodnom cieľovom webe.
- 4
Zopakujte test a overte výstupnú IP adresu
Keď sa tunel otvorí, otvorte v tom istom prehliadači stránku moja IP a overte, že prevádzka prechádza cez proxy.
Často kladené otázky
Prečo sa stránky http načítavajú, zatiaľ čo https zlyhávajú?
Obyčajný protokol http nevyžaduje CONNECT; proxy požiadavku preposiela priamo. Tunel otvára iba https, preto sa chyby tunela vyskytujú len pri ňom.
Čo spôsobuje ERR_TUNNEL_CONNECTION_FAILED v systéme Android?
Najčastejšie ide o aplikáciu, ktorá nedokáže odovzdať používateľské meno a heslo pre Wi-Fi proxy. Skúste rovnakú stránku otvoriť v prehliadači Chrome pre Android; ak Chrome dokáže zobraziť výzvu a načítať ju, problém je v aplikácii.
Môžem zadať user:pass do parametra --proxy-server?
Nie. Chrome prihlasovacie údaje v tomto parametri ignoruje, čo vedie ku kódu 407 a chybe tunela. Namiesto toho vykonajte autentifikáciu cez Puppeteer, Playwright alebo rozšírenie.
Odstráni prepnutie na SOCKS5 chybu tunela?
Iba v prípade, že vaša objednávka je pre SOCKS5. VinaProxy ponúka HTTP(S) aj SOCKS5; vyberte si protokol, ktorý máte uvedený pri objednávke v dashboarde, pretože nesúlad spôsobí iné chyby.
Proxy, ktoré fungujú s Puppeteerom a Playwrightom
Proxy od VinaProxy využívajú štandardné prihlásenie user:pass, ktoré populárne automatizačné knižnice podporujú bez ďalšej konfigurácie.
Zobraziť cenník