Порядок обмена#
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
Proxy-Authorization: Basic dXNlcjpwYXNz
HTTP/1.1 200 Connection established
<далее следует TLS ClientHello для example.com>Практические следствия#
- Клиент получает сертификат самого целевого сервера: прокси ничего не подписывает заново. Предупреждение о сертификате при работе через прокси означает перехват соединения, а не штатное поведение.
- Параметры таргетинга нужно передавать в учётных данных прокси, поскольку содержимое зашифрованного запроса ему недоступно.
- Ошибки до открытия туннеля (407, 400, 502) возвращает прокси, а ошибки после его открытия — целевой сервер.
CONNECT к другим портам#
CONNECT позволяет создать туннель к любому TCP-порту, поэтому через HTTP-прокси можно передавать не только HTTPS. Для защиты от злоупотреблений провайдеры часто блокируют отдельные направления; типичный пример — почтовый порт 25.
Как это работает в HodlProxy#
Шлюзы HodlProxy принимают CONNECT на порту 9000, а выделенные адреса — на порту 8000. Подключаться можно к любому TCP-порту, кроме 25; содержимое туннеля передаётся без изменений, и TLS-соединение на прокси не завершается.