requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)

这不是 this question

的副本

我检查了 this 但不安全的方式对我来说不太好。

我正在 python 中开发图像大小提取器,它可以提取网页上图像的大小。在这样做之前,我需要获取网页状态代码。我试过这样做

import requests

hdrs = {'User-Agent': 'Mozilla / 5.0 (X11 Linux x86_64) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 52.0.2743.116 Safari / 537.36'}


urlResponse = requests.get(
    'http://aucoe.info/', verify=True, headers=hdrs)
print(urlResponse.status_code)

这给出了错误:

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)

我尝试将 verify=True 更改为

verify='/etc/ssl/certs/ca-certificates.crt'

verify='/etc/ssl/certs'

但是还是报同样的错误。 我需要获取超过 5000 个 url 的状态代码。请帮助我。 提前致谢。

Python 版本: 3.4

请求版本:请求==2.11.1

O.S : Ubuntu 14.04

pyOpenSSL : 0.13

openssl 版本: OpenSSL 1.0.1f 2014 年 1 月 6 日

您需要下载位于 this site 的 GoDaddy 根证书,然后将其作为参数传递给 verify,如下所示:

>>> r = requests.get('https://aucoe.info', verify='/path/to/gd_bundle-g2-g1.crt')
>>> r.status_code
200

如果您要执行多个请求,您可能希望将 SSL 配置为会话的一部分,如 documentation 中突出显示的那样。

您可以随时设置 verify= False。简单的方法,不是最好的。