我正在请求访问需要SSL证书才能访问的站点。当我尝试访问该URL时,出现SSL证书错误
import requests
proxies = {"https":"https://user:pwd@host:port"}
r = requests.get("https://URL", proxies=proxies)
print(r.status_code)
文件“C:\程序文件\Python37 -32\库\站点包\请求\会话. py”,第533行,在请求中响应= self.send(prep,**send_kwargs)文件“C:\程序文件\Python37 -32\库\站点包\请求\会话. py”,第646行,在发送中r = adapter.send(请求,**kwargs)文件“C:\程序文件\Python37 -32\库\站点包\请求\adapters.py”,第514行,在发送中引发SSLError(e,请求=请求)请求。异常。SSLError:HTTP连接池(主机=“pit-wvrpnpd.johnlewis.co.uk”,端口=443):URL超过最大重试次数:/suite-api(由SSL错误导致(SSL证书验证错误(1,'[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:证书链中的自签名证书(_ssl.c:1076“')))
如果我在Python的请求中使用verify=False,我会得到下面的错误
r = requests.get("https://URL", proxies=proxies,verify=False)
C:\程序文件\Python37 -32\库\站点包\urllib3\连接池.py:851:不安全请求警告:正在发出未经验证的HTTPS请求。强烈建议添加证书验证。请参阅:403https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings错误请求提示
所以我决定从Chrome下载SSL证书“site.cer”然后我使用它如下,但它抛出错误
r = requests.get("https://URL", proxies=proxies, cert=('C:\\site.cer'))
文件“C:\程序文件\Python37 -32\库\站点包\请求\会话. py”,第533行,在请求中响应= self.send(prep,**send_kwargs)文件“C:\程序文件\Python37 -32\库\站点包\请求\会话. py”,第646行,在发送中r = adapter.send(请求,**kwargs)文件“C:\程序文件\Python37 -32\库\站点包\请求\adapters.py”,第514行,在发送中引发SSLError(e,请求=请求)请求。异常。SSLError:HTTP连接池(主机=“pit-wvrpnpd.johnlewis.co.uk”,端口=443):URL超过最大重试次数:/suite-api(由SSL错误引起(SSL错误(9,“[SSL] PEM库(_ssl.c:3854)”)))
我用的是Python 3.7,你知道我哪里出错了吗?
2条答案
按热度按时间ukxgm1gy1#
用
verify=False
添加这个头给了我访问权限。iqjalb3h2#
这很管用#