请不要将问题标记为重复。我尝试了所有可能性,但没有找到答案。我使用的是 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
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 上我无法重现该问题。