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

使用requests库通过代理发起请求时出现SSL Handshake错误如何解决

SSL握手超时问题解决方案
  • 优先检查代理的SSL协议适配性
    Python 3.10搭配OpenSSL 1.1.1默认禁用了TLS 1.0/1.1等旧协议,部分代理服务仅支持旧版TLS协议会导致握手失败。可以在请求中指定SSL上下文强制兼容旧协议,示例代码如下:
import ssl
import requests
from requests.adapters import HTTPAdapter

class SSLAdapter(HTTPAdapter):
    def init_poolmanager(self, *args, **kwargs):
        context = ssl.create_default_context()
        # 允许TLS 1.0及以上版本,可根据代理实际支持情况调整
        context.min_version = ssl.TLSVersion.TLSv1
        kwargs["ssl_context"] = context
        return super().init_poolmanager(*args, **kwargs)

url = "https://google.com"
session = requests.session()
session.mount("https://", SSLAdapter())
proxy = {
        "http": "http://REDACTED:12345",
        "https": "https://REDACTED:12345"
    }
r = session.get(url, headers={'User-Agent': get_random_agent()}, proxies=proxy, timeout=30)
print(r.status_code)
  • 检查代理URL协议配置是否正确
    部分HTTPS代理实际只支持HTTP协议接入,你可以尝试将proxy配置中https对应的代理地址前缀改为http:
proxy = {
    "http": "http://REDACTED:12345",
    "https": "http://REDACTED:12345"
}
  • 检查系统/防火墙代理拦截规则
    新电脑的系统防火墙、第三方安全软件可能会拦截requests向代理端口发起的SSL连接,你可以临时关闭防火墙测试,如果问题解决,将Python进程和代理端口加入放行规则即可。
  • 升级requests及依赖库版本
    执行以下命令升级相关依赖,避免已知的兼容性bug:
    pip install --upgrade requests urllib3 pyopenssl
  • 增加超时时间配置
    部分代理响应速度慢,默认的SSL握手超时阈值太短也会触发报错,可以在get请求中显式设置timeout参数,单位为秒,例如timeout=60。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:45:01