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

使用Python Requests访问https://si3.ufc.br时遇SSLError错误求助

解决requests访问si3.ufc.br时的SSL错误

这个WRONG_SIGNATURE_TYPE错误是因为目标服务器的SSL配置与本地OpenSSL默认规则不兼容,仅关闭证书验证(verify=False)或修改全局密码套件无法解决签名类型匹配问题。试试以下方案:

自定义SSL适配器适配目标服务器

创建一个自定义的HTTP适配器,强制使用兼容的TLS版本并调整安全级别,确保请求能匹配服务器的SSL要求:

import requests
import ssl
from requests.adapters import HTTPAdapter
from urllib3.poolmanager import PoolManager

class CompatibleSSLAdapter(HTTPAdapter):
    def init_poolmanager(self, connections, maxsize, block=False):
        # 创建SSL上下文
        ssl_ctx = ssl.create_default_context()
        # 降低安全级别以兼容旧签名类型
        ssl_ctx.set_ciphers('DEFAULT@SECLEVEL=0')
        # 强制使用TLSv1.2(该服务器大概率仅支持此版本)
        ssl_ctx.options |= ssl.OP_NO_TLSv1_3 | ssl.OP_NO_TLSv1_1 | ssl.OP_NO_TLSv1
        
        self.poolmanager = PoolManager(
            num_pools=connections,
            maxsize=maxsize,
            block=block,
            ssl_version=ssl.PROTOCOL_TLSv1_2,
            ssl_context=ssl_ctx
        )

# 创建会话并绑定适配器到目标域名
session = requests.Session()
session.mount('https://si3.ufc.br', CompatibleSSLAdapter())

# 发送请求
try:
    resp = session.get('https://si3.ufc.br/', verify=False)
    print(f"状态码: {resp.status_code}")
except Exception as e:
    print(f"请求失败: {str(e)}")

原理说明

  • 目标服务器可能仅支持TLSv1.2,而本地requests默认尝试更高版本的TLS,导致握手失败;
  • 将安全级别设为SECLEVEL=0会放宽OpenSSL的签名类型检查,兼容服务器使用的旧签名算法;
  • 用session.mount将适配器绑定到特定域名,不会影响其他URL的请求配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:06:02