python中的握手失败(_ssl.c:590)

2024-09-25 00:35:16 发布

您现在位置:Python中文网/ 问答频道 /正文

当我执行下面的命令时

req = urllib2.Request(requestwithtoken) 
self.response = urllib2.urlopen(req,self.request).read()

我得到以下异常:

SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)

问题是我可以通过使用curlping服务来获取令牌。 在检索令牌的过程中,验证了所有证书。 反过来,通过使用生成的令牌,我无法连接到服务。 我在尝试时遇到了上述错误。 为什么会这样?


Tags: 命令selfsslreadresponserequestalerturllib2
2条回答

我也有同样的问题。这可能是因为远程服务器请求urllib2不支持的密码。我认为有两种可能的解决方案:

  1. Enable your specific cipher in ^{}。我认为您还可以启用all ciphers supported(请参见页面的最底部),但请检查您正与curl一起使用的是哪个,如上面的链接所示。

  2. 使用pip install requests[security]安装带有额外安全包的requests。在这个requests issue on github中会进一步讨论这个问题。

我做了第二个选择,这对我有效。

我也有同样的问题。检查您正在使用的请求的版本。

import requests
print requests.__version__

如果版本是2.18.4,则应尝试降级到2.11.1。我做到了,它解决了我的问题。 为此,在终端中发出以下命令

pip uninstall requests
pip install requests==2.11.1 

希望这有帮助。

相关问题 更多 >