In this Article
Python 的 requests 库是发起 HTTP 请求最简单的方式,而添加代理只需一个参数。无论你是在抓取数据、测试地理限制内容,还是构建需要模拟真实用户的 API 客户端,都可以通过 proxies= 参数将请求路由到代理。本指南将详细介绍如何在 Python requests 中使用代理(HTTP、HTTPS、认证、SOCKS5、会话、环境变量和轮换),并盘点 2026 年适用于 Python requests 的 8 个最佳代理。DataImpulse 的价格为 $1/GB,性价比突出。
我是 Andrii Byzov,一名 AI-Native Fractional CMO,日常编写 Python 爬虫。本文提供:可直接复制粘贴的代码片段、SOCKS5 安装与 DNS 泄漏注意事项,以及值得你投入预算的服务商。
关键事实
- 传入一个
proxies字典,包含http和https键:requests.get(url, proxies={"http": "...", "https": "..."})。 - 凭证直接写入代理 URL:
http://user:pass@host:port,无需单独认证。 - 使用
Session一次性设置代理,并在多个请求中复用它(带连接池)。 - SOCKS5 需要安装一次:
pip install "requests[socks]",然后使用socks5h://(其中的 h),这样 DNS 会通过代理解析,不会泄露你的真实位置。 - DataImpulse 性价比突出:住宅代理 $1/GB 按量付费,数据中心代理 $0.50/GB,移动代理 $2/GB,覆盖 195 个国家/地区的 90M+ IP,支持 HTTP/HTTPS/SOCKS5,以及国家/城市/ASN 定向。
如何在 Python Requests 中使用代理
1. 带身份验证的基础 HTTP/HTTPS 代理
import requests
proxies = {
"http": "http://YOUR_LOGIN__cr.us:[email protected]:823",
"https": "http://YOUR_LOGIN__cr.us:[email protected]:823", # __cr.us = US
}
r = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=30)
print(r.json()) # confirm the egress IP
两个键均指向同一个代理;requests 会自动使用 URL 中的凭据。务必设置 timeout。如果你的密码包含特殊字符(@ : # /),请先使用 urllib.parse.quote() 对其进行 URL 编码。
2. Session(只设置一次代理,重复使用)
session = requests.Session()
session.proxies = proxies
session.get("https://example.com/page1")
session.get("https://example.com/page2") # same proxy, pooled connections
3. SOCKS5(安装一次,避免 DNS 泄漏)
# pip install "requests[socks]"
proxies = {
"http": "socks5h://YOUR_LOGIN__cr.us:[email protected]:824",
"https": "socks5h://YOUR_LOGIN__cr.us:[email protected]:824",
}
requests.get("https://httpbin.org/ip", proxies=proxies, timeout=30)
使用 socks5h(带 h),这样主机名会在代理端解析;普通的 socks5 会在本地解析,可能暴露你的真实位置。DataImpulse 在端口 824 上提供 SOCKS5。
4. 环境变量与轮换
# env vars (requests honors these automatically):
# export HTTPS_PROXY="http://YOUR_LOGIN__cr.us:[email protected]:823"
# rotation: with a rotating gateway each request already gets a fresh IP
for _ in range(5):
print(requests.get("https://httpbin.org/ip", proxies=proxies, timeout=30).json())
使用 DataImpulse 的轮换住宅网关时,每个请求都会自动从新的 IP 发出,无需管理代理列表。若要自行轮换静态列表,可为每个请求使用 random.choice() 选择一个代理。
Python requests 最佳代理一览
| 提供商 | 最适合 requests 的用途 | 住宅代理价格 | 协议 | 亮点 |
|---|---|---|---|---|
| DataImpulse | 性价比高,适合脚本和数据抓取 | $1/GB PAYG | HTTP/HTTPS/SOCKS5 | 90M+ 代理池,认证 SOCKS5,流量永不过期 |
| Bright Data | 企业级 + 托管服务 | ~$4/GB 促销价;$8 常规价 | HTTP/HTTPS/SOCKS5 | Web Unlocker、SERP API、数据集 |
| Oxylabs | 企业级 SLA | $6/GB 起 | HTTP/HTTPS/SOCKS5 | 175M+ 代理池,抓取器 API |
| Decodo | 中端方案,地理定位选项齐全 | $3.75/GB(1TB+ 时约 $2) | HTTP/HTTPS/SOCKS5 | 115M+ 代理池,粘性会话最长 24h |
| IPRoyal | 长时间粘性会话 | $7.35/GB 起 | HTTP/HTTPS/SOCKS5 | 粘性会话最长 7 天;低价 PAYG |
| SOAX | 住宅代理和移动代理组合 | $3.60/GB Starter | HTTP/HTTPS/SOCKS5 | 155M+ 住宅代理,33M+ 移动代理 |
| Webshare | 经济型自助服务 | 住宅代理 $3.50/mo 起;数据中心代理 $2.99/mo 起 | HTTP/SOCKS5 | 免费套餐,最便宜的数据中心代理 |
| NetNut | ISP 住宅代理稳定性 | $3.53/GB 起 | HTTP/HTTPS | 消费者 ISP 静态 IP |

简要推荐
DataImpulse 很适合 Python requests:住宅代理按量付费 $1/GB(数据中心 $0.50/GB,移动 $2/GB),拥有覆盖 195 个国家/地区的 90M+ IP,支持 HTTP/HTTPS 和带认证的 SOCKS5,也可通过用户名按国家、城市或 ASN 定向。流量永不过期,不会因订阅周期结束而作废。其公布的成功率为 99.51%,G2 评分为 4.8/5,并提供 24/7 人工支持。对于使用 requests 进行高流量抓取的场景,其单次成功请求成本很低。
Bright Data 是企业级选择(住宅代理常规约 $8/GB,促销约 $4),提供 Web Unlocker、SERP API 和数据集。Oxylabs($6/GB 起,175M+ 池)是 SLA 级选项。Decodo($3.75/GB 起,粘性会话最长 24h)是较为均衡的中端选择。IPRoyal($7.35/GB 起,粘性会话最长 7 天)适合长时间、会话稳定的脚本。SOAX($3.60/GB,155M+ 住宅 + 33M+ 移动)还提供规模可观的移动代理池。Webshare(免费层,数据中心 $2.99/mo 起)是经济型自助服务的入门选择,而 NetNut($3.53/GB 起)适合重视 ISP 住宅代理稳定性的用户。全部都可与 proxies= 参数配合使用。
常见 Python Requests 代理错误
- 使用
socks5://而不是socks5h://:普通socks5会在本地解析 DNS,可能泄露你的真实位置;请使用socks5h。 - 忘记执行
pip install "requests[socks]":未安装该依赖时,socks5代理 URL 会触发 “Missing dependencies for SOCKS support” 错误。 - 未设置
timeout。失效的代理可能使请求一直挂起;务必传入timeout=。 - 使用
verify=False来”修复” SSL 错误:这会掩盖中间人攻击风险;应找出并修复真正原因。 - 在防护严格的目标上使用数据中心 IP :这类 IP 很快会被封禁;对于反机器人机制较严的网站,请使用住宅代理,并搭配真实的请求头(User-Agent)。
Requests 中的轮换代理与粘性代理
对于大规模数据抓取,轮换住宅网关是理想选择:每个请求都会获得新的 IP,因此只需一个简单循环,就能在无需管理 IP 的情况下将抓取任务分散到代理池中。对于有状态流程(例如登录后的后续调用),请在 Session 中使用粘性代理,以便在整个流程中保持同一 IP 和 cookie。大多数 requests 脚本都是无状态的,因此轮换代理通常是默认选择。
Python requests 应选择哪种代理类型:住宅、数据中心还是移动?
- 住宅 ($1/GB):适用于有防护的目标(电商、SERPs、社交平台)的默认选择。如果只选一种,就选它。
- 移动 ($2/GB):适合最难处理的目标和移动网页场景,提供真实的运营商 IP。
- 数据中心 ($0.50/GB):对于无防护任务、API 及自己的基础设施而言,速度最快且成本最低;不要把它用于反机器人机制很强的网站。
DataImpulse 在一个按量付费账户中提供全部三种类型,因此单个脚本可以通过用户名和端点将每个请求路由到合适的层级。
如何开始使用 DataImpulse + Python Requests
步骤 1. 创建一个 DataImpulse 账户并获取住宅代理凭据。$5 / 5GB 入门套餐永不过期,可作为实际测试预算使用。
步骤 2. 使用 http://YOUR_LOGIN__cr.us:[email protected]:823 构建 proxies 字典,将其传给 requests.get(..., proxies=proxies, timeout=30),并在用户名后附加国家代码,以实现地理定位。对于 SOCKS5,请在 pip install "requests[socks]" 之后使用 socks5h://...:824。
步骤 3. 对大量调用使用 Session,通过循环实现轮换,并添加可信的真实请求头。请参阅 DataImpulse 教程和 住宅代理页面。
常见问题
如何在 Python requests 中使用代理?
在调用中传入一个 proxies 字典:requests.get(url, proxies={"http": "http://user:pass@host:port", "https": "http://user:pass@host:port"})。URL 中的凭证会自动使用。对于 DataImpulse:http://YOUR_LOGIN__cr.us:[email protected]:823。使用 Session 可在多个请求中复用代理。
Python requests 支持 SOCKS5 代理吗?
支持,安装额外依赖后即可:pip install "requests[socks]"。然后在 proxies 字典中使用 socks5h://user:pass@host:port URL,即可使用带认证的 SOCKS5。务必使用 socks5h(带 h),这样 DNS 会通过代理解析;普通 socks5 会在本地解析,可能泄露你的位置。DataImpulse 在端口 824 提供 SOCKS5。
Python requests 的最佳代理是什么?
面向有防护目标时使用住宅代理:DataImpulse 的价格为 $1/GB,性价比突出(HTTP/HTTPS/SOCKS5、90M+ IP、带认证 SOCKS5、流量永不过期)。Bright Data 和 Oxylabs 是企业级选择;Webshare 的入门成本最低。它们都可与 proxies= 参数配合使用;同时搭配真实的请求头和超时设置。
如何在 Python requests 中轮换代理?
最简单的方法:将 proxies 字典指向轮换住宅网关(DataImpulse):每个请求都会自动获得一个新 IP。要轮换静态列表,请维护一个代理 URL 列表,并为每个请求用 random.choice() 选择一个,或循环使用它们。对于有状态流程,请在 Session 中保持一个粘性代理,而不是轮换。
为什么我的 requests 代理会报 “Missing dependencies for SOCKS support”?
你使用了 socks5 代理 URL,但没有安装 SOCKS 额外依赖。运行 pip install "requests[socks]"(它会引入 PySocks),之后 socks5h:// URL 就可以使用。HTTP/HTTPS 代理无需额外安装。
Python requests 代理的费用是多少?
原始住宅代理按 GB 计费:DataImpulse $1/GB(价格基准),NetNut $3.53 起,SOAX $3.60,Decodo $3.75,Oxylabs $6 起,IPRoyal $7.35;Webshare 提供从 $3.50/mo 起的预算型订阅。抓取一个页面只占 GB 的很小一部分,因此对于大规模抓取,按 GB 计费的住宅代理远比按请求次数计费的托管 API 便宜;托管方案适合最难处理的目标。
