Rezolvarea erorii ERR_TUNNEL_CONNECTION_FAILED cu un proxy
Updated:
Pentru a încărca o pagină https:// printr-un proxy, browserul trimite o cerere CONNECT și așteaptă ca proxy-ul să deschidă un tunel către site. ERR_TUNNEL_CONNECTION_FAILED apare atunci când proxy-ul răspunde la acea cerere cu o eroare în loc să o accepte. Problema este că Chrome nu îți spune ce eroare a apărut, așa că primul pas este să afli codul real.
Două cazuri reproduse de noi
Ambele au rulat pe un proxy de test, menționat aici cu adresa din documentație 203.0.113.10:8080 și user123:pass456. Într-o fereastră normală de Chrome, cazul 407 nu devine o eroare de tunel; Chrome deschide în schimb o casetă de dialog pentru introducerea numelui de utilizator și a parolei proxy-ului. Erorile de tunel cauzate de un 407 apar așadar cel mai des în instrumentele de automatizare și în aplicațiile care nu pot solicita o parolă.
| Proxy-ul răspunde la CONNECT cu | Chrome afișează | curl afișează |
|---|---|---|
407 fără posibilitatea de a introduce o parolă (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502 deoarece proxy-ul nu poate accesa site-ul | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Cauze, în ordinea probabilității
- Un script de automatizare nu trimite credențiale. Parametrul
--proxy-serverdin Chrome acceptă doar host și port, nu user:pass. Puppeteer sau Selenium în mod headless primește 407 și raportează o eroare de tunel. - O aplicație mobilă în spatele unui proxy Wi-Fi protejat prin parolă. Aplicația nu are un dialog de autentificare, așa că conexiunea HTTPS eșuează în timp ce browserul continuă să funcționeze.
- Proxy-ul nu poate accesa destinația. Acesta returnează 502 la CONNECT; pagina dedicată 502 Bad Gateway explică această problemă în detaliu.
- Doar anumite site-uri eșuează. Destinația blochează cererea sau este indisponibilă, în timp ce alte site-uri funcționează prin același proxy.
Află codul real cu o singură comandă curl
Rulează curl -v -x http://user123:[email protected]:8080 https://example.com cu propriile tale valori. Urmărește linia de imediat după > CONNECT example.com:443 HTTP/1.1: un 407 înseamnă că trebuie să urmezi ghidul pentru 407; un 502 indică o problemă la destinație sau pe traseul din spatele proxy-ului. Dacă preferi să nu folosești terminalul, lipește linia în testerul de proxy, care raportează auth failed (407) sau HTTP 502 în aceleași situații.
Rezolvări în funcție de mediu
- Puppeteer: păstrează
--proxy-server=http://host:portla lansare și apeleazăpage.authenticate({ username, password })înainte de navigare. Exemplu complet în ghidul de proxy pentru Puppeteer. - Playwright: transmite
proxy: { server, username, password }la lansarea browserului, iar Playwright gestionează răspunsul 407 în locul tău; consultă Playwright. - Selenium: Chrome nu acceptă user:pass în linia de comandă; ghidul Selenium prezintă variantele funcționale.
- Chrome pe Windows: dacă fereastra de conectare nu apare niciodată, verifică dacă o extensie de proxy o blochează, apoi reîncearcă într-o fereastră fără extensii.
- Telefoane: pentru aplicațiile care necesită un proxy autentificat, folosește o aplicație dedicată de proxy compatibilă cu user:pass, așa cum este descris în ghidul de configurare Android.
Pas cu pas
- 1
Identifică răspunsul la CONNECT
Rulează
curl -v -xcu linia ta de proxy sau introdu-o în verificator pentru a afla dacă proxy-ul returnează 407 sau 502. - 2
Pentru 407: furnizează corect credențialele
În scripturi, folosește mecanismul de autentificare oferit de bibliotecă în loc să incluzi user:pass în
--proxy-server. - 3
Pentru 502: încearcă un alt site
Încarcă un site stabil, cum ar fi example.com, prin același proxy. Dacă funcționează, problema este destinația inițială.
- 4
Rulează din nou și confirmă IP-ul de ieșire
După deschiderea tunelului, accesează IP-ul meu în același browser pentru a confirma că traficul trece prin proxy.
Întrebări frecvente
De ce se încarcă paginile http, dar cele https eșuează?
Protocolul simplu http nu necesită CONNECT; proxy-ul redirecționează cererea direct. Doar https deschide un tunel, de aceea erorile de tunel apar exclusiv în acest caz.
Ce cauzează ERR_TUNNEL_CONNECTION_FAILED pe Android?
Cel mai adesea, o aplicație care nu poate transmite utilizatorul și parola către un proxy Wi-Fi. Încearcă aceeași pagină în Chrome pentru Android; dacă Chrome solicită datele și încarcă pagina, cauza este aplicația respectivă.
Pot introduce user:pass în --proxy-server?
Nu. Chrome ignoră credențialele din acel parametru, ceea ce declanșează un 407 și eroarea de tunel. Autentifică-te prin Puppeteer, Playwright sau printr-o extensie.
Trecerea la SOCKS5 va elimina eroarea de tunel?
Doar dacă pachetul tău comandat este SOCKS5. VinaProxy oferă atât HTTP(S), cât și SOCKS5; selectează protocolul indicat în panoul de control pentru comanda ta, deoarece o nepotrivire va genera alte erori.
Proxy-uri compatibile cu Puppeteer și Playwright
Proxy-urile VinaProxy folosesc autentificare standard user:pass, acceptată nativ de librăriile populare de automatizare.
Vezi prețurile