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

使用Python requests.get()时出现SSL证书错误该如何修复?

问题描述

运行如下Python requests请求代码:

reqs = requests.get('http://test.com')

返回SSL相关报错:

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

已尝试执行以下修复命令,均未解决问题:

pip install python-certifi-win32
pip install --upgrade certifi
解决方案

按优先级从高到低尝试,优先选择安全合规的方案,临时规避方案不推荐在生产环境使用:

  • 方案1:手动指定CA证书路径
    升级certifi、安装python-certifi-win32无效,通常是因为你处于Windows域环境、使用了公司/机构自签根证书,或者开启了Fiddler/Charles等抓包工具,requests默认读取的certifi内置证书库不会包含这些自定义根证书,直接在请求中指定对应证书路径即可:

    import requests
    # Windows系统默认CA证书路径
    ca_path = "C:/Windows/System32/curl-ca-bundle.crt"
    # macOS系统替换为 "/etc/ssl/cert.pem"
    # Linux系统替换为 "/etc/ssl/certs/ca-certificates.crt"
    # 如果是抓包场景,替换为你导出的抓包工具根证书pem文件路径即可
    reqs = requests.get('http://test.com', verify=ca_path)
    
  • 方案2:修复MacOS系统Python证书关联(仅适用于Mac设备)
    如果你的运行环境是MacOS,官网安装的Python或系统自带Python经常出现证书未关联系统钥匙串的问题,直接执行对应Python版本目录下的证书安装脚本即可:

    # 将路径中的3.10替换为你本地实际安装的Python版本号
    cd /Applications/Python\ 3.10/
    ./Install\ Certificates.command
    
  • 方案3:排查目标站点证书配置问题
    你代码中请求的是HTTP协议地址,但报错显示请求被自动跳转到了443端口的HTTPS地址,说明目标站点配置了强制HTTPS跳转。如果以上方法都无效,可以手动检查目标站点的HTTPS证书是否存在中间证书缺失、证书域名不匹配、证书过期、证书链不完整的问题。

  • 方案4:临时关闭证书校验(仅本地调试用)
    如果只是本地临时测试、明确知晓目标站点安全性,可以直接关闭证书校验逻辑,同时关闭冗余警告:

    import requests
    import urllib3
    # 关闭不安全请求的警告提示
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    reqs = requests.get('http://test.com', verify=False)
    

注意:关闭证书校验会带来中间人攻击风险,绝对不能在生产环境、公网业务场景下使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:31:04