У меня возникает следующая ситуация: Я вынужден использовать прокси-сервер HTTP для подключения к серверу HTTPS. По нескольким причинам мне нужен доступ к необработанным данным (до шифрования), поэтому я использую библиотеку сокетов вместо одной из конкретных HTTP-библиотек. Таким образом, я сначала подключаю TCP-сокет к прокси-серверу HTTP и выдаю команду connect.Отправка данных SSL по прокси-соединению TCP в Python
На данный момент HTTP-прокси принимает соединение и, по-видимому, перенаправляет все дополнительные данные на целевой сервер. Однако, если сейчас я пытаюсь переключиться на SSL, я получаю
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
, указывающий, что разъем пытался рукопожатия с HTTP-прокси, а не с целью HTTPS.
Вот код, который я до сих пор: импорт гнездо
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('proxy',9502))
s.send("""CONNECT en.wikipedia.org:443 HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:15.0) Gecko/20100101 Firefox/15.0.1
Proxy-Connection: keep-alive
Host: en.wikipedia.org
""")
print s.recv(1000)
ssl = socket.ssl(s, None, None)
ssl.connect(("en.wikipedia.org",443))
Что бы правильный путь, чтобы открыть SSL сокет к целевому серверу после подключения к HTTP прокси-сервер?
Использование имени переменной, которое также является именем модуля, используемого вами ('ssl'), является ужасной идеей. – Bruno