Requests 库
SSL 证书验证
Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。SSL 验证默认是开启的,如果证书验证失败,Requests 会抛出 SSLError:
requests.exceptions.SSLError: hostname 'requestb.in' doesn't match either of '*.herokuapp.com', 'herokuapp.com'
在发送 GET 请求的时候可以通过设置 verify 参数来控制是否检查 SSL 证书。默认是开启的,即 verify= True 。
我们可以在发送请求的时候,把它设置为 False 。
requests.get('https://github.com', verify=Fasle)
还有,我在官方文档上面还看到其他的“玩法”。
客户端证书
可以指定一个本地证书用作客户端证书,可以是单个文件(包含密钥和证书)或一个包含两个文件路径的元组:
requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key'))
或者保持在会话中:
s = requests.Session()
s.cert = '/path/client.cert'
注意:本地证书的私有 key 必须是解密状态。目前,Requests 不支持使用加密的 key。
CA 证书
这个内容,我也是在文档上看到的,没什么好说的。我直接复制文档的内容。
Requests 默认附带了一套它信任的根证书,来自于 Mozilla trust store。然而它们在每次 Requests 更新时才会更新。这意味着如果你固定使用某一版本的 Requests,你的证书有可能已经 太旧了。
从 Requests 2.4.0 版之后,如果系统中装了 certifi 包,Requests 会试图使用它里边的 证书。这样用户就可以在不修改代码的情况下更新他们的可信任证书。
为了安全起见,我们建议你经常更新 certifi!