urllib2:读取https网址失败

马克西姆·波什奇(Maksym Polshch)

该代码在我的Ubuntu上失败,但在其他主机上运行良好。

>>> from urllib2 import urlopen
>>> urlopen("https://courtapps.utcourts.gov/XchangeWEB/login")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 400, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 418, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1215, in https_open
    return self.do_open(httplib.HTTPSConnection, req)
  File "/usr/lib/python2.7/urllib2.py", line 1177, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 1] _ssl.c:504: error:1408F119:SSL 
routines:SSL3_GET_RECORD:decryption failed or bad record mac>

这是什么原因以及如何解决?我觉得出现了问题OpenSSL,已v1.0.1安装。

马克西姆·波什奇(Maksym Polshch)

自定义SSLv3处理程序可解决以下问题:

import httplib, ssl, urllib2, socket
class HTTPSConnectionV3(httplib.HTTPSConnection):
    def __init__(self, *args, **kwargs):
        httplib.HTTPSConnection.__init__(self, *args, **kwargs)

    def connect(self):
        sock = socket.create_connection((self.host, self.port), self.timeout)
        if self._tunnel_host:
            self.sock = sock
            self._tunnel()
        try:
            self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_SSLv3)
        except ssl.SSLError, e:
            print("Trying SSLv3.")
            self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_SSLv23)

class HTTPSHandlerV3(urllib2.HTTPSHandler):
    def https_open(self, req):
        return self.do_open(HTTPSConnectionV3, req)

# install opener
urllib2.install_opener(urllib2.build_opener(HTTPSHandlerV3()))

if __name__ == "__main__":
    r =   urllib2.urlopen("https://courtapps.utcourts.gov/XchangeWEB/login")
    print(r.read())

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

urllib2:读取https网址失败

来自分类Dev

通过urllib2的HTTPS请求在NTLM代理之后失败

来自分类Dev

在没有代理的情况下,对某些站点的Python HTTPS请求(urllib2)在Ubuntu 12.04上失败

来自分类Dev

在没有代理的情况下,对某些站点的Python HTTPS请求(urllib2)在Ubuntu 12.04上失败

来自分类Dev

使用urllib2下载zipfile失败

来自分类Dev

https 使用 python urllib2 获取请求

来自分类Dev

urllib无法读取https

来自分类Dev

Tor + Urllib2 Python

来自分类Dev

urllib2 : AttributeError 'strip',

来自分类Dev

Python urllib2 响应

来自分类Dev

Urllib2 HTTP 404

来自分类Dev

当我使用`urllib2`时,如何保存https的SSL密钥?

来自分类Dev

在Python URLLIB2中读取巨大的内容长度时,套接字被阻塞

来自分类Dev

Urllib2不能执行请求

来自分类Dev

Python urllib2中的语法问题?

来自分类Dev

使用urllib2检查响应

来自分类Dev

HTMLParser或urllib2 unicode问题

来自分类Dev

Python:使用urllib2登录Moodle

来自分类Dev

python忽略证书验证urllib2

来自分类Dev

504:使用urllib2的网关超时

来自分类Dev

python urllib2返回垃圾

来自分类Dev

Syntax Issue in Python urllib2?

来自分类Dev

Python:Urllib2返回404

来自分类Dev

python urllib2和unicode

来自分类Dev

Python urllib2不遵守超时

来自分类Dev

Python Urllib2 SSL错误

来自分类Dev

Python urllib2请求错误

来自分类Dev

如何使用urllib2获取cookie

来自分类Dev

urllib2和HTTPErrorProcessor Python 3