跳到正文

Python requests 代理设置:proxies 字典、环境变量和 SOCKS5

requests 库可以通过 proxies 参数、环境变量或 Session 使用代理。下面是每种方式的短示例、Requests 文档里的规则,以及怎么检查结果。

proxies 参数

Requests 文档说明,可以用 proxies 参数给单个请求配置代理,它是一个字典,键 http 或 https 表示目标地址的协议。注意,即使是 https 这个键,文档示例里的代理 URL 用的也是 http:// 开头。文档强调,代理 URL 必须包含协议部分。

账号或密码里有特殊字符时要编码。Python 文档说明,urllib.parse.quote 默认把 / 当作安全字符不编码(safe='/'),所以密码要传 safe=''。

proxies 参数:示例

import requests
from urllib.parse import quote

user = quote("USERNAME", safe="")
password = quote("PASSWORD", safe="")
proxy = f"http://{user}:{password}@proxy.proxy302.com:2222"
proxies = {"http": proxy, "https": proxy}

r = requests.get("https://ipinfo.io/json", proxies=proxies, timeout=(5, 20))
print(r.json())

请把 USERNAME 和 PASSWORD 换成「我的资产」里的值。Proxy302 的 HTTP 在 2222 端口。

Session 和环境变量

请求里没有传 proxies 时,Requests 会使用标准的环境变量 http_proxy、https_proxy、no_proxy 和 all_proxy,大写形式同样有效。文档警告,把账号密码存在环境变量或受版本控制的文件里有安全风险,强烈不建议。

对于 Session,文档给出了 session.proxies.update(proxies),但警告这样设置的值可能被环境变量里的代理覆盖。要在存在环境变量时确保用的是你自己的代理,请在每个请求里明确传 proxies。

Session 和环境变量:示例

import requests

session = requests.Session()
r = session.get("https://ipinfo.io/json", proxies=proxies, timeout=(5, 20))
print(r.json())

proxies 就是上一个示例里的那个字典。

SOCKS5

Requests 文档说明,SOCKS 支持是可选功能,需要额外的库:python -m pip install 'requests[socks]'。装好之后,SOCKS 代理的用法和 HTTP 代理一样,URL 里写 socks5:// 开头。

写法有区别:用 socks5 时 DNS 解析在客户端完成,用 socks5h 时在代理一侧完成。文档建议,想让代理服务器解析域名就用 socks5h。

SOCKS5:示例

user = quote("USERNAME", safe="")
password = quote("PASSWORD", safe="")
socks = f"socks5h://{user}:{password}@proxy.proxy302.com:3333"
proxies = {"http": socks, "https": socks}

r = requests.get("https://ipinfo.io/json", proxies=proxies, timeout=(5, 20))
print(r.json())

这段接着第一个示例写(需要 import requests 和 from urllib.parse import quote),并且要先安装 requests[socks]。Proxy302 的 SOCKS5 在 3333 端口,HTTP 在 2222 端口。

超时

按 Requests 文档,请求默认不会超时,没有超时设置的话,代码可能卡上几分钟甚至更久。只给一个 timeout 值,会同时用于连接和读取;用元组(连接, 读取)可以分别设置。连接超时是等待连接建立的时间,读取超时是等待服务器响应的时间。如果一个域名有多个地址,会依次尝试,所以实际总时长可能是设定值的几倍。

检查出口

像上面的示例那样请求 https://ipinfo.io/json。country 和 org 字段应该描述的是代理,而不是你自己的网络。如果显示的是你自己的地址,说明代理没有生效:检查 proxies 字典的键,以及它有没有传给这次请求。各字段含义见代理位置检查指南。

常见错误

在 Requests 的异常模块里,ProxyError 是 ConnectionError 的子类,说明是「出现代理错误」。ConnectTimeout 表示连接服务器时超时,产生这种错误的请求可以安全重试;ReadTimeout 表示服务器在规定时间内没有发来数据。请检查代理 URL 的协议部分、端口(HTTP 是 2222,SOCKS5 是 3333)以及账号密码。407 状态码表示代理没有接受账号密码,见代理认证失败指南;连接问题可按代理连接失败指南逐项检查。Requests 文档还提到,通过代理访问 https 通常要求本机信任该代理的根证书。

用 Proxy302 怎么做

