ERR_TUNNEL_CONNECTION_FAILED -virheen korjaus välityspalvelimella
Updated:
Kun https://-sivu ladataan välityspalvelimen kautta, selain lähettää CONNECT-pyynnön ja odottaa välityspalvelimen avaavan tunnelin sivustolle. ERR_TUNNEL_CONNECTION_FAILED ilmenee, kun välityspalvelin vastaa pyyntöön virheellä hyväksynnän sijaan. Ongelmana on, että Chrome ei kerro virheen syytä, joten ensimmäinen tehtävä on selvittää todellinen tilakoodi.
Kaksi toistamaamme tapausta
Molemmat testattiin testivälityspalvelimella, joka on tässä esitetty dokumentaatio-osoitteella 203.0.113.10:8080 ja tunnuksilla user123:pass456. Tavallisessa Chrome-ikkunassa 407-tilanne ei johda tunnelivirheeseen, vaan Chrome avaa kirjautumisikkunan välityspalvelimen käyttäjätunnusta ja salasanaa varten. Koodista 407 johtuvat tunnelivirheet ilmenevätkin pääasiassa automaatiotyökaluissa ja sovelluksissa, jotka eivät pysty pyytämään salasanaa.
| Välityspalvelimen vastaus CONNECT-pyyntöön | Chrome näyttää | curl näyttää |
|---|---|---|
407 ilman mahdollisuutta syöttää salasanaa (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502, koska välityspalvelin ei saa yhteyttä sivustoon | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Syyt todennäköisyysjärjestyksessä
- Automaatioskripti ei lähetä kirjautumistietoja. Chromen
--proxy-server-valitsin hyväksyy vain palvelinosoitteen ja portin, ei user:pass-muotoa. Headless Puppeteer tai Selenium saa tilakoodin 407 ja ilmoittaa tunnelivirheestä. - Puhelinsovellus salasanasuojatun Wi-Fi-välityspalvelimen takana. Sovelluksessa ei ole kirjautumisikkunaa, joten HTTPS-yhteys katkeaa, vaikka selain toimii edelleen.
- Välityspalvelin ei saa yhteyttä kohteeseen. Se palauttaa CONNECT-pyyntöön koodin 502; 502 Bad Gateway -sivu käsittelee tätä tarkemmin.
- Vain tietyt sivustot epäonnistuvat. Kohdesivusto estää yhteyden tai on alhaalla, kun taas muut sivustot toimivat saman välityspalvelimen kautta.
Selvitä todellinen koodi yhdellä curl-komennolla
Aja komento curl -v -x http://user123:[email protected]:8080 https://example.com omilla arvoillasi. Tarkista rivi heti kohdan > CONNECT example.com:443 HTTP/1.1 jälkeen: 407 tarkoittaa, että kannattaa seurata 407-opasta; 502 viittaa kohdesivustoon tai välityspalvelimen jälkeiseen reittiin. Jos et halua käyttää päätettä, liitä rivi välityspalvelimen tarkistustyökaluun, joka ilmoittaa samoissa tilanteissa auth failed (407) tai HTTP 502.
Korjaukset eri ympäristöissä
- Puppeteer: säilytä
--proxy-server=http://host:portkäynnistyksessä ja kutsupage.authenticate({ username, password })ennen sivulle siirtymistä. Kattava esimerkki löytyy Puppeteer-välityspalvelinoppaasta. - Playwright: välitä
proxy: { server, username, password }, kun käynnistät selaimen, jolloin Playwright vastaa 407-pyyntöön puolestasi; katso Playwright. - Selenium: Chrome ei tue user:pass-tietoja komentoriviltä; Selenium-opas esittelee toimivat vaihtoehdot.
- Chrome Windowsissa: jos kirjautumisikkuna ei koskaan tule näkyviin, tarkista, estääkö jokin välityspalvelinlaajennus sen, ja kokeile uudelleen ikkunassa ilman laajennuksia.
- Puhelimet: jos sovellus vaatii todennetun välityspalvelimen, käytä välityspalvelinsovellusta, joka tukee user:pass-muotoa, kuten Android-asennusoppaassa neuvotaan.
Vaihe vaiheelta
- 1
Tunnista CONNECT-vastaus
Aja
curl -v -xvälityspalvelintiedoillasi tai liitä tiedot tarkistustyökaluun nähdäksesi, palauttaako välityspalvelin koodin 407 vai 502. - 2
Koodille 407: määritä kirjautumistiedot oikein
Käytä skripteissä kirjaston todennustoimintoa sen sijaan, että lisäisit user:pass-tiedot valitsimeen
--proxy-server. - 3
Koodille 502: kokeile toista sivustoa
Lataa jokin tunnettu suuri sivusto, kuten example.com, saman välityspalvelimen kautta. Jos se toimii, ongelma on alkuperäisessä kohdeosoitteessa.
- 4
Suorita uudelleen ja varmista ulospäin näkyvä IP
Kun tunneli aukeaa, avaa oma IP samassa selaimessa varmistaaksesi, että liikenne kulkee välityspalvelimen kautta.
Usein kysytyt kysymykset
Miksi http-sivut latautuvat, mutta https-sivut eivät toimi?
Tavallinen http ei vaadi CONNECT-pyyntöä, vaan välityspalvelin välittää pyynnön suoraan. Vain https avaa tunnelin, joten tunnelivirheet ilmenevät ainoastaan sen yhteydessä.
Mikä aiheuttaa virheen ERR_TUNNEL_CONNECTION_FAILED Androidilla?
Useimmiten kyseessä on sovellus, joka ei pysty välittämään käyttäjätunnusta ja salasanaa Wi-Fi-välityspalvelimelle. Kokeile samaa sivua Androidin Chromella; jos Chrome pystyy kysymään tunnukset ja lataamaan sivun, ongelma on sovelluksessa.
Voinko määrittää user:pass-tiedot valitsimeen --proxy-server?
Et. Chrome jättää kirjautumistiedot kyseisessä valitsimessa huomiotta, mikä johtaa 407-koodiin ja tunnelivirheeseen. Tunnistaudu sen sijaan Puppeteerilla, Playwrightilla tai laajennuksen avulla.
Poistaako vaihtaminen SOCKS5-yhteyteen tunnelivirheen?
Vain jos tilauksesi tukee SOCKS5-yhteyttä. VinaProxy tarjoaa sekä HTTP(S)- että SOCKS5-yhteydet; valitse protokolla, joka näkyy tilauksessasi hallintapaneelissa, sillä yhteensopimattomuus aiheuttaa muita virheitä.
Välityspalvelimet, jotka toimivat Puppeteerilla ja Playwrightilla
VinaProxy-välityspalvelimet käyttävät standardia user:pass-kirjautumista, jota suositut automaatiokirjastot tukevat suoraan.
Katso hinnat