【发布时间】:2016-12-28 21:55:12
【问题描述】:
正如我在标题中提到的,我想阅读一个网站的源代码。一切正常,但有时我会收到错误消息。
错误
urllib2.URLError: <urlopen error [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
我知道 ssl 证书有问题,但我不知道如何解决。我已经花了几个小时来找到解决问题的方法,但直到现在我都没有成功(我已经尝试了 ssl 模块的一些事情)。
我的做法:
import urllib2
urllib2.openurl("https://www.website.com")
如果没有办法用urllib2 做这种事情,是否有不同的模块,你推荐?
【问题讨论】:
-
PS:我用的是python2.7.10
-
握手失败可能是因为缺少 SNI 或旧的 OpenSSL 版本不支持较新的协议或密码。您可以尝试 requests 库,这取决于问题的未知原因可能会更好或失败。如果这不能帮助提供有关平台、OpenSSL 版本 (
ssl.OPENSSL_VERSION) 和目标 URL 的信息,以便其他人可以重现问题并帮助您。 -
'OpenSSL 0.9.8zh 2016 年 1 月 14 日'
-
由于目标 URL 仍然未知,我的猜测是它需要像 ECDHE 这样的密码和/或像 TLS 1.2 这样的协议版本,这些在这个过时的 OpenSSL 版本中不可用。您可以咨询ssllabs。在这种情况下,请升级所有内容以使用更新的 OpenSSL。
-
网站:bs.to!