HTTP CONNECT: как HTTP-прокси работает с HTTPS
Проследите HTTPS-запрос через HTTP-прокси, отделите ответ CONNECT от ответа исходного сервера и найдите этап сбоя туннеля.
«200 Connection Established» означает, что прокси принимает туннель. Сайт ещё не вернул страницу. Далее следует TLS с целевым сервером, а затем сам HTTPS-запрос.
От подключения к прокси до ответа сайта
- Клиент подключается к конечной точке прокси.
- Он просит прокси подключиться к целевому узлу и порту.
- Прокси принимает или отклоняет этот запрос.
- После принятия клиент согласует TLS с целевым сервером через туннель.
- Клиент отправляет HTTPS-запрос и получает ответ сайта внутри TLS.
Отказ в подключении к прокси, отклонённый туннель и ошибка сертификата возникают на разных этапах этой последовательности. Перед изменением настроек найдите последний завершённый шаг.
Обмен CONNECT
В HTTP/1.1 упрощённый обмен выглядит так:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
Цель запроса — узел и порт, без пути и параметров запроса сайта. После успешного ответа CONNECT соединение передаёт байты туннеля. Для HTTPS-цели следующим обменом клиента будет рукопожатие TLS.
Читайте числовой код состояния, а не ищите совпадение с английской поясняющей фразой. Разные прокси могут использовать разный текст для одного состояния.
Наблюдение через curl
Для HTTP-прокси на локальном порту 8080:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Замените адрес прослушивания своей конечной точкой. Если нужны кандидаты, просмотрите список HTTP-прокси и проверьте выбранную запись. Пустой список исключений гарантирует выбор прокси в этом вызове. В хронологическом порядке ищите подключение к прокси, ответ CONNECT, проверку сертификата целевого сервера и ответ сайта. Точная формулировка журнала зависит от сборки curl.
Целевой сервер может вернуть 404, 429 или 500 уже после того, как прокси принял туннель. Сбой может произойти и во время TLS, ещё до любого HTTP-ответа.
На чём всё остановилось?
| Наблюдение | Что проверять дальше |
|---|---|
| В подключении к прокси отказано | Адрес прокси, прослушиваемый порт, процесс и сетевой доступ. |
| Прокси возвращает 407 | Учётную запись прокси и схему аутентификации. |
| Прокси отклоняет цель или порт | Политику доступа и разрешённые цели CONNECT. |
| Туннель открыт, затем проверка TLS завершается ошибкой | Имя целевого сервера, хранилище доверия, часы и возможный управляемый перехват TLS. |
| TLS установлен, а сайт возвращает ошибку | Ответ сайта. |
При сравнении сохраняйте одну сторону неизменной: попробуйте другую цель через тот же прокси или сравните ту же цель по разрешённому прямому маршруту.
У туннеля всё равно есть оператор
Прокси знает цель CONNECT и обрабатывает временные характеристики и объём трафика. Обычный сквозной TLS защищает прикладное содержимое сайта от прокси, который не завершает эту TLS-сессию на себе. У управляемого перехватывающего прокси, которому доверяет клиент, другая модель доверия.