Решавање грешке ERR_TUNNEL_CONNECTION_FAILED при коришћењу проксија
Updated:
Да би учитао https:// страницу преко проксија, прегледач шаље CONNECT захтев и чека да прокси отвори тунел ка сајту. ERR_TUNNEL_CONNECTION_FAILED се појављује када прокси на тај захтев одговори грешком уместо прихватањем. Проблем је у томе што Chrome не приказује о којој је тачно грешци реч, па је први корак проналажење правог кода.
Два случаја која смо репродуковали
Оба случаја су тестирана на пробном проксију, овде приказаном са документационом адресом 203.0.113.10:8080 и user123:pass456. У обичном Chrome прозору грешка 407 не прераста у грешку тунела; Chrome уместо тога отвара дијалог за пријаву и унос корисничког имена и лозинке за прокси. Грешке тунела изазване кодом 407 се зато најчешће јављају у алатима за аутоматизацију и у апликацијама које не могу да затраже лозинку.
| Прокси одговара на CONNECT са | Chrome приказује | curl приказује |
|---|---|---|
407 без могућности уноса лозинке (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502 јер прокси не може да приступи сајту | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Узроци, према вероватноћи
- Скрипта за аутоматизацију не шаље акредитиве. Заставица
--proxy-serverу Chrome прихвата само хост и порт, без user:pass. Headless Puppeteer или Selenium добијају 407 и пријављују неуспех тунела. - Апликација на телефону иза Wi-Fi проксија заштићеног лозинком. Апликација нема дијалог за пријаву, па HTTPS веза пуца док прегледач и даље ради.
- Прокси не може да приступи циљном сајту. Враћа 502 на CONNECT; страница 502 Bad Gateway ово детаљно описује.
- Проблем се јавља само на појединим сајтовима. Циљни сајт блокира приступ или није доступан, док други сајтови раде преко истог проксија.
Пронађите прави код помоћу једне curl команде
Покрените curl -v -x http://user123:[email protected]:8080 https://example.com са сопственим вредностима. Погледајте ред одмах иза > CONNECT example.com:443 HTTP/1.1: 407 значи да треба пратити водич за 407; 502 указује на одредиште или путању иза проксија. Ако не желите да користите терминал, налепите ред у прокси проверу, која за исте ситуације пријављује auth failed (407) или HTTP 502.
Решења по окружењима
- Puppeteer: задржите
--proxy-server=http://host:portпри покретању и позовитеpage.authenticate({ username, password })пре навигације. Комплетан пример је у водичу за Puppeteer прокси. - Playwright: проследите
proxy: { server, username, password }при покретању прегледача и Playwright ће аутоматски одговорити на 407; погледајте Playwright. - Selenium: Chrome не прихвата user:pass преко командне линије; водич за Selenium приказује применљиве опције.
- Chrome на Windows-у: ако се дијалог за пријаву уопште не појављује, проверите да ли га нека прокси екстензија блокира, па покушајте поново у прозору без екстензија.
- Телефони: за апликације које захтевају аутентификацију на проксију, користите прокси апликацију са подршком за user:pass према водичу за подешавање на Android-у.
Корак по корак
- 1
Идентификујте CONNECT одговор
Покрените
curl -v -xса параметрима свог проксија или их налепите у проверу да бисте сазнали да ли прокси враћа 407 или 502. - 2
За 407: правилно унесите акредитиве
У скриптама користите функцију библиотеке за аутентификацију уместо уноса user:pass у
--proxy-server. - 3
За 502: испробајте други сајт
Учитајте неки већи сајт као што је example.com преко истог проксија. Ако он ради, проблем је до првобитног одредишта.
- 4
Поновите поступак и проверите излазни IP
Када се тунел отвори, посетите страницу мој IP у истом прегледачу да потврдите да саобраћај иде преко проксија.
Често постављана питања
Зашто се http странице учитавају, а https не успевају?
Обичан http не захтева CONNECT; прокси директно прослеђује захтев. Само https отвара тунел, па се грешке тунела јављају искључиво ту.
Шта изазива ERR_TUNNEL_CONNECTION_FAILED на Android-у?
Најчешће апликација која не може да проследи корисничко име и лозинку Wi-Fi проксију. Пробајте исту страницу у апликацији Chrome за Android; ако Chrome затражи податке и учита је, проблем је у апликацији.
Могу ли да унесем user:pass унутар --proxy-server?
Не. Chrome занемарује акредитиве у тој заставици, што доводи до грешке 407 и неуспеха тунела. Уместо тога, обавите аутентификацију преко алата Puppeteer, Playwright или помоћу екстензије.
Да ли ће прелазак на SOCKS5 уклонити грешку тунела?
Само ако ваша поруџбина обухвата SOCKS5. VinaProxy нуди и HTTP(S) и SOCKS5; изаберите протокол који је наведен за вашу поруџбину на контролној табли, јер несклад изазива другачије грешке.
Проксији компатибилни са Puppeteer и Playwright алатима
VinaProxy проксији користе стандардну user:pass пријаву коју популарне библиотеке за аутоматизацију подржавају без додатног подешавања.
Погледајте цене