ERR_TUNNEL_CONNECTION_FAILED novēršana, izmantojot starpniekserveri
Updated:
Lai ielādētu https:// lapu caur starpniekserveri, pārlūks nosūta CONNECT pieprasījumu un gaida, līdz starpniekserveris atver tuneli uz vietni. ERR_TUNNEL_CONNECTION_FAILED parādās, ja starpniekserveris piekrišanas vietā atbild ar kļūdu. Sarežģītākais ir tas, ka Chrome nenorāda konkrēto kļūdu, tāpēc pirmais uzdevums ir noskaidrot patieso kodu.
Divi gadījumi, kurus reproducējām
Abi testi tika veikti ar testa starpniekserveri, kas šeit aizstāts ar dokumentācijas adresi 203.0.113.10:8080 un user123:pass456. Parastā Chrome logā 407 gadījums nekļūst par tuneļa kļūdu; tā vietā Chrome atver pieteikšanās logu starpniekservera lietotājvārdam un parolei. Tāpēc tuneļa kļūdas, ko izraisa 407, galvenokārt parādās automatizācijas rīkos un lietotnēs, kuras nevar pieprasīt paroli.
| Starpniekserveris uz CONNECT atbild ar | Chrome rāda | curl rāda |
|---|---|---|
407 bez iespējas ievadīt paroli (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502, jo starpniekserveris nevar sasniegt vietni | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Iemesli, sākot ar ticamākajiem
- Automatizācijas skripts nenosūta akreditācijas datus. Chrome karodziņš
--proxy-serverpieņem tikai resursdatoru un portu, nevis user:pass. Headless Puppeteer vai Selenium saņem 407 un ziņo par tuneļa kļūmi. - Tālruņa lietotne aiz ar paroli aizsargāta Wi-Fi starpniekservera. Lietotnei nav pieteikšanās dialoglodziņa, tāpēc HTTPS pārstāj darboties, kamēr pārlūks joprojām darbojas.
- Starpniekserveris nevar sasniegt mērķi. Tas atgriež 502 uz CONNECT; 502 Bad Gateway lapa to apskata padziļināti.
- Kļūda rodas tikai dažās vietnēs. Mērķa vietne bloķē savienojumu vai nedarbojas, kamēr citas vietnes caur to pašu starpniekserveri darbojas.
Noskaidrojiet patieso kodu ar vienu curl komandu
Palaidiet curl -v -x http://user123:[email protected]:8080 https://example.com ar savām vērtībām. Paskatieties uz rindiņu uzreiz aiz > CONNECT example.com:443 HTTP/1.1: 407 nozīmē, ka jāseko 407 ceļvedim; 502 norāda uz mērķa vietni vai ceļu aiz starpniekservera. Ja nevēlaties izmantot termināli, ielīmējiet rindiņu starpniekserveru pārbaudītājā, kas tajās pašās situācijās uzrāda auth failed (407) vai HTTP 502.
Risinājumi pa vidēm
- Puppeteer: palaišanas laikā saglabājiet
--proxy-server=http://host:portun pirms navigācijas izsaucietpage.authenticate({ username, password }). Pilns piemērs atrodams Puppeteer starpniekserveru ceļvedī. - Playwright: palaižot pārlūku, nododiet
proxy: { server, username, password }, un Playwright atbildēs uz 407 jūsu vietā; skatiet Playwright. - Selenium: Chrome nepieņem user:pass komandrindā; Selenium ceļvedis parāda praktiskas iespējas.
- Chrome operētājsistēmā Windows: ja pieteikšanās dialoglogs neparādās, pārbaudiet, vai to nebloķē kāds starpniekservera paplašinājums, un pēc tam mēģiniet vēlreiz logā bez paplašinājumiem.
- Tālruņi: lietotnēm, kurām nepieciešams autentificēts starpniekserveris, izmantojiet starpniekserveru lietotni, kas atbalsta user:pass, kā aprakstīts Android iestatīšanas ceļvedī.
Soli pa solim
- 1
Identificējiet CONNECT atbildi
Palaidiet
curl -v -xar savu starpniekservera rindu vai ielīmējiet to pārbaudītājā, lai uzzinātu, vai starpniekserveris atgriež 407 vai 502. - 2
Kļūdai 407: norādiet akreditācijas datus pareizi
Skriptos izmantojiet bibliotēkas autentifikācijas funkciju, nevis ievietojiet user:pass parametrā
--proxy-server. - 3
Kļūdai 502: izmēģiniet citu vietni
Ielādējiet lielu vietni, piemēram, example.com, caur to pašu starpniekserveri. Ja tā darbojas, problēma ir sākotnējā mērķa vietnē.
- 4
Palaidiet vēlreiz un pārbaudiet izejas IP
Kad tunelis ir atvērts, apmeklējiet mana IP tajā pašā pārlūkā, lai pārliecinātos, ka datplūsma iet caur starpniekserveri.
Biežāk uzdotie jautājumi
Kāpēc http lapas ielādējas, bet https lapas neielādējas?
Vienkāršajam http nav nepieciešams CONNECT; starpniekserveris pārsūta pieprasījumu tieši. Tikai https atver tuneli, tāpēc tuneļa kļūdas parādās tikai tur.
Kas izraisa ERR_TUNNEL_CONNECTION_FAILED sistēmā Android?
Visbiežāk tā ir lietotne, kas nevar nodot lietotājvārdu un paroli Wi-Fi starpniekserverim. Izmēģiniet to pašu lapu pārlūkā Chrome sistēmā Android; ja Chrome var pieprasīt datus un ielādēt lapu, vaina ir lietotnē.
Vai var norādīt user:pass parametrā --proxy-server?
Nē. Chrome ignorē akreditācijas datus šajā karodziņā, kas izraisa 407 un tuneļa kļūdu. Tā vietā autentificējieties, izmantojot Puppeteer, Playwright vai paplašinājumu.
Vai pāreja uz SOCKS5 novērsīs tuneļa kļūdu?
Tikai tad, ja jūsu pasūtījums ir SOCKS5. VinaProxy piedāvā gan HTTP(S), gan SOCKS5; izvēlieties protokolu, kas jūsu pasūtījumam norādīts informācijas panelī, jo neatbilstība izraisa citas kļūdas.
Starpniekserveri, kas darbojas ar Puppeteer un Playwright
VinaProxy starpniekserveri izmanto standarta user:pass pieteikšanos, ko populārākās automatizācijas bibliotēkas atbalsta uzreiz.
Skatīt cenas