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

为什么Python Requests Session中设置的proxy代理参数无法跨请求生效?

核心原因

这是Requests库的代理优先级设计导致的,Requests的代理配置生效优先级从高到低为:

  • 单次请求调用时显式传入的proxies参数
  • 系统环境变量/注册表中存储的HTTP_PROXY、HTTPS_PROXY、NO_PROXY代理配置
  • Session实例上配置的proxies属性

你当前使用的Windows系统环境中大概率配置了全局代理,且该代理不可用或与你代码中配置的代理不一致。你在Session中设置的代理优先级低于系统环境变量的代理,所以请求实际使用了系统的无效代理,最终触发SSL握手超时报错。而你单次请求显式传proxies的时候,该配置优先级最高,直接覆盖了系统代理,所以可以正常请求。

解决方案

在你的Session初始化函数中新增session.trust_env = False配置,关闭Requests读取系统环境变量配置的逻辑,就可以让Session中设置的代理全局生效,修改后的代码如下:

def requests_setup():
    # setup proxy
    proxies = {'http': f'http://someproxy:8080',
               'https': f'http://someproxy:8080'}

    # initialize session
    session = requests.Session()
    # 关闭读取系统环境变量配置,优先使用Session内配置
    session.trust_env = False

    # Part 1: set up proxy
    session.proxies.update(proxies)

    # Part 2: add certificate
    session.verify = r'SOME_CERT_BUNDLE.pem'

    return session

补充说明

你将HTTPS协议的代理设置为HTTP前缀是符合使用场景的,大部分企业代理都只需要走HTTP协议建立隧道,不需要单独配置HTTPS前缀的代理地址,该配置本身没有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:39:04