Я пытаюсь подключиться к прокси-серверу https через сокеты python.
Сначала я хотел бы начать с того, что могу сделать это без прокси, поэтому я знаю, что мой код работает без них, но мне нужны прокси. Я также уверен, что мой запрос CONNECT работает, потому что после этого я получаю сообщение «200 соединение установлено».
Это означает, что моя ssl-часть отключена, особенно в функции / части wrap_socket моего кода. Я попытался не использовать ssl (не думал, что это сработает, но я просто подумал, что могу попробовать), и он отправил мне странный шестнадцатеричный ответ, который, поискав его, я обнаружил, что это из-за «искаженного HTTP-запроса. ». Для меня это не имело смысла, поэтому я продолжал пытаться использовать разные версии ssl, включая tlsv1, а затем, наконец, попробовал sslv3. Это очевидно испорчено на моем компьютере и других, потому что я получаю as = wrap_socket (s, ssl_version = ssl.PROTOCOL_SSLv3) AttributeError: модуль 'ssl' не имеет атрибута 'PROTOCOL_SSLv3' ”” ошибка.
Перед этим я пытался не указывать версию ssl, но получил «неправильную версию». Итак, после всего этого тестирования я не могу понять, какую версию ssl использовать и почему, и я также не могу подтвердить, что sslv3 работает, потому что я получаю указанную выше ошибку. Я уверен, что мой прокси-запрос-свечение работает, но я также могу ошибаться в этой области.
У меня вопрос: что я здесь делаю не так? В частности, ssl-часть.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try: s.connect((proxy.split(":")[0], int(proxy.split(":")[1]))) #connect to proxy
except:
self.proxy_errors+=1
return
s.send("CONNECT site.com:443 HTTP/1.1\r\nHost: site.com\r\n\r\n".encode())
#s = wrap_socket(s)