Отправка запроса CONNECT (python, socket, ssl)
Нужна помощь, у меня не хватает знаний чтобы понять в чем проблема, планирую сделать прокси-сервер, пытаюсь понять почему сервер отвечает 400 close на запрос CONNECT, но 200 на GET. 2 запроса в примере.
Пример кода только с отправкой запроса на сервер:
import ssl
import socket
data_rec = b''
# mess_req = b'CONNECT httpbin.org:443 HTTP/1.1\r\nHost: httpbin.org:443\r\n\r\n'
mess_req = b"GET / HTTP/1.1\r\nHost:www.httpbin.org\r\n\r\n"
if __name__ == "__main__":
context = ssl.create_default_context()
context.load_verify_locations("rootCA1.pem")
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.settimeout(5)
conn = context.wrap_socket(socket, server_hostname="httpbin.org")
conn.connect(("httpbin.org", 443))
try:
conn.sendall(mess_req)
while 1:
data = conn.recv(512)
if len(data) > 0:
data_rec += data
else:
break
except Exception as e:
print("close")
finally:
conn.close()
Тут, если раскомментировать, на CONNECT - 400, на GET - 200 (убрал printы в примере)
GET
CONNECT
В прокси сервере, если отслеживать конкретный домен, то обычно с клиента перехватывается запрос на CONNECT, отправляется запрос на адресат - возвращается 400, соответственно 400 переотправляем клиенту и на этом общение заканчивается, может есть подробная инфа по этому вопросу? Почему с прокси-сервера ответ на все запросы по всем серверам - 400.

