Odpravljanje napake ERR_TUNNEL_CONNECTION_FAILED pri uporabi proxyja
Updated:
Za nalaganje strani https:// prek proxyja brskalnik pošlje zahtevo CONNECT in počaka, da proxy odpre predor do spletnega mesta. ERR_TUNNEL_CONNECTION_FAILED se pojavi, ko proxy namesto potrditve na to zahtevo odgovori z napako. Težava je v tem, da Chrome ne razkrije točne napake, zato je vaša prva naloga poiskati pravo kodo.
Dva primera, ki smo ju poustvarili
Oba primera sta se izvajala na testnem proxyju, ki je tukaj naveden z dokumentacijskim naslovom 203.0.113.10:8080 in user123:pass456. V običajnem oknu brskalnika Chrome koda 407 ne povzroči napake predora; Chrome namesto tega odpre prijavno pogovorno okno za uporabniško ime in geslo proxyja. Napake predora zaradi kode 407 se zato večinoma pojavljajo v orodjih za avtomatizacijo in v aplikacijah, ki ne morejo zahtevati gesla.
| Proxy na CONNECT odgovori z | Chrome prikaže | curl prikaže |
|---|---|---|
407 brez možnosti vnosa gesla (brezglavi Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502, ker proxy ne more doseči spletnega mesta | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Vzroki, od najverjetnejšega naprej
- Skript za avtomatizacijo ne pošilja poverilnic. Chromov parameter
--proxy-serversprejme le gostitelja in vrata, ne pa uporabniškega imena in gesla. Brezglavi Puppeteer ali Selenium prejme 407 in javi napako predora. - Aplikacija v telefonu za proxyjem Wi-Fi z geslom. Aplikacija nima prijavnega pogovornega okna, zato se povezava HTTPS prekine, medtem ko brskalnik še vedno deluje.
- Proxy ne more doseči cilja. Na CONNECT vrne 502; stran 502 Bad Gateway to obravnava podrobneje.
- Spodletijo le nekatera spletna mesta. Cilj blokira zahteve ali ne deluje, medtem ko druga spletna mesta prek istega proxyja delujejo.
Poiščite pravo kodo z enim ukazom curl
Zaženite curl -v -x http://user123:[email protected]:8080 https://example.com s svojimi vrednostmi. Oglejte si vrstico neposredno za > CONNECT example.com:443 HTTP/1.1: koda 407 pomeni, da sledite vodniku za 407; koda 502 kaže na težavo s ciljem ali potjo za proxyjem. Če terminala ne želite uporabljati, prilepite vrstico v preverjalnik proxyjev, ki za enake primere javi auth failed (407) ali HTTP 502.
Rešitve glede na okolje
- Puppeteer: pri zagonu ohranite
--proxy-server=http://host:portin pred navigacijo pokličitepage.authenticate({ username, password }). Celoten primer najdete v vodniku za Puppeteer. - Playwright: ob zagonu brskalnika posredujte
proxy: { server, username, password }, Playwright pa bo sam odgovoril na kodo 407; oglejte si Playwright. - Selenium: Chrome v ukazni vrstici ne sprejme podatkov user:pass; vodnik za Selenium prikazuje delujoče možnosti.
- Chrome v sistemu Windows: če se prijavno pogovorno okno nikoli ne prikaže, preverite, ali ga morda preprečuje razširitev za proxy, nato pa poskusite znova v oknu brez razširitev.
- Telefoni: za aplikacije, ki potrebujejo avtentificiran proxy, uporabite aplikacijo za proxy s podporo za user:pass, kot je opisano v vodniku za namestitev v sistemu Android.
Navodila po korakih
- 1
Prepoznajte odgovor na CONNECT
Zaženite
curl -v -xs svojo vrstico za proxy ali jo prilepite v preverjalnik, da ugotovite, ali proxy vrača kodo 407 ali 502. - 2
Za 407: pravilno navedite poverilnice
V skriptih uporabite vgrajeno možnost knjižnice za overjanje, namesto da vpisujete user:pass v
--proxy-server. - 3
Za 502: poskusite drugo spletno mesto
Prek istega proxyja naložite večje spletno mesto, kot je example.com. Če deluje, je težava v prvotnem cilju.
- 4
Znova zaženite in potrdite izhodni IP
Ko se predor odpre, v istem brskalniku obiščite moj IP in preverite, ali promet poteka prek proxyja.
Pogosta vprašanja
Zakaj se strani http naložijo, strani https pa spodletijo?
Navadni http ne potrebuje zahteve CONNECT; proxy zahtevo posreduje neposredno. Predor odpira le https, zato se napake predora pojavljajo le tam.
Kaj povzroča ERR_TUNNEL_CONNECTION_FAILED v sistemu Android?
Najpogosteje aplikacija, ki proxyju Wi-Fi ne more posredovati uporabniškega imena in gesla. Poskusite isto stran odpreti v brskalniku Chrome za Android; če Chrome zahteva vnos in stran naloži, je težava v aplikaciji.
Ali lahko vpišem user:pass v --proxy-server?
Ne. Chrome poverilnice v tem parametru prezre, kar povzroči kodo 407 in napako predora. Namesto tega izvedite overjanje prek orodij Puppeteer, Playwright ali razširitve.
Ali bo preklop na SOCKS5 odpravil napako predora?
Le če vaše naročilo vključuje SOCKS5. VinaProxy ponuja tako HTTP(S) kot SOCKS5; izberite protokol, ki je za vaše naročilo prikazan na nadzorni plošči, saj neujemanje povzroči druge napake.
Proxyji, ki delujejo z orodjema Puppeteer in Playwright
Proxyji ponudnika VinaProxy uporabljajo standardno prijavo z user:pass, ki jo priljubljene knjižnice za avtomatizacijo podpirajo že privzeto.
Oglejte si cene