ERR_TUNNEL_CONNECTION_FAILED lahendamine proxy kasutamisel
Updated:
https:// lehe laadimiseks läbi proxy saadab brauser päringu CONNECT ja ootab, et proxy avaks veebisaidini tunneli. ERR_TUNNEL_CONNECTION_FAILED ilmneb siis, kui proxy vastab päringule nõustumise asemel veateatega. Konks on selles, et Chrome ei ütle, millise veaga on tegu, mistõttu tuleb esmalt välja selgitada tegelik kood.
Kaks olukorda, mida taasesitasime
Mõlemat testiti testproxy vastu, mis on siin esitatud dokumentatsiooniaadressiga 203.0.113.10:8080 ja kasutajaga user123:pass456. Tavalises Chrome'i aknas ei muutu 407 tunneliveaks – selle asemel avab Chrome sisselogimisakna proxy kasutajanime ja parooli sisestamiseks. Seetõttu ilmnevad koodist 407 tingitud tunnelivead peamiselt automatiseerimistööriistades ja rakendustes, mis ei saa parooli küsida.
| Proxy vastab CONNECT-päringule koodiga | Chrome kuvab | curl kuvab |
|---|---|---|
407 ilma võimaluseta parooli sisestada (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502, sest proxy ei saa sihtsaidiga ühendust | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Põhjused tõenäosuse järjekorras
- Automatiseerimisskript ei edasta mandaate. Chrome'i lipp
--proxy-serveraktsepteerib ainult hosti ja porti, mitte user:pass. Headless Puppeteer või Selenium saab vastuseks koodi 407 ning teatab tunneli tõrkest. - Parooliga kaitstud Wi-Fi proxy taga olev telefonirakendus. Rakendusel puudub sisselogimisdialoog, mistõttu HTTPS katkeb, samas kui brauser töötab edasi.
- Proxy ei saa sihtkohaga ühendust. See tagastab CONNECT-päringule koodi 502; seda teemat käsitleb põhjalikult 502 Bad Gateway leht.
- Ainult mõned saidid ei tööta. Sihtkoht blokeerib ühendust või on maas, samas kui teised saidid töötavad sama proxy kaudu.
Leia tegelik kood ühe curli käsuga
Käivita curl -v -x http://user123:[email protected]:8080 https://example.com oma väärtustega. Vaata rida kohe pärast rida > CONNECT example.com:443 HTTP/1.1: 407 tähendab, et järgida tuleb 407 juhendit; 502 viitab sihtkohale või proxy taga olevale teekonnale. Kui sa ei soovi terminali kasutada, kleebi rida proxy kontrollijasse, mis kuvab samades olukordades teate auth failed (407) või HTTP 502.
Lahendused keskkondade kaupa
- Puppeteer: jäta käivitamisel
--proxy-server=http://host:portning kutsu enne lehele liikumist väljapage.authenticate({ username, password }). Täielik näide on Puppeteeri proxy juhendis. - Playwright: edasta brauseri käivitamisel
proxy: { server, username, password }ja Playwright vastab koodile 407 sinu eest; vaata Playwright. - Selenium: Chrome ei võta käsurealt vastu väärtust user:pass; toimivaid variante näitab Seleniumi juhend.
- Chrome Windowsis: kui sisselogimisdialoogi ei kuvata, kontrolli, kas proxy laiendus seda ei vaigista, ning proovi uuesti laiendusteta aknas.
- Telefonid: autentimist vajava proxy puhul kasuta rakendustes proxy äppi, mis toetab vormingut user:pass, nagu on kirjeldatud Androidi seadistusjuhendis.
Samm-sammult
- 1
Tuvasta CONNECT-vastus
Käivita
curl -v -xoma proxy reaga või kleebi see kontrollijasse, et teada saada, kas proxy tagastab koodi 407 või 502. - 2
Koodi 407 puhul: sisesta mandaadid korrektselt
Kasuta skriptides teegi autentimiskonksu, selle asemel et lisada user:pass lipule
--proxy-server. - 3
Koodi 502 puhul: proovi mõnda teist saiti
Laadi sama proxy kaudu mõni suur sait, näiteks example.com. Kui see töötab, peitub probleem algses sihtkohas.
- 4
Käivita uuesti ja kinnita väljund-IP
Kui tunnel avaneb, külasta samas brauseris lehte minu IP, veendumaks, et liiklus liigub läbi proxy.
Korduma kippuvad küsimused
Miks http-lehed laadivad, aga https-lehed ebaõnnestuvad?
Tavaline http ei vaja CONNECT-päringut – proxy suunab päringu otse edasi. Tunnel avatakse ainult https-i puhul, mistõttu tekivad tunnelivead ainult seal.
Mis põhjustab viga ERR_TUNNEL_CONNECTION_FAILED Androidis?
Kõige sagedamini rakendus, mis ei suuda Wi-Fi proxyle kasutajanime ja parooli edastada. Proovi sama lehte Androidi Chrome'is; kui Chrome suudab andmeid küsida ja lehe laadida, on probleem rakenduses.
Kas saan lisada user:pass lipu --proxy-server sisse?
Ei. Chrome eirab selles lipus olevaid mandaate, mis toob kaasa koodi 407 ja tunnelivea. Autendi selle asemel Puppeteeri, Playwrighti või laienduse kaudu.
Kas lülitumine protokollile SOCKS5 eemaldab tunnelivea?
Ainult juhul, kui sinu tellimus on SOCKS5. VinaProxy pakub nii HTTP(S)- kui ka SOCKS5-ühendusi; vali protokoll, mida kuvatakse sinu tellimuses töölaual, kuna ebakõla tekitab teisi vigu.
Proxyd, mis töötavad Puppeteeri ja Playwrightiga
VinaProxy proxyd kasutavad standardset user:pass sisselogimist, mida populaarsed automatiseerimisteegid toetavad kohe ilma lisaseadistusteta.
Vaata hindu