You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python requests请求HTTPS站点报SSL证书过期但浏览器访问正常

报错原因
  1. Python的requests库默认使用certifi包提供的独立CA根证书库做SSL校验,不会调用Chrome、Firefox等浏览器内置的证书库,也不会自动补全站点缺失的中间证书链。
  2. 你访问的站点存在SSL证书链部署不完整的问题,浏览器因为之前缓存过对应根/中间证书可以正常完成校验,但requests请求时无法获取完整的证书校验链路,就会触发证书验证失败报错。
  3. 部分老旧版本的requests/certifi包自带的CA证书库本身存在过期根证书,也会导致校验失败。
解决方案

方案1:升级依赖包(优先推荐)

升级requests和对应的CA证书库certifi到最新版本即可解决绝大多数根证书过期导致的校验问题,执行命令:

pip install --upgrade requests certifi

方案2:手动指定站点证书链(安全合规)

如果升级依赖后仍报错,可手动导出站点的完整证书链后指定给requests使用:

  1. 用浏览器打开目标站点,从地址栏的证书详情中导出完整PEM格式的证书链,保存为nic_cert.pem文件
  2. 请求时添加verify参数指向该证书文件即可:
response = requests.post(url, headers=headers, data=payload, verify="./nic_cert.pem")

方案3:临时关闭SSL校验(仅测试使用,不推荐)

如果是临时测试场景,可以手动关闭SSL校验,同时关闭对应的告警提示,修改代码如下:

import requests
import urllib3
# 关闭SSL校验告警
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# 原有代码不变,请求时添加verify=False参数
response = requests.post(url, headers=headers, data=payload, verify=False)

注意:该方案会跳过SSL身份校验,存在中间人攻击风险,仅适合临时测试使用,不要用于生产环境或敏感数据请求场景。

其他注意事项
  • 你当前请求头中携带的:authority属于HTTP/2协议的伪头部,requests默认不支持该类头部,可直接删除,不会影响正常请求。

内容的提问来源于stack exchange,提问作者ThoughtfulHistorian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:54:04