解决requests 2.28.x版本SSL错误:证书验证失败

1、问题背景

在使用requests 2.28.1版本时,我进行HTTP post传输报告负载时,由于SSL验证设置为True,请求失败,错误如下:(Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1091)’)))。但是,当我将requests模块降级到2.27.1版本时,它能够成功工作。问题在于为什么2.27版本的请求能够成功,而2.28.1版本的请求会出现错误。可能是什么原因导致requests选择SSL证书的方式发生了变化?

在这里插入图片描述

2、解决方案

针对此问题,有一些可能的解决方案可以尝试,以解决SSL证书验证失败的问题:

a、检查系统证书:

首先,您可以检查系统上安装的SSL证书。SSL证书通常位于操作系统的特定位置,不同操作系统可能有不同的存储位置。确保这些证书存在并且没有过期。如果您发现证书不存在或已过期,您可以尝试重新安装或更新这些证书。这有助于确保requests模块能够正确识别本地颁发者证书。

b、更新CA证书包:

有时候,SSL证书问题可能是由于操作系统的CA证书包过时而引起的。您可以尝试更新操作系统的CA证书包,以确保其中包含了最新的根证书和中间证书。这可以通过操作系统的包管理器或手动下载更新证书包来完成。

c、检查requests模块设置:

确保您的requests模块的SSL验证设置正确。在2.28.x版本中,可能对SSL验证的默认行为进行了一些更改。您可以通过设置requests的SSL验证参数来强制进行证书验证或禁用它,具体取决于您的需求。例如,您可以使用以下代码来禁用SSL验证:

import requestsrequests.packages.urllib3.disable_warnings()
response = requests.get('https://example.com', verify=False)

请注意,禁用SSL验证可能会降低安全性,只在确定请求目标是可信的情况下使用。

d、考虑使用其他库或工具:

如果以上解决方案都无法解决问题,您可以考虑使用其他HTTP请求库或工具,以避免出现此SSL证书验证问题。例如,您可以尝试使用http.clienturllib来进行HTTP请求,或者使用更高级的HTTP库,如httpx。不同的库可能对SSL验证有不同的实现方式,可能适用于您的情况。

最终,通过尝试以上解决方案中的一种或多种,您应该能够解决requests 2.28.x版本中的SSL错误问题,并成功发起HTTP post请求。确保在做出任何更改之前备份您的代码,并谨慎测试以确保安全性和稳定性。希望这些解决方案能够帮助您解决您的问题!如果您有任何进一步的疑问或需要更多帮助,请随时提出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/188486.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROC 曲线:健康背景下的应用和解释

一、介绍 在医疗保健领域,做出明智的决策对于改善患者治疗结果、有效分配资源和设计有效的诊断测试至关重要。受试者工作特征 (ROC) 曲线是一个强大的工具,在评估诊断测试的性能、区分健康个体和患病个体以及优化医疗保健干预方面发挥着至关重要的作用。…

[C++历练之路]vector的介绍以及底层模拟实现

W...Y的主页 😊 代码仓库分享 💕 🍔前言: 我们学习了STL中的string以及其所有重要接口并进行了模拟实现,但是STL中包含的内容不止于此。学习了string之后继续学习STL中的vector,学习成本会大大降低&#…

LLM大模型 (chatgpt) 在搜索和推荐上的应用

目录 1 大模型在搜索的应用1.1 召回1.1.1 倒排索引1.1.2 倒排索引存在的问题1.1.3 大模型在搜索召回的应用 (实体倒排索引) 1.2 排序1.2.1 大模型在搜索排序应用(融入LLM实体排序) 2 大模型在推荐的应用2.1 学术界关于大模型在推荐的研究2.2 …

什么是Selenium?如何使用Selenium进行自动化测试?

什么是 Selenium? Selenium 是一种开源工具,用于在 Web 浏览器上执行自动化测试(使用任何 Web 浏览器进行 Web 应用程序测试)。   等等,先别激动,让我再次重申一下,Selenium 仅可以测试Web应用…

协同办公是什么?如何高效协同办公?读这篇就够了!

协同办公是指在工作中,团队成员通过共享信息、协作完成任务,实现高效的工作方式。它有助于促进团队成员之间的沟通、合作和协调,提升工作效率和质量。以下是一些实现高效协同办公的建议和好用的工具推荐。 首先,建立清晰的沟通渠…

二十一、数组(1)

本章概要 数组特性 用于显示数组的实用程序 一等对象返回数组 简单来看,数组需要你去创建和初始化,你可以通过下标对数组元素进行访问,数组的大小不会改变。大多数时候你只需要知道这些,但有时候你必须在数组上进行更复杂的操作…

duplicate复制数据库单个数据文件复制失败报错rman-03009 ora-03113

duplicate复制数据库单个数据文件复制失败报错rman-03009 ora-03113 搭建dg过程中,发现有一个数据文件在复制过程中没有复制过来,在备库数据文件目录找不到这个数据文件 处理方法: 第一步:主库备份86#数据文件 C:\Users\Admi…

遇见未来的你——过程中真是苦了你妈妈

目录 一、背景介绍二、思路&方案三、过程1.你给你妈妈增加的体重负担2.你给你妈妈增加的起夜负担3.凌晨6点你非常活跃吓坏爹妈4.凌晨3点你又调皮的让我和妈妈用仪器与你互动5.经历,都在积攒未来相遇的泪湿眼眶 四、总结 一、背景介绍 十年前,你米爷…

【Linux】U盘安装的cfg引导文件配置

isolinux.cfg文件 default vesamenu.c32 timeout 600display boot.msg# Clear the screen when exiting the menu, instead of leaving the menu displayed. # For vesamenu, this means the graphical background is still displayed without # the menu itself for as long …

串口通信

1.1 串口简介 在串口中 用0和1表示高低电平 VCC供电 设备A给设备B供电 如果各自都有供电的模块就不需要连接这个线 GND的连线是为了获取相同的电压基准 因为有时候获得电压各自判断的标准不一样 可能获得不一样的电压 如果想A发送数据给B那么蓝线不需要连接 如果想B发送给A那么…

Springboot升级为3.0.6

版本升级 Springboot升级为3.0.6 版本从原来的2.7.12换成了3.0.6 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.6</version><relativePath/> <…

Python系列:如何提高python程序代码的健壮性

前言 在编程的时候,我们难免会遇到一些不可靠的情况,比如网络请求失败,数据库连接超时等等。这些不确定性会让我们的程序容易出现各种错误和异常。那么如何来增加程序的容错性和健壮性呢? 可能大多数人会想到使用try except来进行异常捕捉进行失败重试(Retry)。虽然try-esc…