证书验证失败:无法获取本地颁发者证书 python 请求

2023-11-27

我正在尝试使用一个非常简单的 python 请求requests.get但使用此代码出现以下错误:

url = 'https://www.tesco.com/'
status = requests.get(url)

错误:

requests.exceptions.SSLError: HTTPSConnectionPool(host='www.tesco.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')))

谁能向我解释如何解决这个问题,更重要的是这个错误意味着什么?

非常感谢


解释

错误是由于无效或过期引起的SSL证书

当向服务器发出 GET 请求时,例如www.tesco.com你有2个选择,一个http and an https,在 https 的情况下,服务器将为您的请求者(您的脚本)提供 SSL 证书,该证书允许您验证您是否正在连接到合法网站,这也有助于保护和加密您的脚本和服务器之间传输的数据

Solution

只需禁用 SSL 检查即可

url = 'https://www.tesco.com/'
requests.get(url, verify=False)

OR

使用会话并禁用 SSL 证书检查

import requests, os

url = 'https://www.tesco.com/'

# Use Session and Disable the SSL Cert Check
session = requests.Session()
session.verify = False
session.trust_env = False
session.get(url=url)

类似的帖子

额外信息 1

确保日期和时间设置正确,因为请求库会检查 SSL 证书与您的本地日期和时间相比的有效日期范围。因为这有时是一个常见问题

额外信息2

您可能需要在计算机上安装最新更新的根 CA 证书在这里下载

安全须知

不鼓励使用verify=false因为它存在安全风险。这意味着您的浏览器或脚本无法验证从网站/网址收到的数据是否确实来自它们(您正在请求的网站)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

证书验证失败:无法获取本地颁发者证书 python 请求 的相关文章

随机推荐