Python代码在执行时遇到了SSL证书验证失败

解决 Python requests SSL 证书验证问题的三种方法

1. 临时禁用 SSL 验证(不推荐生产环境使用)

在开发或测试环境中,可临时禁用 SSL 验证以绕过错误,但会降低安全性,可能面临中间人攻击风险。

import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)  # 禁用警告

url = 'https://v2.alapi.cn/api/zaobao'    
params = {'token': '57wYlmH4OS8PArNx', 'format': 'json'}
response = requests.get(url, params=params, verify=False)  # 关键参数:verify=False

2. 手动信任自签名证书(推荐)

如果服务器使用的是自签名证书,可将证书下载后手动加入信任链。

步骤:

  1. 从浏览器导出证书(例如 Chrome 访问 https://v2.alapi.cn,点击地址栏锁图标,导出为 PEM 格式)。
  2. 在代码中指定该证书文件的路径:

    response = requests.get(url, params=params, verify='/path/to/certificate.pem')

    或通过环境变量全局设置证书路径:

    import os
    os.environ['REQUESTS_CA_BUNDLE'] = '/path/to/certificate.pem'

3. 更新证书库

Python 的 requests 库依赖 certifi 包管理 CA 证书。更新证书库可能解决问题。

pip install --upgrade certifi

更新后,可查看当前使用的证书路径:

import certifi
print(certifi.where())  # 输出证书路径