Python http.client с использованием HTTP-прокси-сервера переходит на сайт, отличный от HTTPSPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python http.client с использованием HTTP-прокси-сервера переходит на сайт, отличный от HTTPS

Сообщение Anonymous »

Я работаю над получением данных API в среде, где требуется исходящий прокси-сервер HTTP/HTTPS. При подключении к сайту по HTTPS через прокси с использованием Tunneling все работает нормально. Вот пример кода:

Код: Выделить всё

import http.client

PROXY = {'host': "10.20.30.40", 'port': 3128}
TARGET = {'host': "example.com", 'port': 443, 'url': "/api/v1/data"}
HEADERS = {'Host': TARGET.get('host'), 'User-agent': "Python http.client"}
TIMEOUT = 10

if port := TARGET.get('port') == 443:
conn = http.client.HTTPSConnection(PROXY.get('host'), port=PROXY.get('port'), timeout=TIMEOUT)
conn.set_tunnel(host=TARGET.get('host'), port=TARGET.get('port', 443))
else:
conn = http.client.HTTPConnection(PROXY.get('host'), port=PROXY.get('port'), timeout=TIMEOUT)
conn.request(method="GET", url=TARGET.get('url', "/"), headers=HEADERS)
response = conn.getresponse()
conn.close()
print(response.status, response.reason)
Я также хочу поддерживать простые URL-адреса HTTP и попробовал это:

Код: Выделить всё

TARGET = {'host': "example.com", 'port': 80, 'url': "/api/v1/data"}
Прокси-сервер отвечает с ошибкой 400/Bad request. Вот журнал:

Код: Выделить всё

192.168.1.100 NONE_NONE/400 3885 GET /api/v1/data - HIER_NONE/- text/html
Тестовый запрос на тот же URL-адрес отображается в прокси-сервере следующим образом:

Код: Выделить всё

192.168.1.100 TCP_MISS/200 932 GET http://example.com/api/v1/data - HIER_DIRECT/203.0.113.132 application/json
В этом есть некоторый смысл. При использовании туннелирования хост веб-сервера настраивается в set_tunnel(). Но HTTP не требует этого шага. Я думал, что HTTP-заголовок «host» позаботится об этом, но мог ошибаться. Что мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/792 ... https-site
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»