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

Python requests调用接口报SSLError(SSLEOFError)是什么原因

报错触发原因

requests.exceptions.SSLError伴随EOF occurred in violation of protocol错误的核心原因是客户端与hacker-news.firebaseio.com的TLS握手流程被意外中断,未完成正常的SSL协商,常见触发场景如下:

  • 本地网络存在流量拦截:公司/校园网防火墙、上网行为审计工具、本地开启的抓包软件(Fiddler/Charles等)、配置错误的代理/VPN会篡改TLS握手包,中间人代理未正确完成SSL协商就断开连接
  • 本地SSL相关依赖版本过旧:Python内置OpenSSL版本过低、requests或依赖的certifi证书库版本太旧,不支持目标站点要求的TLS 1.2+协议,连接会被服务端直接重置
  • 临时网络故障:到目标服务器的路由丢包、运营商链路波动,会偶发连接中断触发该报错
排查修复步骤

按照从易到难的顺序操作即可定位解决问题:

  1. 验证基础网络连通性
    直接在本地浏览器访问目标接口地址https://hacker-news.firebaseio.com/v0/topstories.json,如果浏览器无法正常返回JSON数据,先排查本地网络:关闭抓包工具、异常代理/VPN,确认网络可以正常连通Firebase服务,内网环境联系管理员确认域名没有被拦截。
  2. 定位是否为证书校验问题
    临时添加verify=False参数跳过证书验证测试(注意:该配置仅用于本地排查,禁止在生产环境使用,会带来中间人攻击风险),测试代码如下:
import requests
import urllib3
# 关闭跳过证书验证产生的告警
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

url = 'https://hacker-news.firebaseio.com/v0/topstories.json'
r = requests.get(url, verify=False)
print('Status code:', r.status_code)

如果修改后可以正常请求,说明问题出在证书校验环节,直接执行命令升级相关依赖即可:
pip install --upgrade requests certifi
3. 检查TLS版本兼容性
如果升级依赖后仍报错,执行以下代码查看本地OpenSSL版本:

import ssl
print(ssl.OPENSSL_VERSION)

如果输出的OpenSSL版本低于1.0.1,或者当前使用的Python版本低于3.7,直接升级到Python 3.7及以上版本即可——该版本后Python默认启用TLS 1.2支持,内置的OpenSSL版本满足Firebase服务的连接要求。
4. 适配偶发网络波动
如果是网络不稳定导致的偶发报错,可以给请求添加自动重试机制,参考代码:

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

# 配置重试策略
session = requests.Session()
retry_config = Retry(
    total=3, # 最多重试3次
    backoff_factor=1, # 重试间隔退避系数
    status_forcelist=[429, 500, 502, 503, 504] # 遇到指定状态码才重试
)
session.mount("https://", HTTPAdapter(max_retries=retry_config))

url = 'https://hacker-news.firebaseio.com/v0/topstories.json'
r = session.get(url)
print('Status code:', r.status_code)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:54:18