当输入 https 站点时,Python urlopen 函数会引发错误

当输入 https 站点时,Python urlopen 函数会引发错误

请不要将问题标记为重复。我尝试了所有可能性,但没有找到答案。我使用的是 Ubuntu 12.04(LTS)

当输入 https 站点时,Python urlopen 函数会引发此错误消息:

Traceback (most recent call last):
  File "fb.py", line 13, in <module>
    htmlfile = urllib.urlopen(url)
  File "/usr/lib/python2.7/urllib.py", line 86, in urlopen
    return opener.open(url)
  File "/usr/lib/python2.7/urllib.py", line 207, in open
    return getattr(self, name)(url)
  File "/usr/lib/python2.7/urllib.py", line 436, in open_https
    h.endheaders(data)
  File "/usr/lib/python2.7/httplib.py", line 954, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 814, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 776, in send
    self.connect()
  File "/usr/lib/python2.7/httplib.py", line 1161, in connect
    self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
  File "/usr/lib/python2.7/ssl.py", line 381, in wrap_socket
    ciphers=ciphers)
  File "/usr/lib/python2.7/ssl.py", line 143, in __init__
    self.do_handshake()
  File "/usr/lib/python2.7/ssl.py", line 305, in do_handshake
    self._sslobj.do_handshake()
IOError: [Errno socket error] [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

我该如何解决?

答案1

您没有提供您的网址,因此我尝试了这个网站。

import sys
import urllib

print sys.version

2.7.5+(默认,2013 年 9 月 19 日,13:48:49)

[GCC 4.8.1]

print urllib.__version__

1.17

url = 'https://askubuntu.com'
res = urllib.urlopen(url)

print res.url

https://askubuntu.com/

print res.headers
缓存控制:公共,最大年龄=60
内容类型:text/html;字符集=utf-8
到期时间:2014 年 2 月 23 日星期日 15:01:28 GMT
最后修改时间:2014 年 2 月 23 日星期日 15:00:28 GMT
各不相同: *
X-Frame 选项:SAMEORIGIN
日期:2014 年 2 月 23 日星期日 15:00:28 GMT
连接:关闭
内容长度:70580

至少在 Ubuntu 13.10 上我无法重现该问题。

相关内容