Перейти к содержанию

Руководство · На русском

CONNECT tunnel failed: что проверить при 403, 502 и 503

Ошибка CONNECT означает, что клиент не смог открыть туннель через прокси. Число после response относится к ответу на этот запрос, а не обязательно к странице сайта. Сначала разделите этапы соединения, затем проверьте адрес, авторизацию и разрешённое назначение. Один код 502 не устанавливает причину сбоя.

Каталог и инструкции — на русском. Страница отдельного товара, аккаунт, корзина, оплата и полные условия обслуживания пока доступны на английском.

Опубликовано:

Короткие ответы

Что означает CONNECT tunnel failed, response 502?

Прокси вернул 502 на запрос создания туннеля. Туннель не открыт, но этот ответ сам по себе не показывает, какой следующий узел недоступен и закончились ли устройства в выбранной стране.

Чем CONNECT 403 отличается от 403 на сайте?

В первом случае отклонён запрос туннеля. Если CONNECT успешен, а HTTPS-страница затем вернула 403, отказ относится к запросу внутри туннеля. Эти этапы требуют разных проверок.

Является ли curl: (56) HTTP-статусом?

Нет. Это код ошибки curl, который нужно читать вместе с сообщением и статусом CONNECT. В разных версиях curl один отказ туннеля может сопровождаться другим кодом завершения; не определяйте причину только по числу 56.

Нужно ли менять пароль при любом отказе CONNECT?

Нет. С 407 начинайте проверку авторизации. Для 403 проверьте разрешённый узел и порт; для 502 или 503 сохраняйте код шлюза и время сбоя. Смена пароля не объясняет любой сетевой отказ.

Сохраните первый сбой и выберите контроль

Запишите ошибку до следующего запуска. Для диагностики сравните один небольшой разрешённый HTTPS-ресурс и назначение вашей задачи, сохраняя тот же шлюз, полный логин, пул и страну. Если одновременно менять страну, порт и библиотеку, результат не покажет, какой параметр повлиял на соединение.

Что различает короткое сравнение
НаблюдениеСледующий шаг
Оба запроса без статуса CONNECTПроверить DNS, адрес, порт и сообщение клиента до классификации HTTP-ответа.
Оба возвращают CONNECT 502Сохранить время UTC и документированный код; проверить статус сервиса или поддержку.
Контроль проходит, нужный узел даёт CONNECT 502Проверить конкретное назначение, порт и допустимость маршрута.
Туннель открыт, затем сайт вернул ошибкуРазбирать ответ сайта отдельно от авторизации прокси.

Запишите статусы одним ограниченным запросом

Скопируйте полное имя пользователя из конструктора подключения вместо YOUR_FULL_PROXY_USERNAME. Команда рассчитана на интерактивный POSIX-терминал: curl запрашивает пароль отдельно. Не дописывайте его к логину и не включайте трассировку оболочки. Для PowerShell потребуется curl.exe и другой синтаксис переноса строк.

CONNECT, ответ назначения и код завершенияsh
curl_status=0
curl --disable --silent --show-error \
  --proxy 'http://gw.portproof.org:7000' \
  --proxy-user 'YOUR_FULL_PROXY_USERNAME' \
  --noproxy '' \
  --connect-timeout 5 --max-time 15 \
  --output /dev/null \
  --write-out 'connect_status=%{http_connect} target_status=%{response_code}\n' \
  'https://example.com/' || curl_status=$?
printf 'curl_exit=%s\n' "$curl_status"

Команда делает один GET, не следует перенаправлениям и не включает повторы. Начальный --disable исключает обычный конфигурационный файл curl; явный прокси и пустой список исключений задают маршрут только этой проверки. Ограничения времени не являются обещанием скорости. Используйте небольшой HTTPS-ресурс, который разрешено проверять; проверка сертификата остаётся включённой. Параметры curl.

Читайте три результата вместе

Три разных результата
ПолеЗначение
curl_exitКод завершения программы, а не HTTP-ответ.
connect_statusПоследний ответ прокси на CONNECT; 000 означает отсутствие записанного статуса.
target_statusHTTP-ответ ресурса после туннелирования, если он получен.
Учебный результат: туннель не открытtext
connect_status=502 target_status=000
curl_exit=56

Это иллюстрация результата в версии curl, которая возвращает 56 для такого отказа, а не измерение текущего шлюза. Статуса страницы нет. Сообщение curl и его версию сохраняют отдельно: номер кода завершения не является постоянным обозначением причины. Коды ошибок curl.

Учебный результат: сайт отказал после CONNECTtext
connect_status=200 target_status=403
curl_exit=0

Во втором примере туннель открыт, но ресурс вернул 403. Код завершения 0 возможен, потому что команда не использует --fail. Не называйте это успешным доступом к странице: передача завершилась, однако сайт отказал. Раздельный статус CONNECT предусмотрен API curl.

