RapidAPI接口浏览器测试正常 IDE报certificate verify failed错误
这个certificate verify failed报错和API密钥、接口调用逻辑无关,核心是本地Python环境缺少可信的SSL根证书,无法校验RapidAPI服务端返回的HTTPS证书合法性,导致TLS握手直接失败。
RapidAPI在线Playground本身内置了完整的可信根证书库,所以测试可以正常跑通;你本地用的是Anaconda虚拟环境,Windows平台下的conda环境经常会出现默认根证书库不全、版本过旧的问题,刚好触发这个报错。
按优先级从高到低尝试,优先选无安全风险的方案:
方案1:更新本地环境根证书库(推荐,无安全隐患)
先激活你当前用的atmsTesting虚拟环境,在终端执行以下命令更新证书库:conda install -c conda-forge certifi ca-certificates执行完成后重启IDE,直接运行原有代码即可。如果更新后还是报错,就在代码里显式指定requests库使用certifi的证书路径,修改请求代码如下:
import certifi # 其余原有url、headers、querystring代码不变 response = requests.request("GET", url, headers=headers, params=querystring, verify=certifi.where())方案2:临时关闭证书校验(仅本地调试用,禁止生产环境使用)
如果赶进度要快速验证接口逻辑,可以临时在请求参数里加verify=False跳过证书校验,修改后代码如下:response = requests.request("GET", url, headers=headers, params=querystring, verify=False)注意:该操作会让HTTPS请求失去防中间人攻击、防内容篡改的保护,仅能用于本地临时调试,正式上线的代码必须移除该参数,走正常证书校验逻辑
方案3:排查代理/抓包工具干扰
如果前两个方案都无效,检查本机是否开启了Fiddler、Charles等抓包工具,或者是否在公司内网HTTPS代理环境下。这类工具/代理会替换传输链路中的SSL证书,Python默认不信任这类自签证书,临时关闭抓包工具/代理即可恢复;如果必须使用代理,把对应代理/抓包工具的根证书导出后,添加到本地certifi的信任证书列表中即可。
内容的提问来源于stack exchange,提问作者ahap13

