Я на самом деле пытаюсь перехватить запросы. Я создал сокет на порту 12345, и с помощью curl я отправляю запрос на свой сервер с помощью команды "curl -x http://127.0.0.1:12345 http://google.com", и яЯ получаю правильный запрос на получение, но когда я меняю HTTP на HTTPS в Google, он отправляет запрос на подключение к моему серверу, и я не знаю, как его обработать. Когда я использовал http
b'GET http://google.com/ HTTP/1.1\r\nHost: google.com\r\nUser-Agent: curl/7.55.1\r\nAccept: */*\r\nProxy-Connection: Keep-Alive\r\n\r\n'
и когда я использовалhttps
b'CONNECT google.com:443 HTTP/1.1\r\nHost: google.com:443\r\nUser-Agent: curl/7.55.1\r\nProxy-Connection: Keep-Alive\r\n\r\n'
Я читаю на каком-то форуме и, в соответствии с этим, для браузера SSL сначала отправляю запрос на подключение, чтобы проверить, доступен ли этот сайт или нет, а затем прокси-сервер ответит HTTP / 1.1. 200 Установлено соединение \ r \n это означает, что прокси-сервер сообщает, что подключение к этому веб-сайту успешно, затем следующим шагом является SSL / рукопожатие, и я не знаю, что делать, сейчас я застрял на этом этапе.
любая помощь с вашей стороны очень ценится.
Спасибо
import socket
import ssl
from time import sleep
brower = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
brower.bind(("127.0.0.1",12345))
brower.listen(5)
conn,addr=brower.accept()
data=conn.recv(2048)
print(data)
tunn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tunn = ssl.wrap_socket(tunn,certfile="cert.pem",keyfile="cert.pem")
tunn.connect(("httpbin.org",443))
connect_req = 'HTTP/1.1 200 Connection Established\r\n'
connect_req += 'Proxy-agent: ProxyServer/1.0\r\n'
connect_req += '\r\n'
conn.send(connect_req.encode())
data=conn.recv(2048)
tunn.send(data)
tunn.do_handshake()
print(data)
tunn.close()
conn.close()
Я использую curl для отправки запроса на мой сервер
curl -x http://127.0.0.1:12345 https://httpbin.org/get
В основном то, что я пытаюсь curl -> сервер Python -> веб-сайт -> python -> curl
Спасибо, пожалуйста, исправьте мой код
Еще раз спасибо