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

Python如何按指定顺序串联两个代理发送HTTP请求

Python多层指定顺序代理请求实现方案

Python完全可以实现你要求的「客户端→带认证Socks5代理→HTTP代理→目标资源」的链式代理访问,以下是两种可落地的实现方案:

方案1:全局Socks5代理叠加requests配置(简单快速)

原理是通过PySocks替换进程默认的socket实现,让所有网络流量默认先走第一层Socks5代理,再通过requests的代理参数配置第二层HTTP代理,自动形成链式链路。
先安装依赖:
pip install pysocks requests

代码示例:

import socks
import socket
import requests

# 配置第一层带认证的Socks5代理为全局默认代理
socks.set_default_proxy(
    proxy_type=socks.SOCKS5,
    addr="socks5_host",
    port=1080, # 替换为你的Socks5端口
    username="socks5_user",
    password="socks5_pass"
)
# 替换系统默认socket实现
socket.socket = socks.socksocket

# 配置第二层无需验证的HTTP代理
second_proxy = {
    "http": "http://http_proxy_host:port",
    "https": "http://http_proxy_host:port"
}

# 发送请求自动走两层代理,即可验证HTTP代理在Socks5网络环境下的可用性
try:
    response = requests.get("http://example.com", proxies=second_proxy, timeout=15)
    print(f"HTTP代理可用,响应状态码:{response.status_code}")
except Exception as e:
    print(f"HTTP代理不可用,错误信息:{str(e)}")

注意:该方案会修改当前进程的全局网络配置,适合单场景验证使用,若进程内有其他不需要走代理的请求会受影响。

方案2:使用httpx原生链式代理(推荐,无全局污染)

httpx是新一代Python HTTP客户端,原生支持按顺序配置多层链式代理,不需要修改全局配置,灵活性更高。
先安装依赖:
pip install httpx[socks]

代码示例:

import httpx

# 按访问顺序配置代理列表,顺序和你要求的链路完全一致
proxy_chain = [
    "socks5://socks5_user:socks5_pass@socks5_host:port",
    "http://http_proxy_host:port"
]

try:
    with httpx.Client(proxies=proxy_chain, timeout=15) as client:
        response = client.get("http://example.com")
        print(f"HTTP代理可用,响应状态码:{response.status_code}")
except Exception as e:
    print(f"HTTP代理不可用,错误信息:{str(e)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:09:04