ssl-bad-ecpoint-经验帖
Python requests 遇到 BAD_ECPOINT 的终极解决方案一句话总结SSLError(1, [SSL: BAD_ECPOINT] bad ecpoint)发生在TLS 握手层与证书验证无关verifyFalse无效。根因是目标服务器使用 ECDH 压缩曲线OpenSSL 1.1 拒绝握手。Windows schannel 无此限制所以本地正常。最终方案用curl_cffi替代requests绕过 Python_ssl模块。问题场景湖南生态环境厅网站sthjt.hunan.gov.cn在 Docker 容器python:3.12-slim-bullseyeOpenSSL 1.1中请求时直接报错requests.exceptions.SSLError: HTTPSConnectionPool(hoststhjt.hunan.gov.cn, port443): Max retries exceeded (Caused by SSLError(SSLError(1, [SSL: BAD_ECPOINT] bad ecpoint (_ssl.c:1000))))但Windows 本地运行完全正常。根因分析为什么verifyFalse无效SSL/TLS 握手分为两层┌─────────────────────────────────┐ │ 证书验证层 (verifyTrue/False) │ ← verifyFalse 只跳过这一层 ├─────────────────────────────────┤ │ TLS 握手层 (密钥交换/加密套件) │ ← BAD_ECPOINT 发生在这里 └─────────────────────────────────┘BAD_ECPOINT发生在 TLS 握手阶段的ECDH 密钥交换环节——服务器返回了压缩格式的椭圆曲线点compressed EC pointOpenSSL 1.1.0 出于安全考虑拒绝接受。这是握手层面的拒绝比证书验证更底层。为什么 Windows 正常Linux 报错Python 的 SSL/TLS 能力来自 CPython 编译时链接的 SSL 后端平台SSL 后端对压缩 EC 点的态度Windowsschannel系统自带容忍Linux (OpenSSL 1.1)OpenSSL拒绝Linux (OpenSSL 3.x)OpenSSL拒绝macOSSecure Transport容忍关键点Python 的_ssl模块是 C 扩展在 CPython 编译时就链接好了运行时无法替换。apt install openssl或pip install pyOpenSSL都改变不了_ssl的行为。尝试过的无效方案按时间顺序以下方案均失败方案结果原因verify_ssl False❌错误在握手层不在证书层_LegacySSLAdapterSECLEVEL1❌安全级别与 EC 点压缩是正交问题_LegacySSLAdapterSECLEVEL0OP_LEGACY_SERVER_CONNECT❌同上OpenSSL 1.1 根本不允许压缩 EC 点降级到python:3.12-slim-bullseyeOpenSSL 1.1❌OpenSSL 1.1.0 开始就拒绝压缩 EC 点了云端浏览器 API 代理❌API 服务端自身崩溃api_server.py内部报错最终方案curl_cffi原理curl_cffi 通过 CFFI 直接调用 libcurl完全不经过 Python 的_ssl模块。TLS 握手由 curl 自己的 SSL 后端处理从根本上规避了 Python_ssl的限制。此外它还支持TLS 指纹伪装模拟 Chrome/Firefox/Safari 的 JA3 指纹顺带解决基于 TLS 指纹的反爬。安装pipinstallcurl_cffi支持 Python 3.10有预编译的 manylinux/musllinux wheel无需编译。代码改动改动量极小——curl_cffi的 API 与requests完全兼容# 之前importrequests sessionrequests.Session()# 之后fromcurl_cffiimportrequests sessionrequests.Session(impersonatechrome124)# 模拟 Chrome 124 TLS 指纹完整代码湖南 pipeline 实际改动fromcurl_cffiimportrequestsclassHunanPipeline(BasePipeline):province湖南def_create_session(self)-requests.Session:使用 curl_cffi SessionChrome 指纹 libcurl TLS绕过 BAD_ECPOINTsessionrequests.Session(impersonatechrome124)session.headers.update({User-Agent:Mozilla/5.0 ... Chrome/124.0.0.0 Safari/537.36,Accept:text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8,Accept-Language:zh-CN,zh;q0.9,})returnsessiondefcollect(self,session,year_filter,first_page_onlyFalse):# ... session.get(url) 用法完全不变respsession.get(url,timeout30)defprocess_item(self,session,item):# ... 同样不变respsession.get(item[url],timeout30)不需要verify_ssl False、不需要_LegacySSLAdapter、不需要改 Dockerfile 基础镜像。注意事项curl_cffi的异常类继承自自己的curl_cffi.requests.errors.RequestsError不是标准库的requests.RequestException。如果基类用except requests.RequestException做重试需要改为同时捕获两者的基类或用except Exception兜底。impersonate参数可选的浏览器版本chrome110、chrome120、chrome124、firefox、safari等。国内政府网站建议用chrome124。详情页的超时时间建议 30s政府网站响应可能较慢。推广适用场景这个方案不仅适用于BAD_ECPOINT同样的思路可以解决其他 Python_ssl层面的问题SSLError: unsupported protocol— 服务器仅支持老旧 TLS 版本SSLError: dh key too small— DH 密钥长度不足SSLError: no shared cipher— 加密套件不兼容TLS 指纹反爬JA3 检测只要问题根因在 Python_ssl模块层面且无法通过升级/配置 OpenSSL 解决就可以考虑用curl_cffi绕开。参考博客方案参考解决Python报错SSLError如果试了网上一大堆方法还不行看看这个吧 — 感谢 kikn0928 的分享curl_cffi GitHubcurl_cffi PyPI