requests 需要 Proxy302 代理的地址、端口、账号和密码。动态住宅按流量计费,出口国家在生成代理时设置;HTTP 在 proxy.proxy302.com 的 2222 端口,SOCKS5 在 3333 端口。静态 ISP IP 在整个租期内固定,不轮换。下表是我们最近一次每小时检测时 7 个国家的出口;探测器请求的是 ChatGPT,它只是网络检测用的示例目标。代理不会改变 ChatGPT 的服务条款,OpenAI 公布的支持国家和地区名单仍然适用,见 ChatGPT、Claude、Gemini 支持哪些国家和地区。详情见动态住宅页面和代理位置检查指南。

实测出口:ChatGPT 从 7 个国家的连通

实测出口:ChatGPT 从 7 个国家的连通
项目城市运营商网络ASN
美国Neenah, WisconsinCharter Communications IncAS10796
英国Cowplain, EnglandTalkTalk Communications LimitedAS13285
德国Köln, North Rhine-WestphaliaNetCologne Gesellschaft fur Telekommunikation mbHAS8422
日本Tokyo, TokyoKDDI CORPORATIONAS2516
新加坡Singapore, SingaporeSingtel Fibre BroadbandAS9506
巴西Mauá, São PauloTELEFÔNICA BRASIL S.AAS27699
印度尼西亚Bogor, West JavaPT Mora Telematika IndonesiaAS131111

Proxy302 探测器每小时检测一次,本次检测时间:2026 年 10 月 25 日 08:29 UTC。每个国家通过一个动态住宅出口、经公开的 Proxy302 入口向 ChatGPT 发一次请求。IP 只公开前三段。每国一个样本,不是平均值,之后的检测结果会不同。

用 Proxy302 怎么做:步骤

  1. 第 1 步

    打开动态住宅页面,选择线路,「协议」保持 HTTP 或改选 SOCKS5,然后点击「确认费用并生成」。

  2. 第 2 步

    打开「我的资产」(控制台里放着你买到的全部代理),复制 HOST(地址)、PORT(端口)、USERNAME(账号)和 PASSWORD(密码)。「连接工具」页(控制台里教你把代理接到各种软件的页面)里有填好你自己连接信息的现成示例。

  3. 第 3 步

    把这些信息填入你正在设置的浏览器或软件。

  4. 第 4 步

    通过代理访问 https://ipinfo.io/json 确认出口。

  5. 第 5 步

    在中国大陆,先在「连接工具」页打开辅助工具,使用代理期间保持开着。

价格与限制

低价线路每 GB 收费 US$1.50,100 GB 套餐每 GB US$1.35,300 GB 每 GB US$1.20。不提供免费试用,最小购买单位为 1 GB。可用的出口位置每天都会变化。

常见问题

https 这个键该配什么协议?

配代理本身的协议。Requests 文档的示例里,https 键对应的代理 URL 用的是 http://。

requests 怎么用 SOCKS5?

安装 requests[socks],并使用 socks5:// 或 socks5h:// 写法。用 socks5h 时由代理解析域名。

密码里有特殊字符怎么办?

用 urllib.parse.quote 编码并传 safe='',否则 / 字符会保持原样。

为什么 requests 还是在用环境变量里的代理?

请求里没有传 proxies 时,Requests 会读取环境变量。对于 Session,文档建议在每个请求里都传 proxies。

参考资料

5
  1. Requests 文档:进阶用法(代理、SOCKS、超时)

    官方文档 · 确认日期:

    2026 年 10 月 25 日阅读:proxies 参数、Session 及覆盖警告、环境变量、带协议和登录信息的 URL、requests[socks]、socks5 与 socks5h、超时,以及 https 通过代理时对代理根证书的信任。

  2. Requests 源码:requests.exceptions

    官方文档 · 确认日期:

    2026 年 10 月 25 日阅读:ProxyError 是 ConnectionError 的子类,ConnectTimeout(可安全重试)和 ReadTimeout。

  3. Python 文档:urllib.parse.quote

    官方文档 · 确认日期:

    2026 年 10 月 25 日阅读:quote() 默认把 / 当作安全字符(safe='/'),safe 参数列出不编码的字符。

  4. Proxy302 产品事实与价格表

    产品观察 · 确认日期:

    站点的产品事实表(数值已于 2026 年 10 月 18-19 日对照控制台、后端和价格表核对):产品、美元价格(1 PTC = 1 美元)、租期、协议与端口、国家数、数量上限、没有免费试用。

  5. Proxy302 每小时连通检测

    产品观察 · 确认日期:

    探测器的公开 JSON proxy302.com/live/connectivity/chatgpt.json,读取于 2026 年 10 月 25 日 08:29 UTC:每个出口国家一次请求,经动态住宅出口;出口城市、ASN、网络和响应时间。

准备好试试了吗?

注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。