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

如何用Python requests发HTTPS POST,忽略证书或传校验参数解决报错

解决方案


  1. 强制指定匹配的TLS版本
    绝大多数生产环境HTTPS接口已禁用TLS1.0/1.1等低版本协议,requests默认的SSL协商逻辑如果未能匹配到服务器支持的高版本TLS,就会触发SSLEOFError。可通过自定义HTTP适配器显式指定使用TLS1.2及以上版本发起请求,示例代码如下:
import requests
from requests.adapters import HTTPAdapter
import ssl

class TLSAdapter(HTTPAdapter):
    def init_poolmanager(self, *args, **kwargs):
        context = ssl.create_default_context()
        # 可根据服务器要求调整最低支持的TLS版本,如TLSv1_3
        context.minimum_version = ssl.TLSVersion.TLSv1_2
        kwargs['ssl_context'] = context
        return super().init_poolmanager(*args, **kwargs)

# 注意删除URL末尾多余的问号
url = "https://tamcmdb.tivit.com/mctwpsapi/v1/api/new"
payload={}
files={}
headers = {}

s = requests.Session()
s.mount("https://", TLSAdapter())
# trust_env=False禁止读取系统代理配置,解决关闭证书校验后的FileNotFoundError问题
response = s.request("POST", url, headers=headers, data=payload, files=files, verify=False, trust_env=False)
print(response.text)
  1. 显式配置代理规则
    关闭证书校验后出现的FileNotFoundError报错,Windows环境下大概率是requests读取了系统代理配置但无法适配导致的:比如系统使用PAC自动代理脚本、代理地址格式异常等,Postman和PowerShell对系统代理兼容性更好因此运行正常。如果确实需要走代理,可显式传入proxies参数:
proxies = {
  "http": "http://替换为你的代理地址:端口",
  "https": "http://替换为你的代理地址:端口"
}
response = s.request("POST", url, headers=headers, data=payload, files=files, verify=False, proxies=proxies)
  1. 升级依赖库版本
    低版本的requests、urllib3存在已知的SSL兼容问题,可尝试升级依赖后再测试:
pip install --upgrade requests urllib3

内容的提问来源于stack exchange,提问作者Isaias Pereira Machado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:24:05