Rregullimi i ERR_TUNNEL_CONNECTION_FAILED me një proxy
Updated:
Për të ngarkuar një faqe https:// përmes një proxy, shfletuesi dërgon një kërkesë CONNECT dhe pret që proxy të hapë një tunel drejt faqes. ERR_TUNNEL_CONNECTION_FAILED shfaqet kur proxy i përgjigjet kësaj kërkese me një gabim në vend që ta pranojë. Problemi është se Chrome nuk ju tregon se cili është gabimi, kështu që hapi i parë është gjetja e kodit real.
Dy raste që riprodhuam
Të dyja u ekzekutuan kundrejt një proxy testues, të rishkruar këtu me adresën e dokumentacionit 203.0.113.10:8080 dhe user123:pass456. Në një dritare normale të Chrome rasti 407 nuk kthehet në një gabim tuneli; në vend të kësaj, Chrome hap një dritare dialogu hyrjeje për emrin e përdoruesit dhe fjalëkalimin e proxy-t. Prandaj, gabimet e tunelit të shkaktuara nga një 407 shfaqen kryesisht në veglat e automatizimit dhe në aplikacionet që nuk mund të kërkojnë fjalëkalim.
| Proxy i përgjigjet CONNECT me | Chrome shfaq | curl shfaq |
|---|---|---|
407 pa asnjë mënyrë për të futur fjalëkalimin (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502 sepse proxy nuk mund të lidhet me faqen | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Shkaqet, duke filluar nga më të mundshmit
- Një skript automatizimi nuk dërgon kredenciale. Parametri
--proxy-serveri Chrome pranon vetëm host dhe portë, jo user:pass. Puppeteer ose Selenium headless marrin një 407 dhe raportojnë dështim tuneli. - Një aplikacion telefoni pas një proxy me Wi-Fi të mbrojtur me fjalëkalim. Aplikacioni nuk ka dritare identifikimi, kështu që HTTPS ndërpritet ndërsa shfletuesi vazhdon të funksionojë.
- Proxy nuk mund të lidhet me faqen e synuar. Ai kthen 502 ndaj CONNECT; faqja 502 Bad Gateway e trajton këtë në detaje.
- Dështojnë vetëm disa faqe. Destinacioni po bllokon lidhjen ose është jashtë funksioni, ndërsa faqet e tjera funksionojnë përmes të njëjtit proxy.
Gjeni kodin real me një komandë curl
Ekzekutoni curl -v -x http://user123:[email protected]:8080 https://example.com me vlerat tuaja. Shikoni rreshtin menjëherë pas > CONNECT example.com:443 HTTP/1.1: një 407 nënkupton ndjekjen e udhëzuesit për 407; një 502 tregon për një problem me destinacionin ose rrugën pas proxy-t. Nëse preferoni të mos përdorni terminalin, vendoseni rreshtin te kontrolluesi i proxy-ve, i cili raporton auth failed (407) ose HTTP 502 për të njëjtat situata.
Zgjidhjet sipas mjedisit
- Puppeteer: mbani
--proxy-server=http://host:portgjatë nisjes dhe thirrnipage.authenticate({ username, password })para lundrimit. Shembulli i plotë gjendet në udhëzuesin e proxy-ve për Puppeteer. - Playwright: kaloni
proxy: { server, username, password }gjatë nisjes së shfletuesit dhe Playwright i përgjigjet kodit 407 për ju; shihni Playwright. - Selenium: Chrome nuk pranon user:pass në rreshtin e komandës; udhëzuesi për Selenium tregon opsionet funksionale.
- Chrome në Windows: nëse dritarja e hyrjes nuk shfaqet kurrë, kontrolloni nëse një shtesë proxy po e bllokon atë, pastaj riprovoni në një dritare pa shtesa.
- Telefonat: për aplikacionet që kërkojnë një proxy me autentifikim, përdorni një aplikacion proxy që mbështet user:pass si në udhëzuesin e konfigurimit për Android.
Hap pas hapi
- 1
Identifikoni përgjigjen e CONNECT
Ekzekutoni
curl -v -xme rreshtin e proxy-t tuaj, ose ngjiteni në kontrollues, për të mësuar nëse proxy kthen 407 apo 502. - 2
Për 407: jepni kredencialet siç duhet
Në skripte, përdorni funksionin e autentifikimit të bibliotekës në vend që të vendosni user:pass në
--proxy-server. - 3
Për 502: provoni një faqe tjetër
Ngarkoni një faqe të madhe si example.com përmes të njëjtit proxy. Nëse funksionon, problemi është te destinacioni origjinal.
- 4
Riekzekutoni dhe konfirmoni IP-në dalëse
Pasi të hapet tuneli, vizitoni IP-ja ime në të njëjtin shfletues për të konfirmuar që trafiku kalon përmes proxy-t.
Pyetjet e shpeshta
Pse ngarkohen faqet http ndërsa faqet https dështojnë?
Protokolli i thjeshtë http nuk ka nevojë për CONNECT; proxy e përcjell kërkesën drejtpërdrejt. Vetëm https hap një tunel, kështu që gabimet e tunelit shfaqen vetëm aty.
Çfarë e shkakton ERR_TUNNEL_CONNECTION_FAILED në Android?
Më shpesh një aplikacion që nuk mund t'i kalojë emrin e përdoruesit dhe fjalëkalimin një proxy me Wi-Fi. Provoni të njëjtën faqe në Chrome për Android; nëse Chrome mund të kërkojë të dhënat dhe ta ngarkojë, problemi është tek aplikacioni.
A mund të vendos user:pass brenda --proxy-server?
Jo. Chrome i injoron kredencialet në atë flamur, gjë që çon në një 407 dhe gabimin e tunelit. Në vend të kësaj, autentifikohuni përmes Puppeteer, Playwright ose një shtese.
A do ta heqë kalimi në SOCKS5 gabimin e tunelit?
Vetëm nëse porosia juaj është SOCKS5. VinaProxy ofron si HTTP(S) ashtu edhe SOCKS5; zgjidhni protokollin që tregon porosia juaj në panel, pasi një mospërputhje shkakton gabime të ndryshme.
Proxy që funksionojnë me Puppeteer dhe Playwright
Proxy-t e VinaProxy përdorin identifikimin standard user:pass, të cilin bibliotekat e njohura të automatizimit e mbështesin që në fillim.
Shikoni çmimet