Az ERR_TUNNEL_CONNECTION_FAILED javítása proxynál
Updated:
Egy https:// oldal proxyn keresztüli betöltéséhez a böngésző egy CONNECT kérést küld, és megvárja, amíg a proxy alagutat nyit az oldal felé. Az ERR_TUNNEL_CONNECTION_FAILED akkor jelenik meg, ha a proxy a kérés jóváhagyása helyett hibával válaszol. A bökkenő az, hogy a Chrome nem jelzi ki a pontos hibát, így az első feladat a valódi kód kiderítése.
Két általunk reprodukált eset
Mindkét eset egy tesztproxyn futott, amelyet itt a dokumentációs 203.0.113.10:8080 címmel és a user123:pass456 adatokkal helyettesítettünk. Normál Chrome ablakban a 407-es eset nem válik alagúthibává: a Chrome ehelyett egy bejelentkezési párbeszédpanelt nyit meg a proxy felhasználónevéhez és jelszavához. A 407 által okozott alagúthibák ezért többnyire automatizálási eszközökben és olyan alkalmazásokban jelentkeznek, amelyek nem képesek jelszót kérni.
| A proxy válasza a CONNECT kérésre | A Chrome ezt mutatja | A curl ezt mutatja |
|---|---|---|
407 jelszó megadásának lehetősége nélkül (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502, mert a proxy nem éri el az oldalt | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Lehetséges okok a valószínűség sorrendjében
- Egy automatizálási szkript nem küld hitelesítési adatokat. A Chrome
--proxy-serverkapcsolója kizárólag a hosztot és a portot fogadja el, a user:pass formátumot nem. A headless Puppeteer vagy Selenium 407-es választ kap, és alagúthibát jelez. - Jelszóval védett Wi-Fi proxy mögötti mobilalkalmazás. Az alkalmazás nem jelenít meg bejelentkezési felületet, így a HTTPS kapcsolat meghiúsul, miközben a böngésző továbbra is működik.
- A proxy nem éri el a céloldalt. 502-es hibakóddal válaszol a CONNECT kérésre; az 502 Bad Gateway oldal ezt részletesen tárgyalja.
- Csak bizonyos oldalak nem működnek. A céloldal blokkolja a kéréseket vagy leállt, miközben más oldalak működnek ugyanazon a proxyn keresztül.
Keresse meg a valódi kódot egyetlen curl paranccsal
Futtassa a curl -v -x http://user123:[email protected]:8080 https://example.com parancsot a saját adataival. Nézze meg a közvetlenül a > CONNECT example.com:443 HTTP/1.1 utáni sort: a 407 azt jelenti, hogy kövesse a 407-es útmutatót; az 502 a céloldalra vagy a proxy mögötti útvonal hibájára utal. Ha nem szeretne terminált használni, illessze be a sort a proxy-ellenőrzőbe, amely ugyanezekben az esetekben az auth failed (407) vagy az HTTP 502 hibát jelzi.
Megoldások környezetenként
- Puppeteer: indításkor hagyja meg a
--proxy-server=http://host:portbeállítást, és a navigálás előtt hívja meg apage.authenticate({ username, password })metódust. Teljes példa a Puppeteer proxy-útmutatóban. - Playwright: a böngésző indításakor adja át a
proxy: { server, username, password }értéket, és a Playwright automatikusan kezeli a 407-es választ; lásd: Playwright. - Selenium: a Chrome nem fogad el user:pass adatokat a parancssorban; a Selenium útmutató bemutatja a működő lehetőségeket.
- Chrome Windows alatt: ha a bejelentkezési ablak egyáltalán nem jelenik meg, ellenőrizze, hogy nem tiltja-e le egy proxybővítmény, majd próbálja újra egy bővítmények nélküli ablakban.
- Telefonok: a hitelesítést igénylő proxyhoz használjon olyan proxyalkalmazást, amely támogatja a user:pass beállítást, az Android beállítási útmutató szerint.
Lépésről lépésre
- 1
A CONNECT válasz azonosítása
Futtassa a
curl -v -xparancsot a proxy adataival, vagy illessze be az ellenőrzőbe annak megállapítására, hogy a proxy 407-es vagy 502-es kódot ad-e vissza. - 2
407 esetén: a hitelesítési adatok megfelelő megadása
A szkriptekben használja a programkönyvtár beépített hitelesítési mechanizmusát ahelyett, hogy a user:pass adatokat a
--proxy-serverkapcsolóban adná meg. - 3
502 esetén: próbáljon ki egy másik oldalt
Töltsön be egy stabil, nagy webhelyet, például az example.com oldalt ugyanazon a proxyn keresztül. Ha működik, az eredeti céloldallal van probléma.
- 4
Újrafuttatás és a kimenő IP ellenőrzése
Miután az alagút megnyílt, nyissa meg a saját IP oldalt ugyanebben a böngészőben annak ellenőrzésére, hogy a forgalom valóban a proxyn halad-e keresztül.
Gyakran ismételt kérdések
Miért töltődnek be a http oldalak, miközben a https oldalak hibát jeleznek?
A sima http-hez nincs szükség CONNECT kérésre; a proxy közvetlenül továbbítja a kérést. Csak a https nyit alagutat, így alagúthibák is kizárólag ott fordulnak elő.
Mi okozza az ERR_TUNNEL_CONNECTION_FAILED hibát Androidon?
Leggyakrabban egy olyan alkalmazás, amely nem tudja átadni a felhasználónevet és a jelszót a Wi-Fi proxynak. Próbálja megnyitni ugyanezt az oldalt az Androidhoz készült Chrome-ban; ha a Chrome képes bekérni az adatokat és betölteni az oldalt, az alkalmazás okozza a hibát.
Megadható a user:pass a --proxy-server kapcsolóban?
Nem. A Chrome figyelmen kívül hagyja a hitelesítési adatokat ebben a jelzőben, ami 407-es válaszhoz és alagúthibához vezet. Hitelesítsen inkább Puppeteer, Playwright vagy egy bővítmény segítségével.
Megszünteti a SOCKS5 protokollra váltás az alagúthibát?
Csak akkor, ha a megrendelése SOCKS5 típusú. A(z) VinaProxy mind a HTTP(S), mind a SOCKS5 protokollt biztosítja; válassza azt a protokollt, amely a vezérlőpulton a rendelésénél szerepel, mivel az eltérés más jellegű hibákat eredményez.
Puppeteerrel és Playwrighttal működő proxyk
A(z) VinaProxy proxyk szabványos user:pass bejelentkezést használnak, amelyet a népszerű automatizálási könyvtárak azonnal támogatnak.
Árak megtekintése