【问题标题】:Python: get website source code using urllib2 (ssl problems)Python:使用 urllib2 获取网站源代码(ssl 问题)
【发布时间】: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!

标签: python ssl urllib2


【解决方案1】:

这可能是由于服务器请求的某些 ssl 选项和 urllib2 库不支持而发生的。

我建议您安装和使用request 库,因为它提供了更多的安全包和选项。

【讨论】:

  • 你在使用request时会遇到什么样的错误?
  • 这个:requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 警报握手失败 (_ssl.c:590)
  • 你能用这个做点什么吗?
  • 当您尝试连接到任何主机或仅连接到您在问题中指定的主机时会发生这种情况吗?
  • 只针对特定主机!
猜你喜欢
  • 2017-12-24
  • 2015-12-22
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多