ITPub博客

首页 > 大数据 > 数据分析 > 解决requests库中session.verify参数失效的问题

解决requests库中session.verify参数失效的问题

原创 数据分析 作者:金木大大大 时间:2023-11-16 10:04:18 0 删除 编辑

在使用requests库进行HTTP请求时,如果在环境变量中设置了'REQUESTS_CA_BUNDLE',并且在session对象中设置了verify参数为False,那么API请求会使用环境变量中的值而不是session对象中的值。这是因为在requests库中,当session对象中的verify参数被设置为False时,它会优先使用环境变量中的值。


这个问题的发起者(我)遇到了这个bug,它导致了API请求的安全性问题,因为本应该忽略证书验证的请求也会受到环境变量的影响。


解决方案

要解决这个问题,可以在调用session对象之前,先将'REQUESTS_CA_BUNDLE'环境变量设置为None,然后再设置session对象的verify参数。这样,API请求就会优先使用session对象中的值,而不是环境变量中的值。


以下是修改后的代码示例:


```python

import requests

import os


# 设置环境变量'REQUESTS_CA_BUNDLE'为None

os.environ['REQUESTS_CA_BUNDLE'] = None


# 创建session对象

session = requests.Session()


# 设置session对象的verify参数为False

session.verify = False


# 发起HTTP请求

response = session.request(method, url="/".join([self.base_url, url]), headers=headers, data=body, params=query)

```


在上述代码中,首先将'REQUESTS_CA_BUNDLE'环境变量设置为None,然后创建一个session对象,并将session对象的verify参数设置为False。这样,无论环境变量中的值如何设置,API请求都会优先使用session对象中的值,从而解决了该问题。


通过这种方式,我们可以确保在需要忽略证书验证的情况下,session.verify参数不会被环境变量干扰,提高了API请求的安全性和可靠性。希望这篇文章对解决这个问题有所帮助。如果有任何疑问或需要进一步的解释,请随时提出。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70032566/viewspace-2995597/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2023-10-12

  • 博文量
    249
  • 访问量
    157736