Python Requests 代理配置完全指南

HTTP/HTTPS/SOCKS5 · Session 复用 · 超时与重试 · 轮换模式 · 更新于 2026-11-06
Tutorials
主页 › 教程中心 › Python Requests 代理配置完全指南

Requests 通过一个普通字典读取代理,任何请求方法都能接收。一个字典覆盖全部协议:

import requests

proxies = {
    "http":  "http://USER:PASS@GATEWAY:PORT",
    "https": "http://USER:PASS@GATEWAY:PORT",
}

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=15)
print(r.text)  # 输出代理出口 IP
"https" 这个 key 不代表要用 HTTPS 代理——它的含义是「访问 https:// 目标时用这个代理」。普通 http:// 代理同样能处理 HTTPS 目标(走 CONNECT 隧道),与 cURL 行为一致。

SOCKS5

SOCKS5 需要安装 socks 扩展(引入 PySocks):

pip install "requests[socks]"
proxies = {
    "http":  "socks5h://USER:PASS@GATEWAY:PORT",
    "https": "socks5h://USER:PASS@GATEWAY:PORT",
}

和 cURL 一样优先 socks5h://——DNS 在代理侧解析,没有 DNS 泄露。

Session:复用连接与凭据

超过一次调用就该用 Session:它复用 TCP 连接池(走远程网关时提速明显),且代理只需设一次:

import requests

s = requests.Session()
s.proxies = {"http": "http://USER:PASS@GATEWAY:PORT",
             "https": "http://USER:PASS@GATEWAY:PORT"}
s.headers.update({"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"})

r = s.get("https://target-site.com", timeout=(5, 20))  # (连接, 读取)

能在生产环境存活的超时与重试

代理会带来额外延迟和偶发卡死。连接与读取超时都要设,幂等 GET 一定要配重试:

from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

retry = Retry(total=3, backoff_factor=1.5,
              status_forcelist=[429, 500, 502, 503, 504],
              allowed_methods=["GET", "HEAD"])
s.mount("https://", HTTPAdapter(max_retries=retry, pool_maxsize=20))

轮换模式

用轮换网关时,轮换发生在服务端——每个请求(或每个会话标记)拿到新出口 IP:

# 每请求换 IP(网关侧轮换)
for page in pages:
    s.get(page, proxies=proxies, timeout=15)

# 粘性会话:一波请求固定同 IP,之后再换
sticky = proxies.copy()
sticky["http"]  = sticky["http"].replace("USER", "USER-session-7f3a")
sticky["https"] = sticky["https"].replace("USER", "USER-session-7f3a")
在自建轮换层之前,先实测网关本身的轮换质量:从同一入口连发 50 个请求、数一下去重出口 IP 数——健康的池子长什么样,可以看 IPLight 公开的实时池深报告。

排错清单

常见问题

proxies 里 https 这个 key 需要 HTTPS 代理吗?

不需要。key 指的是目标协议而非代理协议,普通 http:// 代理通过 CONNECT 隧道就能处理 https:// 目标。

Requests 怎么用 SOCKS5?

先 pip install requests[socks],然后在 proxies 字典里用 socks5h://。socks5h 让 DNS 在代理侧解析,避免 DNS 泄露。

Requests 和 httpx 哪个更适合代理场景?

两者支持相同的 proxies 字典格式。httpx 额外支持 HTTP/2;Requests 生态更全。本文的代理概念对两者通用。

怎么验证代理真的在轮换?

从同一网关入口连发 50 个请求,统计去重后的出口 IP 数。IPLight 在实时池深报告里公开了实测池深。

IPLight 动态住宅池:21.5 万+ 在线 IP、170+ 国家,$1.20/GB 起——查看价格,或在实时池深报告验证池子。

热门地区:全部地区 · 美国 · 英国 · 德国 · 日本 · 印尼 · 巴西 · 印度 · 俄罗斯
热门产品:动态住宅代理 · 静态住宅代理 · 机房代理 · SERP 代理 · 价格表
IPLight 实时住宅代理池:21.5 万+ 在线 IP · 覆盖 170+ 国家与地区 · 动态住宅低至 $1.20/GB · 池深数据真实在线统计 · 更新于 2026-11