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

  1. 前景

公司内部部署了一个没有ssl安全证书的网站,现象就是提示不安全,如下所示。
image.png
这个时候我们使用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_soft\envs\pytorch\lib\site-packages\urllib3\connectionpool.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问题

这个问题在https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#tls-warnings官方的文档中给出了解释,并且也给出了解决方法。

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标志,可以在解释器级别抑制警告。
:::

猜你喜欢

转载自blog.csdn.net/xiaokai1999/article/details/131523064