Отделите туннель от TLS и страницы

Для HTTPS через HTTP-прокси клиент сначала запрашивает соединение с узлом и портом назначения, например example.com:443. Успешный ответ 2xx открывает туннель; затем внутри него выполняется TLS и отправляется запрос к странице. Ошибка до открытия туннеля не является ответом этой HTTPS-страницы. Семантика CONNECT.

Если CONNECT прошёл, а затем возникла ошибка сертификата, расследуйте доверие к сертификату и TLS-параметры клиента. Отключение проверки сертификата не исправляет отклонённый CONNECT. Успешный запрос к обычному HTTP-адресу тоже не доказывает работоспособность HTTPS-туннеля: это другой обмен.

Разберите 403,407,502 и 503 на нужном этапе

Ответ на запрос туннеля
КодЧто следует из ответаЧто делать дальше
403Запрос CONNECT отклонён.Проверить разрешённость узла, порта и маршрута; повтор не меняет правила доступа.
407Прокси запросил авторизацию.Проверить полное имя пользователя, пароль и код шлюза по инструкции 407.
502Прокси сообщил об ошибке вышестоящего соединения.Искать уточняющий код; не приравнивать к отсутствию устройств.
503Отвечающий сервис недоступен.Проверить статус и Retry-After, если он получен.
000Ответ CONNECT не записан.Сначала прочитать ошибку DNS, порта, времени ожидания или протокола.

Неизвестный ответ не устанавливает владельца отвечающего узла. В пути могут участвовать шлюз и другие промежуточные соединения. Браузерное ERR_TUNNEL_CONNECTION_FAILED также описывает стадию, но не раскрывает HTTP-код. Сравните активные настройки браузера с явной проверкой, а не переносите причину из другого клиента.

Не выводите наличие страны из 502

В Portproof выбор пула и страны входит в конфигурацию подключения. Снимок на странице локаций · English может измениться до запроса. Если диагностика предоставляет E_NO_STOCK_COUNTRY, сверяйте именно этот код с документацией шлюза · English. Не выводите его из одного 502 и не рассчитывайте, что curl обязательно покажет структурированное тело отклонённого CONNECT.

Если задача требует конкретную страну, отметьте недоступный результат и остановитесь либо проверьте позже в пределах бюджета задачи. Незаметная замена страны изменяет смысл измерения. Другой пул выбирают явно, когда он подходит: мобильный и резидентский используют общий баланс ГБ.

Подготовьте отчёт без секретов

Заполняйте только реально записанные поля. Неизвестное оставляйте как not recorded; не дополняйте догадками. Полный логин, пароль, API-ключ, заголовки авторизации и URL с токеном не входят в такой отчёт. Назначение можно описать узлом и портом без пути и параметров.

Шаблон отчёта: поля на английскомtext
Checked at (UTC):
Browser name and version:
Browser error shown (exact text):
Browser proxy source: system / PAC / extension / not recorded
curl version:
Proxy protocol, hostname and port (no credentials):
Destination hostname and port (no path, query or tokens):
connect_status:
target_status:
curl_exit:
Certificate error, if any (redacted):
Documented gateway code, if any:
Same intended proxy and destination in both checks: yes / no / not recorded
Small authorised endpoint succeeded: yes / no / not checked

Укажите, совпадали ли шлюз и назначение в двух проверках. Если браузер и curl использовали разные маршруты, это полезный факт, а не подтверждение сбоя провайдера. Для системных полей есть объяснение настроек.

Ограничьте повторы и не переотправляйте запись

Повторная проверка допустимого чтения должна иметь конечный бюджет. Если сервер просит ждать дольше через Retry-After, закончите диагностику и вернитесь позже. Повторяющийся отказ требует разбора причины. Покупка, отправка формы или другая запись — отдельный случай: прежде выясните, не выполнилась ли операция, и следуйте правилам идемпотентности приложения.

Для SOCKS5 используйте другую диагностику

SOCKS5 имеет собственный обмен и коды ответа; таблица HTTP CONNECT к нему не применяется. Проверьте соответствующий протокол и порт: HTTP-подключение Portproof использует gw.portproof.org:7000, SOCKS5 — gw.portproof.org:7001. Синтаксис клиента объясняет сравнение протоколов.

После исправления повторите небольшой тест из рабочего приложения; успех curl ещё не подтверждает его конфигурацию. Для этого есть дифференциальная проверка клиентов. Тарифы на русском помогают выбрать объём после проверки. Кабинет и оформление заказа пока на английском; запросы к реальному шлюзу и браузерная диагностика в рамках подготовки статьи не выполнялись.

Допустимое использование

Настройка прокси не даёт разрешения на доступ к чужому сервису. Соблюдайте его правила и правила допустимого использования · English.

Следующий шаг