Диагностическое поле в ответе CONNECT прокси относится к другому ответу, нежели более поздний ответ сайта. Объект ответа назначения высокого уровня может показывать только последний.

Интерфейс транспортаГде появляются метаданные CONNECT
Стандартный API HTTP-соединения Python, 3.12+get_proxy_response_headers() возвращает заголовки ответа CONNECT, или None когда CONNECT не отправлялся.
Сбор заголовков в libcurlЗаголовки CONNECT могут быть включены. CURLOPT_SUPPRESS_CONNECT_HEADERS управляет их доставкой через соответствующие пути вывода заголовков.

Для обработчика cURL в Guzzle, перехватывайте каждый блок ответа с помощью on_headers вместо того чтобы смотреть только на возвращённый ответ. Используйте поддерживаемый интерфейс клиента, который действительно выполняет запрос. Библиотека, построенная поверх Python, не обязательно раскрывает метод соединения в своём ответе, и отдельный экземпляр соединения не может выявить этот обмен. Подавление заголовков CONNECT в libcurl может упростить парсер, но скрывает доказательство, нужное диагностике.

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

Сохраняйте определение поля вместе с его значением. Возвращённый IP может описывать слушателя, локальную привязку, выбранный выход или назначение. Одна лишь его форма не определяет источник, обращённый к сайту.

Похожие статьи