Python的巨坑
你是不是好奇为什么SSL模块会跳出这个提示?
你是不是好奇为什么网上都只有针对Requests 模块中ssl 的解决方法?
先看看出现问题的代码,然后我告诉你如何解决
import ssl
import socket
s=ssl.wrap_socket(socket.socket(socket.AF_INET,socket.SOCK_STREAM))
s.connect(("hostname",443))
>>> ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1129)
解决方法
ssl 模块中的wrap_socket 方法在Python3.7版本开始就已经被弃用,所以就意味着其实你在使用一个已经被淘汰的方法。
如何解决呢?使用SSLContext.wrap_socket() 方法。
import ssl
import socket
hostname="www.a.com"
s=ssl.SSLContext().wrap_socket(socket.socket(socket.AF_INET,socket.SOCK_STREAM), server_hostname=hostname)
s.connect((hostname,443))
hostname="www.a.com"
context = ssl.SSLContext()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = context.wrap_socket(sock, server_hostname=hostname)
s.connect((hostname, 443))
问题解决,是不是很惊讶?你是不是在网上找了好久都没找到真正的解法?
如果这篇文章帮到你了,请一定要留下一个评论!
|