python urllib得到[Errno套接字错误] [重复]

Posted

技术标签:

【中文标题】python urllib得到[Errno套接字错误] [重复]【英文标题】:python urllib got [Errno socket error] [duplicate] 【发布时间】:2016-07-07 15:33:36 【问题描述】:

我正在练习 google-python 课程。但是,我遇到了 urllib 的问题。这是简化的代码:

import urllib
url = 'http://www.google.com'
ufile=urllib.urlopen(url)

这段代码确实有效,但如果我将 url 更改为其他一些,例如:

url = 'https://developers.google.com/edu/python/utilities#exceptions'

会报错:

IOError: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED]   certificate verify failed (_ssl.c:590)

完整的错误信息如下:

Traceback (most recent call last):
  File "practice2.py", line 4, in <module>
    ufile=urllib.urlopen(url)
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/urllib.py", line 87, in urlopen
    return opener.open(url)
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/urllib.py", line 213, in open
    return getattr(self, name)(url)
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/urllib.py", line 443, in open_https
    h.endheaders(data)
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/httplib.py", line 1049, in endheaders
    self._send_output(message_body)
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/httplib.py", line 893, in _send_output
    self.send(msg)
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/httplib.py", line 855, in send
    self.connect()
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/httplib.py", line 1274, in connect
    server_hostname=server_hostname)
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/ssl.py", line 352, in wrap_socket
    _context=self)
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/ssl.py", line 579, in __init__
    self.do_handshake()
  File "/home/jren/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/ssl.py", line 808, in do_handshake
    self._sslobj.do_handshake()
IOError: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

非常感谢您阅读本文!

【问题讨论】:

检查您的计算机时钟显示的时间是否正确! 【参考方案1】:

Python 对 ssl currently than it has been before 更加严格。您可以暂时绕过 ssl 验证。看看this post。当然,这可能不是一个永久的解决方案,但如果您无权配置 developers.google.com 证书,那可能是您能做的最好的。

【讨论】:

谢谢。有用! (虽然不确定它是如何工作的,因为到目前为止我对 ssl 知之甚少......)【参考方案2】:

1 检查 SSL 版本

2确保socket模块底层是支持SSL编译模式的,即SSL编译选项打开时。

3端口错误,检查一下

【讨论】:

非常感谢您的快速回复。我对 SSL 和套接字知之甚少,所以如果你不介意,你能简单地告诉我如何做到这一点,或者你对这些有什么推荐的读物吗?再次感谢。 嗯,我是新手。我只是看看这个问题。对不起,我不能给你一些有用的建议。

以上是关于python urllib得到[Errno套接字错误] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

TimeoutError:[Errno 60]操作超时(Python套接字请求)

Python [Errno 98] 地址已在使用中

python3的urllib以及urllib2的报错问题

当没有数据要读取时,读取套接字会给出 errno EAGAIN,而且如果我断开网络连接

urllib2.URLError: <urlopen 错误 [Errno 8]

如何处理 urllib2 套接字超时?