Решавање на 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 што популарните библиотеки за автоматизација ја поддржуваат веднаш.
Погледнете ги цените