相关新闻

同轴电缆屏蔽效能测试方法与工程实践

同轴电缆屏蔽效能测试方法与工程实践

1. 同轴电缆与屏蔽线屏蔽效能测试的必要性在电子设备和通信系统中,电磁干扰(EMI)和射频干扰(RFI)是影响信号传输质量的关键因素。同轴电缆和屏蔽线作为最常见的信号传输介质,其屏蔽效能直接决定了系统抗干扰能力。我从事电磁兼容测试工作十余年&#xff…

2026/7/18 19:31:57阅读更多 →
Qt 无人机状态显示软件源码 持 Linux/Windows 平台,基于 Qt5.11 开发。

Qt 无人机状态显示软件源码 持 Linux/Windows 平台,基于 Qt5.11 开发。

Qt无人机状态显示软件源码 1.软件标题栏自定义 2.机电状态信息包含当前时间、开车时间、飞行时间、电量指示器(交、直、电池)组成。 3.机械信息包含燃油、燃油油温、刹车、滑油、滑油油温、液压、油门等信息组成。 4.飞控信息包含地速、表速、真空速、气…

2026/7/18 19:31:57阅读更多 →
Mermaid Live Editor终极指南:3步创建专业级可视化图表

Mermaid Live Editor终极指南:3步创建专业级可视化图表

Mermaid Live Editor终极指南:3步创建专业级可视化图表 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-edito…

2026/7/18 19:31:57阅读更多 →
2026年盘点:三大KVM分布式坐席方案如何帮你智慧指挥

2026年盘点:三大KVM分布式坐席方案如何帮你智慧指挥

在智慧城市、应急指挥、金融运营中心等关键场景中,一套高效、稳定、灵活的指挥控制系统是“大脑”与“神经”的核心。传统的矩阵、集中式系统已难以应对海量、异构的信号接入与复杂协同的需求。KVM分布式坐席方案应运而生,凭借网络化、分布式、可扩展的优…

2026/7/18 20:34:14阅读更多 →
第64届高博会圆满落幕|卓翼智能联合中兴发布低空智联网产教融合方案

第64届高博会圆满落幕|卓翼智能联合中兴发布低空智联网产教融合方案

5月24日,为期三天的第64届中国高等教育博览会在南昌绿地国际博览中心圆满落幕。本届高博会以“赋能・协同・卓越:服务高等教育强国建设”为主题,汇聚1500余所高校、6000余家企业及行业机构,集中展示高等教育数字化转型与产教融合创…

2026/7/18 20:34:14阅读更多 →
家用封闭电梯厂商怎么选?记住这三点

家用封闭电梯厂商怎么选?记住这三点

在别墅或复式住宅中,家用电梯正从“奢侈品”转变为提升生活品质的必要配置。面对市面上种类繁多、参数各异的封闭电梯产品,许多业主在选型时感到困惑:究竟是钢带曳引好,还是液压驱动更稳?是追求极致的静音体验&#xf…

2026/7/18 20:34:14阅读更多 →
终极指南:如何修复Windows 11任务栏拖放功能失效问题

终极指南:如何修复Windows 11任务栏拖放功能失效问题

终极指南:如何修复Windows 11任务栏拖放功能失效问题 【免费下载链接】Windows11DragAndDropToTaskbarFix "Windows 11 Drag & Drop to the Taskbar (Fix)" fixes the missing "Drag & Drop to the Taskbar" support in Windows 11. It…

2026/7/18 20:34:14阅读更多 →
SLAS技术在充电系统PLC中的作用

SLAS技术在充电系统PLC中的作用

本文深入探讨了充电系统PLC通信中的SLAC技术,并阐述了其工作原理、流程、优势和应用场景。作为电动汽车与充电系统之间基于电力线通信的链路管理协议,SLAC技术能够实现电动汽车与充电系统的互联互通。其中,SLAC通过交换检测信号来评估信道质量…

2026/7/18 20:34:14阅读更多 →
运维开发转网安居然不用从头学?吃透这 3 类岗位,转型事半功倍

运维开发转网安居然不用从头学?吃透这 3 类岗位,转型事半功倍

收藏!开发运维转网络安全不用重头学,3类宝藏岗位3个落地技巧 文章介绍了开发、运维人员如何转行网络安全领域,无需抛弃现有技能。重点推荐三类低门槛高适配岗位:安全运维工程师(适合运维背景)、Web安全测试…

2026/7/18 20:32:06阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/18 10:49:13阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/18 8:49:08阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/18 14:49:24阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/17 22:48:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →