广州专门做网站的公司,网站开发颜色选择器,i网站制作,花都低价网站建设1、问题背景
在使用requests 2.28.1版本时#xff0c;我进行HTTP post传输报告负载时#xff0c;由于SSL验证设置为True#xff0c;请求失败#xff0c;错误如下#xff1a;(Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certifi…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, verifyFalse)请注意禁用SSL验证可能会降低安全性只在确定请求目标是可信的情况下使用。
d、考虑使用其他库或工具
如果以上解决方案都无法解决问题您可以考虑使用其他HTTP请求库或工具以避免出现此SSL证书验证问题。例如您可以尝试使用http.client或urllib来进行HTTP请求或者使用更高级的HTTP库如httpx。不同的库可能对SSL验证有不同的实现方式可能适用于您的情况。
最终通过尝试以上解决方案中的一种或多种您应该能够解决requests 2.28.x版本中的SSL错误问题并成功发起HTTP post请求。确保在做出任何更改之前备份您的代码并谨慎测试以确保安全性和稳定性。希望这些解决方案能够帮助您解决您的问题如果您有任何进一步的疑问或需要更多帮助请随时提出。