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

为什么requests.get()设置verify=True时访问无SSL证书站点不报错

问题原因

  • verify参数仅对HTTPS协议的请求生效,你当前请求的URL是http://开头的HTTP协议地址,整个请求过程不会触发SSL/TLS握手流程,verify=True的配置不会生效,自然不会抛出证书相关错误。
  • 补充说明:如果站点配置了HTTP强制跳转到HTTPS,requests默认跟随重定向的情况下,跳转后的HTTPS请求会生效verify配置,但这种方式不可靠,部分未配置跳转的HTTP站点不会触发证书校验逻辑。

解决方法

要检测站点是否有有效SSL证书,直接构造HTTPS协议的请求,捕获证书相关异常即可,参考代码如下:

import requests
from requests.exceptions import SSLError, ConnectionError

def check_ssl_cert(domain):
    # 主动构造HTTPS请求
    url = f"https://{domain}"
    try:
        requests.get(url, verify=True, timeout=5)
        return True, "站点具备有效SSL证书"
    except SSLError:
        return False, "站点SSL证书无效或不存在"
    except ConnectionError:
        return False, "站点无法通过HTTPS协议访问,未部署SSL证书或服务不可用"
    except Exception as e:
        return False, f"检测出错:{str(e)}"

# 测试示例,直接传域名即可,不需要加http前缀
print(check_ssl_cert("dtdev.atwebpages.com"))

如果需要兼容带HTTP/HTTPS前缀的输入URL,可以先对输入内容做预处理,提取出纯域名后再构造HTTPS请求校验,避免协议头影响校验结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:15:05