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

如何使用Python Requests处理过期SSL/TLS证书并区分两类连接错误

Python Requests处理过期证书及异常区分方案

要区分普通连接错误和TLS证书过期错误,只需要分层捕获Requests的异常类型,再对SSL类异常做内容关键词判断即可,无需关闭证书校验逻辑。

完整实现代码

import requests
from requests.exceptions import RequestException, SSLError

def conn(URL):
    try:
        # 保持默认verify=True开启证书校验,不要随意关闭
        response = requests.get(URL, timeout=10)
    except SSLError as e:
        # 从异常信息中匹配证书过期的特征关键词
        err_msg = str(e).lower()
        if "certificate has expired" in err_msg or "cert_has_expired" in err_msg:
            print(URL, "TLS证书已过期")
            return "CERT_EXPIRED"
        # 其他SSL类错误,比如证书不受信任、域名不匹配等,可根据需求自行划分归类
        print(URL, "TLS证书验证失败")
        return "CERT_INVALID"
    except RequestException:
        print(URL, "普通连接错误")
        return "CONNECT_ERROR"

    print(URL, "连接成功,证书有效")
    return "SUCCESS"

# 测试用例
# 有效证书站点
conn("https://www.google.com")
# 不存在的域名
conn("https://unexistent-domain-example.com")
# 过期证书站点
conn("https://expired-rsa-dv.ssl.com")

补充说明

  • 代码返回值做了分类标识,你可以根据业务需求调整返回逻辑或者异常处理分支
  • 所有SSL相关的错误都会先进入SSLError捕获分支,除了过期之外的证书问题(比如自签名证书、域名不匹配、证书被吊销等)也可以通过增加关键词判断的方式做更细的分类
  • 建议加上timeout参数避免无响应的请求长时间卡住

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:45:00