Есть такой вот код:
class TcpClient:
...
def startTLS(self):
self._s=ssl.wrap_socket(self._s)
def send(self, data):
if isinstance(data,str):
data=data.encode()
self._s.send(data)
def recv(self):
return self._s.recv(self.msglen)
....
Использую его так:
def get(self, url, proxy=None):
host=url.replace("http://","").replace("https://","").split("/")[0]
prot=url[:5].replace(":","")
path=url.replace(prot+"//"+host,"")
#на код выше прошу не обращать внимания, он только для того, что бы понимать чтои откуда, позже будет заменен на что-то более вменяемое
s=TcpClient()
s.connect(host,80,proxy)
if prot=="https":
s.startTLS()
s.send("GET %s HTTP/1.0" % path)
s.send(self._hdrs2str()+b"\r\n"+self._cooks2str())
s.send("\r\n\r\n")
Код рабочий(т.е. c http проблем нет), но при переходе на https возникает следующая ошибка:
Traceback (most recent call last):
File "<pyshell#58>", line 1, in <module>
headers, page=br.get("https://www.google.com.ua/")
File "***\webclient.py", line 87, in get
s.startTLS()
File "***\webclient.py", line 25, in startTLS
self._s=ssl.wrap_socket(self._s)
File "C:\Python32\lib\ssl.py", line 521, in wrap_socket
ciphers=ciphers)
File "C:\Python32\lib\ssl.py", line 276, in __init__
raise x
File "C:\Python32\lib\ssl.py", line 272, in __init__
self.do_handshake()
File "C:\Python32\lib\ssl.py", line 451, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [Errno 1] _ssl.c:392: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Как этого избежать? Заранее благодарен.