requests库-忽略不安全的网站并且忽略警告

  1. 前景

公司内部部署了一个没有ssl安全证书的网站,现象就是提示不安全,如下所示。 这个时候我们使用requests直接请求的话,就会出现Max retries exceeded with url的问题。

  1. 解决Max retries exceeded with url问题

首先加上常用的解决方法,但在这个问题下并不是一个好的解决方法,需要用下面的方法彻底解决。。

s = requests.session()
s.keep_alive = False # 关闭多余连接

在请求的时候加上verify=False即可忽略不安全的网站。

r = self.s.post(url,
                data=json.dumps(req_body),
                headers=headers,
                verify=False)

但这时候请求又会出现下面的问题

D:Anaconda_softenvspytorchlibsite-packagesurllib3connectionpool.py:1043: InsecureRequestWarning: Unverified HTTPS request is being made to host www.dytt89.com. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(
  1. 解决InsecureRequestWarning: Unverified HTTPS request is being made to host问题

这个问题在官方的文档中给出了解释,并且也给出了解决方法。

import urllib3
urllib3.disable_warnings()

文档翻译: :::info urllib3将根据证书验证支持的级别发出几个不同的警告。这些警告指示特定情况,可以通过不同方式解决。 不安全请求警告 当在未启用证书验证的情况下向HTTPS URL发出请求时,会发生这种情况。请按照证书验证指南解决此警告。 不安全平台警告 这种情况发生在具有过时ssl模块的Python 2平台上。这些较旧的ssl模块可能会导致一些不安全的请求在应该失败的地方成功,而安全请求在应该成功的地方失败。请按照pyOpenSSL指南解决此警告。 SNI缺失警告 这种情况发生在2.7.9之前的Python 2版本上。这些旧版本缺乏SNI支持。这可能导致服务器提供客户端认为无效的证书。请按照pyOpenSSL指南解决此警告。

强烈不鼓励发出未经验证的HTTPS请求,但是,如果您了解风险并希望禁用这些警告,可以使用disable_warnings() import urllib3 urllib3.disable_warnings() 或者,您可以使用标准日志记录模块捕获警告: logging.captureWarnings(True) 最后,通过设置PYTHONWARNINGS环境变量或使用-W标志,可以在解释器级别抑制警告。 :::

经验分享 程序员 微信小程序 职场和发展