SSL证书验证Urllib2

3

我试图访问已过期或无效证书的网页。当我从浏览器中访问该URL时,会出现安全警告您的连接不是私密连接。但是当我使用Python访问相同的页面时,没有出现任何错误。我使用的代码如下:

import urllib2
url  = 'https://expired.badssl.com/' 
request = urllib2.Request(url) 
result = urllib2.urlopen(request)     
print (result.read())

为什么在urllib2中没有SSL证书错误?

更新

我发现下载的页面是我的互联网身份验证页面。

但是当我使用requests时,我会得到SSL异常。为什么urllib2的行为与requests的行为不同?

1个回答

0

Python 2.7.9之前版本未经过证书验证。

Python 2.7.9包括了一些网络安全增强功能,已被批准纳入Python 2.7维护版本中。PEP 476更改了几个标准库模块,如httplib、urllib2和xmlrpclib,默认情况下验证由服务器通过安全(TLS)连接呈现的证书。

来自2.7.14安装说明。

另请参阅


确实,文档说明Python 2.7.9+中的urllib2默认验证证书。但是,在Python 2.7.13中,我执行了urllib2.urlopen(urllib2.Request("https://[REDACTED]/"))requests.get("https://[REDACTED]/"),结果发现requests会抛出SSL异常,而urllib2则不会!看来文档是错误的! - cowlinator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接