Pag-aayos ng ERR_TUNNEL_CONNECTION_FAILED gamit ang proxy
Updated:
Upang mag-load ng https:// na page sa pamamagitan ng proxy, nagpapadala ang browser ng CONNECT request at naghihintay na magbukas ang proxy ng tunnel papunta sa site. Lumalabas ang ERR_TUNNEL_CONNECTION_FAILED kapag sumagot ang proxy sa request na iyon nang may error sa halip na pumayag. Ang problema, hindi sinasabi ng Chrome kung aling error ito, kaya ang unang dapat gawin ay hanapin ang totoong code.
Dalawang sitwasyong aming na-reproduce
Parehong tumakbo ang mga ito laban sa isang test proxy, na muling isinulat dito gamit ang documentation address na 203.0.113.10:8080 at user123:pass456. Sa isang normal na window ng Chrome, ang kaso ng 407 ay hindi nagiging tunnel error; sa halip, nagbubukas ang Chrome ng sign-in dialog para sa username at password ng proxy. Samakatuwid, ang mga tunnel error na dulot ng 407 ay kadalasang lumalabas sa mga automation tool at sa mga app na hindi makahingi ng password.
| Sagot ng proxy sa CONNECT | Ipinapakita ng Chrome | Ipinapakita ng curl |
|---|---|---|
407 nang walang paraan upang magpasok ng password (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502 dahil hindi maabot ng proxy ang site | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Mga sanhi, una ang pinakamalamang
- Walang ipinapadalang credentials ang automation script. Tumatanggap lamang ang
--proxy-serverflag ng Chrome ng host at port, hindi user:pass. Nakakatanggap ang headless Puppeteer o Selenium ng 407 at nag-uulat ng tunnel failure. - Isang app sa telepono na nasa likod ng Wi-Fi proxy na protektado ng password. Walang login dialog ang app, kaya nasisira ang HTTPS habang gumagana pa rin ang browser.
- Hindi maabot ng proxy ang target. Nagbabalik ito ng 502 sa CONNECT; detalyadong tinatalakay ito sa 502 Bad Gateway page.
- Ilang site lang ang pumapalya. Ang destinasyon ay nagba-block o kaya ay down habang gumagana naman ang ibang mga site sa parehong proxy.
Hanapin ang totoong code gamit ang isang curl command
Patakbuhin ang curl -v -x http://user123:[email protected]:8080 https://example.com gamit ang sarili mong mga value. Tingnan ang linya pagkatapos mismo ng > CONNECT example.com:443 HTTP/1.1: ang 407 ay nangangahulugang sundin ang 407 guide; ang 502 naman ay tumutukoy sa destinasyon o sa path sa likod ng proxy. Kung mas gusto mong hindi gumamit ng terminal, i-paste ang linya sa proxy checker, na nag-uulat ng auth failed (407) o HTTP 502 para sa parehong mga sitwasyon.
Mga solusyon ayon sa environment
- Puppeteer: panatilihin ang
--proxy-server=http://host:portsa pag-launch at tawagin angpage.authenticate({ username, password })bago mag-navigate. Buong halimbawa sa Puppeteer proxy guide. - Playwright: ipasa ang
proxy: { server, username, password }kapag inilulunsad ang browser at sasagutin ng Playwright ang 407 para sa iyo; tingnan ang Playwright. - Selenium: hindi tumatanggap ang Chrome ng user:pass sa command line; ipinapakita ng Selenium guide ang mga praktikal na opsyon.
- Chrome sa Windows: kung hindi lumalabas ang sign-in dialog, suriin kung may proxy extension na pumipigil dito, pagkatapos ay subukan muli sa isang window na walang mga extension.
- Mga Telepono: para sa mga app na nangangailangan ng authenticated na proxy, gumamit ng proxy app na sumusuporta sa user:pass tulad ng nasa Android setup guide.
Sunod-sunod na hakbang
- 1
Tukuyin ang tugon ng CONNECT
Patakbuhin ang
curl -v -xgamit ang linya ng iyong proxy, o i-paste ito sa checker, upang malaman kung nagbabalik ang proxy ng 407 o 502. - 2
Para sa 407: ibigay nang maayos ang credentials
Sa mga script, gamitin ang authentication hook ng library sa halip na ilagay ang user:pass sa
--proxy-server. - 3
Para sa 502: sumubok ng ibang site
Mag-load ng malaking site tulad ng example.com sa parehong proxy. Kung gumagana ito, ang orihinal na destinasyon ang may problema.
- 4
Patakbuhin muli at kumpirmahin ang exit IP
Kapag nagbukas na ang tunnel, bisitahin ang my IP sa parehong browser upang kumpirmahing dumadaan ang traffic sa proxy.
Mga madalas itanong
Bakit naglo-load ang mga http page habang pumapalya ang mga https page?
Hindi kailangan ng plain http ng CONNECT; direktang ipinapasa ng proxy ang request. Ang https lamang ang nagbubukas ng tunnel, kaya doon lamang lumalabas ang mga tunnel error.
Ano ang nagdudulot ng ERR_TUNNEL_CONNECTION_FAILED sa Android?
Kadalasan ay isang app na hindi makapagpasa ng username at password sa isang Wi-Fi proxy. Subukan ang parehong page sa Chrome para sa Android; kung kayang mag-prompt at mag-load ng Chrome, ang app ang may problema.
Maaari ko bang ilagay ang user:pass sa loob ng --proxy-server?
Hindi. Hindi pinapansin ng Chrome ang mga credential sa flag na iyon, na humahantong sa 407 at sa tunnel error. Mag-authenticate sa halip sa pamamagitan ng Puppeteer, Playwright, o isang extension.
Maaalis ba ang tunnel error kung lilipat sa SOCKS5?
Kung SOCKS5 lamang ang iyong order. Nag-aalok ang VinaProxy ng parehong HTTP(S) at SOCKS5; piliin ang protocol na ipinapakita ng iyong order sa dashboard, dahil ang hindi pagtutugma ay nagdudulot ng iba't ibang error.
Mga proxy na gumagana sa Puppeteer at Playwright
Gumagamit ang mga proxy ng VinaProxy ng karaniwang user:pass login na madaling napapamahalaan ng mga sikat na automation library.
Tingnan ang presyo