Los ERR_TUNNEL_CONNECTION_FAILED met 'n proxy op
Updated:
Om 'n https://-bladsy deur 'n proxy te laai, stuur die blaaier 'n CONNECT-versoek en wag dat die proxy 'n tonnel na die webwerf oopmaak. ERR_TUNNEL_CONNECTION_FAILED verskyn wanneer die proxy daardie versoek met 'n fout beantwoord in plaas daarvan om toe te stem. Die haakplek is dat Chrome jou nie vertel watter fout dit is nie, so die eerste taak is om die werklike kode te vind.
Twee gevalle wat ons gereproduseer het
Albei is teen 'n toetsproxy uitgevoer, hier herskryf met die dokumentasie-adres 203.0.113.10:8080 en user123:pass456. In 'n gewone Chrome-venster verander die 407-geval nie in 'n tonnelfout nie; Chrome maak eerder 'n aanmelddialoog oop vir die proxy-gebruikersnaam en -wagwoord. Tonnelfoute wat deur 'n 407 veroorsaak word, verskyn dus meestal in outomatiseringsnutsmiddels en in toepassings wat nie vir 'n wagwoord kan vra nie.
| Proxy beantwoord CONNECT met | Chrome wys | curl wys |
|---|---|---|
407 sonder 'n manier om 'n wagwoord in te voer (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502 omdat die proxy nie die werf kan bereik nie | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Oorsake, mees waarskynlike eerste
- 'n Outomatiseringskrip stuur geen aanmeldinligting nie. Chrome se
--proxy-server-vlag aanvaar slegs gasheer en poort, nie user:pass nie. Headless Puppeteer of Selenium kry 'n 407 en rapporteer 'n tonnelfout. - 'n Foontoepassing agter 'n wagwoordbeskermde Wi-Fi-proxy. Die toepassing het geen aanmelddialoog nie, so HTTPS breek terwyl die blaaier steeds werk.
- Die proxy kan nie die teiken bereik nie. Dit stuur 502 terug op CONNECT; die 502 Bad Gateway-bladsy dek dit breedvoerig.
- Slegs sommige werwe misluk. Die bestemming blokkeer of is af, terwyl ander werwe deur dieselfde proxy werk.
Vind die werklike kode met een curl-opdrag
Voer curl -v -x http://user123:[email protected]:8080 https://example.com met jou eie waardes uit. Kyk na die reël reg na > CONNECT example.com:443 HTTP/1.1: 'n 407 beteken jy moet die 407-gids volg; 'n 502 dui op die bestemming of die pad agter die proxy. As jy verkies om nie 'n terminaal te gebruik nie, plak die reël in die proxy-toetser, wat auth failed (407) of HTTP 502 vir dieselfde situasies rapporteer.
Oplossings volgens omgewing
- Puppeteer: behou
--proxy-server=http://host:portby bekendstelling en roeppage.authenticate({ username, password })voor navigasie. Volledige voorbeeld in die Puppeteer-proxygids. - Playwright: gee
proxy: { server, username, password }deur wanneer die blaaier begin word en Playwright hanteer die 407 vir jou; kyk na Playwright. - Selenium: Chrome aanvaar nie user:pass op die opdragreël nie; die Selenium-gids wys werkbare opsies.
- Chrome op Windows: as die aanmelddialoog nooit verskyn nie, kyk of 'n proxy-uitbreiding dit onderdruk, en probeer dan weer in 'n venster sonder uitbreidings.
- Fone: vir toepassings wat 'n geverifieerde proxy benodig, gebruik 'n proxy-toepassing wat user:pass ondersteun soos in die Android-opstellingsgids.
Stap vir stap
- 1
Identifiseer die CONNECT-antwoord
Voer
curl -v -xmet jou proxy-reël uit, of plak dit in die toetser, om vas te stel of die proxy 407 of 502 terugstuur. - 2
Vir 407: verskaf aanmeldinligting korrek
In skripte, gebruik die biblioteek se verifikasiehaak in plaas daarvan om user:pass in
--proxy-serverte plaas. - 3
Vir 502: probeer 'n ander werf
Laai 'n groot webwerf soos example.com deur dieselfde proxy. As dit werk, is die oorspronklike bestemming die probleem.
- 4
Voer weer uit en bevestig die uitgang-IP
Sodra die tonnel oopmaak, besoek my IP in daardie selfde blaaier om te bevestig dat verkeer deur die proxy gaan.
Gereelde vrae
Waarom laai http-bladsye terwyl https-bladsye misluk?
Gewone http benodig geen CONNECT nie; die proxy stuur die versoek direk aan. Slegs https maak 'n tonnel oop, so tonnelfoute verskyn slegs daar.
Wat veroorsaak ERR_TUNNEL_CONNECTION_FAILED op Android?
Meesal 'n toepassing wat nie die gebruikersnaam en wagwoord na 'n Wi-Fi-proxy kan deurgee nie. Probeer dieselfde bladsy in Chrome vir Android; as Chrome daarvoor kan vra en dit laai, is die toepassing die probleem.
Kan ek user:pass binne --proxy-server plaas?
Nee. Chrome ignoreer aanmeldinligting in daardie vlag, wat lei tot 'n 407 en die tonnelfout. Verifieer eerder deur Puppeteer, Playwright of 'n uitbreiding.
Sal oorskakeling na SOCKS5 die tonnelfout verwyder?
Slegs as jou bestelling SOCKS5 is. VinaProxy bied beide HTTP(S) en SOCKS5; kies die protokol wat jou bestelling in die kontroleskerm wys, aangesien 'n wanverhouding ander foute veroorsaak.
Proxies wat met Puppeteer en Playwright werk
VinaProxy-proxies gebruik standaard user:pass-aanmelding wat gewilde outomatiseringsbiblioteke sonder moeite hanteer.
Sien pryse