Форум сайта python.su
Есть такой вот код:
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")
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
Офлайн
> Как этого избежать? Заранее благодарен.
Если возможно, использовать, например, pycurl.
Офлайн