Прокси арқылы 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 |
Себептері, ең ықтималынан бастап
- Автоматтандыру скрипті кіру деректерін жібермейді. Chrome браузерінің
--proxy-serverжалаушасы user:pass емес, тек хост пен портты қабылдайды. Headless Puppeteer немесе Selenium 407 қатесін алып, туннель ақауын хабарлайды. - Парольмен қорғалған Wi-Fi проксиі арқылы жұмыс істейтін телефон қолданбасы. Қолданбада кіру терезесі жоқ, сондықтан браузер жұмыс істеп тұрғанымен, HTTPS істен шығады.
- Прокси мақсатты сайтқа қол жеткізе алмайды. Ол CONNECT сұрауына 502 жауабын қайтарады; бұл туралы толығырақ 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 нұсқаулығында көрсетілген.
- Windows жүйесіндегі Chrome: егер кіру терезесі мүлдем шықпаса, прокси кеңейтімі оны бұғаттап тұрған-тұрмағанын тексеріп, кеңейтімдері жоқ терезеде қайталап көріңіз.
- Телефондар: аутентификацияны қажет ететін прокси үшін user:pass қолдайтын прокси қолданбасын пайдаланыңыз, бұл Android баптау нұсқаулығында сипатталған.
Қадам бойынша
- 1
CONNECT жауабын анықтаңыз
Проксидің 407 немесе 502 қайтаратынын білу үшін прокси жолыңызбен
curl -v -xпәрменін іске қосыңыз немесе оны тексеру құралына қойыңыз. - 2
407 үшін: кіру деректерін дұрыс беріңіз
Скрипттерде user:pass мәнін
--proxy-serverішіне жазудың орнына кітапхананың аутентификация функциясын пайдаланыңыз. - 3
502 үшін: басқа сайтты көріңіз
Сол прокси арқылы example.com сияқты үлкен сайтты ашыңыз. Егер ол жұмыс істесе, мәселе бастапқы сайтта.
- 4
Қайта іске қосып, шығыс IP-ді тексеріңіз
Туннель ашылғаннан кейін трафиктің прокси арқылы өтіп жатқанын растау үшін сол браузерде менің IP-ім бетіне кіріңіз.
Жиі қойылатын сұрақтар
Неге http беттері жүктеліп, https беттері ашылмайды?
Қарапайым http протоколына CONNECT қажет емес; прокси сұрауды тікелей бағыттайды. Тек https туннель ашады, сондықтан туннель қателері тек сонда пайда болады.
Android-те ERR_TUNNEL_CONNECTION_FAILED пайда болуына не себеп?
Көбінесе пайдаланушы аты мен парольді Wi-Fi проксиіне бере алмайтын қолданба себеп болады. Сол бетті Android-ке арналған Chrome арқылы ашып көріңіз; егер Chrome деректерді сұрап, оны жүктей алса, мәселе қолданбада.
user:pass мәнін --proxy-server ішіне жазуға бола ма?
Жоқ. Chrome бұл жалаушадағы тіркелгі деректерін елемейді, бұл 407 қатесіне және туннель ақауына әкеледі. Оның орнына Puppeteer, Playwright немесе кеңейтім арқылы аутентификация жасаңыз.
SOCKS5 протоколына ауысу туннель қатесін жоя ма?
Егер тапсырысыңыз SOCKS5 болса ғана. VinaProxy HTTP(S) және SOCKS5 екеуін де ұсынады; бақылау тақтасында тапсырысыңызда көрсетілген протоколды таңдаңыз, өйткені сәйкессіздік басқа қателерді тудырады.
Puppeteer және Playwright-пен жұмыс істейтін проксилер
VinaProxy проксилері танымал автоматтандыру кітапханалары бірден қолдайтын стандартты user:pass логинін пайдаланады.
Бағаларды көру