python+requests库使用时报错:ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1131)

在初次使用Python的unittest和request进行接口测试时遇到SSL错误:[SSL:WRONG_VERSION_NUMBER]。通过检查代码和调整电脑的网络代理设置,成功解决了问题。确保正确配置网络代理后,测试代码运行无误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人测试小白~第一次用python+unittest+request做接口测试的学习时,一直报这个ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1131)

反复检查代码也没有发现什么问题,然后在网上找了很多方法,最终解决这个问题的方法如下:

进入电脑的“网络和Internet“设置页面

点击进入”代理“的设置页面

在这里插入图片描述
在这里插入图片描述

设置完成后,再次运行测试代码就不会报错了!!!

(此文仅供参考,记录自己在学习过程中解决的每一个问题)

### 解决 SSL 错误 (SSL: WRONG_VERSION_NUMBER) 访问 DeepSeek-r1:7b 模型 当遇到 `SSL: WRONG_VERSION_NUMBER` 的错误,这通常意味着客户端和服务器之间的协议版本不匹配。对于尝试通过 HTTPS 进行通信的应用程序来说,这是一个常见的问题。 #### 可能的原因分析 - 客户端使用的 OpenSSL 版本可能过旧或与服务端支持的版本不符。 - 代理设置可能导致请求被篡改或重定向至不同版本的服务。 - 防火墙或其他网络安全设备可能会干扰 TLS 握手过程[^1]。 #### 解决策略 ##### 方法一:更新 Python 和依赖 确保所用环境中的 Python 是最新稳定版,并升级所有相关包特别是涉及网络连接的部分如 `requests`, `urllib3` 等: ```bash pip install --upgrade pip requests urllib3 pyOpenSSL ``` ##### 方法二:禁用 SSL 验证(仅限测试) 如果是在开发环境中调试,则可以临关闭 SSL 验证来绕过此问题;但在生产环境下绝对不应这样做因为会带来安全风险: ```python import ssl from urllib.request import urlopen, Request context = ssl._create_unverified_context() url = 'https://example.com/path/to/deepseek' req = Request(url=url) response = urlopen(req, context=context).read().decode('utf8') print(response) ``` 请注意这种方法只适用于非正式场合下的快速验证目的[^2]。 ##### 方法三:指定最低限度的安全参数 调整应用程序发起 HTTP 请求的方式,在创建 HTTPSConnection 或者 Session 对象的候显式指明允许使用的最小加密套件以及最高TLS/SSL 协议版本: ```python import requests from requests.adapters import HTTPAdapter from urllib3.poolmanager import PoolManager import ssl class TlsAdapter(HTTPAdapter): def init_poolmanager(self, connections, maxsize, block=False): ctx = ssl.create_default_context() ctx.set_ciphers('DEFAULT@SECLEVEL=1') # 设置较低的安全级别以便兼容更多情况 self.poolmanager = PoolManager( num_pools=connections, maxsize=maxsize, block=block, ssl_version=ssl.PROTOCOL_TLSv1_2, ssl_context=ctx) session = requests.session() adapter = TlsAdapter() session.mount("https://", adapter) try: response = session.get('https://your.deepseek.endpoint', verify=True) except Exception as e: print(f"An error occurred while making the request {e}") else: print(response.status_code) finally: session.close() ``` 上述代码片段展示了如何自定义一个适配器类继承自 `HTTPAdapter` 并覆盖其初始化池管理器的方法从而强制使用特定版本的 TLS 加密传输层安全性协议[^3]。 #### 结论 针对 `SSL: WRONG_VERSION_NUMBER` 类型的异常处理方案取决于具体应用场景和个人需求偏好。建议优先考虑方法一即保持软件栈处于最新状态以获得最佳性能和支持水平;而其他两种方式则作为备选措施用于特殊情形下解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值