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

文章讲述了在requests库中,如何避免环境变量REQUESTS_CA_BUNDLE影响到session对象的verify参数设置,通过先将环境变量设为None再设置verify参数,确保API请求的安全性和可靠性。
摘要由CSDN通过智能技术生成

在使用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对象中的值,而不是环境变量中的值。

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

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请求的安全性和可靠性。希望这篇文章对解决这个问题有所帮助。如果有任何疑问或需要进一步的解释,请随时提出。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值