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

Python爬虫遇SSLCertVerificationError 求长期合规解决方案

SSL证书验证失败错误的成因与合规解决方案

错误成因

  • 目标网站SSL证书变更:昨天正常今天报错,最大可能是目标网站更换了SSL证书、证书过期,或者证书链中的中间/根证书更新,导致本地信任库无法识别新的签发机构证书。
  • Anaconda环境证书库未同步:Anaconda自带独立的certifi证书存储,你用pip install --upgrade certifi更新的是pip环境的证书,但Anaconda可能没使用这个更新后的库,导致证书链不完整。
  • 本地网络环境变动:比如切换了网络(公司内网、代理),新网络的防火墙或代理会篡改SSL流量,或者本地系统的根证书库太久没更新,缺失必要的信任证书。

合规的长期解决办法

  • 同步Anaconda环境的certifi证书库

    1. 先找到Anaconda环境中certifi的证书文件路径,运行命令:
      python -c "import certifi; print(certifi.where())"
      
    2. 用conda命令升级Anaconda环境的certifi(比pip更适配Anaconda):
      conda install -c conda-forge certifi
      
    3. 如果升级后还是不行,可以手动替换证书文件:下载Mozilla官方的根证书集合,覆盖上述路径下的cacert.pem文件。
  • 手动指定目标网站的信任证书
    如果目标网站用的是私有CA签发的证书,先下载该CA的根证书(.pem格式),然后在请求中指定证书路径:

    response = requests.post(url, 
                             headers=headers,
                             data=data,
                             verify="/path/to/your/ca-root-cert.pem"
                             )
    
  • 更新本地系统根证书库

    • Windows:打开控制面板 → 网络和Internet → Internet选项 → 内容 → 证书,导入缺失的根证书并设置信任。
    • macOS:打开“钥匙串访问”,导入根证书,右键点击证书选择“显示简介”,在“信任”选项卡设置为“始终信任”。
    • Linux:将CA证书复制到/usr/local/share/ca-certificates/目录,执行update-ca-certificates命令更新系统信任库。
  • 排查网络代理/防火墙
    如果使用代理,检查代理是否使用了自签名证书拦截SSL流量,若是,需要把代理的CA证书加入本地信任库;同时关闭临时的防火墙或安全软件,排查是否是它们干扰了证书验证流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:21:14