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

如何在requests.Session中配置代理?多种尝试后仍使用本地IP

解决requests.Session代理不生效的问题

核心问题:代理格式未按requests要求的字典结构设置

你的代理地址格式是正确的,但requests的proxies参数需要明确对应请求协议(http/https)的键值对,而非单独的字符串。你之前的尝试都因格式错误导致代理未被正确识别。

正确实现代码

import requests

# 替换为你的代理地址
proxy = "http://username:password@url_of_proxyprovider:port"
# 构造覆盖http和https请求的代理字典
proxies = {
    "http": proxy,
    "https": proxy
}

with requests.Session() as ses:
    # 方式1:在Session中全局设置代理
    ses.proxies.update(proxies)
    # 方式2:初始化Session时直接传入代理(二选一即可)
    # ses = requests.Session(proxies=proxies)
    
    # 发送请求,验证代理是否生效(可以访问httpbin.org/ip查看当前IP)
    resp = ses.get("https://httpbin.org/ip")
    print(resp.text)

你之前方法的错误点

  • 方法1:如果proxy是单个字符串而非字典,ses.proxies.update()无法正确解析,因为update需要键值对格式
  • 方法2:s是请求返回的Response对象,修改它的proxies属性完全无效,请求已经发送完成
  • 方法3:get请求传入的proxies参数必须是字典格式,传入单个字符串会被requests忽略

额外排查点

  1. 先通过curl验证代理可用性:
    curl -x http://username:password@url_of_proxyprovider:port https://httpbin.org/ip
    
    如果curl也无法使用代理,说明代理地址、账号密码或端口有误,联系代理提供商确认
  2. 若代理是HTTPS类型,确保代理证书可信任,或临时添加verify=False(生产环境不推荐):
    resp = ses.get("目标URL", verify=False)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:22:51