如何在Python Requests中禁用SNI?
我正在尝试使用 requests
库通过 SSL 访问一个远程服务器。可惜的是,这个服务器配置得不太对,在 SNI 握手时返回了一个错误 TLSV1_UNRECOGNIZED_NAME
。这个错误在浏览器中会被忽略,但在 requests
中会引发异常。
这个问题看起来和这个问题是一样的,不过是在 Python 中,而不是 Java: SSL 握手警报:自从升级到 Java 1.7.0 后出现的 unrecognized_name 错误
在 Python 2 中,连接是完全正常的,因为它不支持 SNI。那么我该如何在 Python 3 中禁用 SNI,以便连接能够正常工作呢?
1 个回答
7
我找不到在requests
层面禁用SNI的方法,但我找到了一种小技巧,可以让它误以为不支持SNI。在导入requests
之前添加这段代码(不要在后面添加,否则就来不及了):
import ssl
ssl.HAS_SNI = False