Rješavanje greške ERR_TUNNEL_CONNECTION_FAILED s proxyjem
Updated:
Za učitavanje https:// stranice putem proxyja, preglednik šalje CONNECT zahtjev i čeka da proxy otvori tunel prema web-mjestu. ERR_TUNNEL_CONNECTION_FAILED se pojavljuje kada proxy na taj zahtjev odgovori greškom umjesto prihvaćanjem. Problem je u tome što vam Chrome ne govori o kojoj je grešci riječ, pa je prvi zadatak otkriti stvarni kod.
Dva slučaja koja smo reproducirali
Oba su slučaja testirana na testnom proxyju, koji je ovdje prikazan s dokumentacijskom adresom 203.0.113.10:8080 i user123:pass456. U uobičajenom prozoru Chromea slučaj 407 ne pretvara se u grešku tunela; Chrome umjesto toga otvara dijaloški okvir za prijavu s korisničkim imenom i lozinkom za proxy. Greške tunela uzrokovane kodom 407 stoga se uglavnom pojavljuju u alatima za automatizaciju i u aplikacijama koje ne mogu zatražiti unos lozinke.
| Proxy na CONNECT odgovara s | Chrome prikazuje | curl prikazuje |
|---|---|---|
407 bez mogućnosti unosa lozinke (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502 jer proxy ne može dosegnuti web-mjesto | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Uzroci, počevši od najvjerojatnijih
- Skripta za automatizaciju ne šalje vjerodajnice. Zastavica
--proxy-serveru Chromeu prihvaća samo host i port, a ne user:pass. Headless Puppeteer ili Selenium dobivaju 407 i javljaju neuspjeh tunela. - Aplikacija na telefonu iza Wi-Fi proxyja zaštićenog lozinkom. Aplikacija nema prozor za prijavu, pa HTTPS veza puca dok preglednik i dalje radi.
- Proxy ne može dosegnuti odredište. Vraća 502 na CONNECT; stranica 502 Bad Gateway to detaljno objašnjava.
- Samo neka web-mjesta ne rade. Odredište blokira promet ili je nedostupno, dok druga web-mjesta rade putem istog proxyja.
Otkrijte stvarni kod jednom curl naredbom
Pokrenite curl -v -x http://user123:[email protected]:8080 https://example.com sa svojim vrijednostima. Pogledajte redak odmah nakon > CONNECT example.com:443 HTTP/1.1: 407 znači da trebate slijediti vodič za 407; 502 upućuje na odredište ili put iza proxyja. Ako radije ne biste koristili terminal, zalijepite liniju u provjeru proxyja, koja za iste situacije prijavljuje auth failed (407) ili HTTP 502.
Rješenja po okruženjima
- Puppeteer: zadržite
--proxy-server=http://host:portpri pokretanju i pozovitepage.authenticate({ username, password })prije navigacije. Potpuni primjer potražite u vodiču za Puppeteer proxy. - Playwright: proslijedite
proxy: { server, username, password }pri pokretanju preglednika i Playwright će umjesto vas riješiti 407; pogledajte Playwright. - Selenium: Chrome ne prihvaća user:pass u naredbenom retku; vodič za Selenium prikazuje izvedive opcije.
- Chrome na Windowsima: ako se dijaloški okvir za prijavu uopće ne pojavljuje, provjerite blokira li ga proširenje za proxy, a zatim pokušajte ponovno u prozoru bez proširenja.
- Telefoni: za aplikacije koje zahtijevaju autentificirani proxy upotrijebite proxy aplikaciju koja podržava user:pass, kao što je opisano u vodiču za postavljanje na Androidu.
Korak po korak
- 1
Identificirajte CONNECT odgovor
Pokrenite
curl -v -xs linijom vašeg proxyja ili je zalijepite u provjeru kako biste saznali vraća li proxy 407 ili 502. - 2
Za 407: ispravno unesite vjerodajnice
U skriptama upotrijebite funkciju za autentifikaciju biblioteke umjesto unosa user:pass u
--proxy-server. - 3
Za 502: isprobajte drugo web-mjesto
Učitajte veliko web-mjesto poput example.com putem istog proxyja. Ako radi, problem je u izvornom odredištu.
- 4
Ponovno pokrenite i potvrdite izlazni IP
Nakon što se tunel otvori, posjetite moj IP u tom istom pregledniku kako biste potvrdili da promet ide putem proxyja.
Često postavljana pitanja
Zašto se http stranice učitavaju, a https stranice ne rade?
Običan http ne zahtijeva CONNECT; proxy izravno prosljeđuje zahtjev. Samo https otvara tunel, pa se greške tunela pojavljuju samo tamo.
Što uzrokuje ERR_TUNNEL_CONNECTION_FAILED na Androidu?
Najčešće aplikacija koja ne može proslijediti korisničko ime i lozinku Wi-Fi proxyju. Isprobajte istu stranicu u Chromeu za Android; ako Chrome zatraži prijavu i učita je, problem je u aplikaciji.
Mogu li navesti user:pass unutar --proxy-server?
Ne. Chrome zanemaruje vjerodajnice u toj zastavici, što dovodi do greške 407 i problema s tunelom. Umjesto toga izvršite autentifikaciju putem Puppeteera, Playwrighta ili proširenja.
Hoće li prelazak na SOCKS5 ukloniti grešku tunela?
Samo ako je vaša narudžba SOCKS5. VinaProxy nudi i HTTP(S) i SOCKS5; odaberite protokol koji je naveden za vašu narudžbu na nadzornoj ploči, jer nepodudaranje uzrokuje druge greške.
Proxyji koji rade s Puppeteerom i Playwrightom
VinaProxy proxyji koriste standardnu user:pass prijavu koju popularne biblioteke za automatizaciju podržavaju bez dodatnih prilagodbi.
Pogledajte cijene