跳到正文

curl 代理设置:-x、认证、SOCKS5 和环境变量

curl 只用一个选项就能让请求走代理,但代理地址里的协议前缀、传密码的方式和环境变量,都会影响结果。本文用短命令讲清每一项,并说明怎么确认代理已经生效。

-x 选项和代理地址

curl 手册说明,-x(即 --proxy)接受 [protocol://]host[:port] 形式的代理字符串。不写协议,或写 http://,curl 都把它当作 HTTP 代理。如果省略端口,手册说 curl 会默认用 1080,所以一定要写上服务商给你的端口。

-x 选项和代理地址:示例

curl -x http://proxy-host:port https://ipinfo.io/json

请把 proxy-host 和 port 换成你代理列表里的值。

-x 选项和代理地址(续)

访问 https:// 目标并走 HTTP 代理时,Everything curl 一书解释说,curl 会向代理请求一条 CONNECT 隧道,再在隧道里加密流量,所以代理读不到也改不了内容。加上 -v 就能看到:curl 连接的是代理,不是网站。

账号和密码

用 -U(即 --proxy-user)加 user:password,或者把账号密码写进代理地址。curl 手册说,代理字符串里的用户名和密码会被 curl 做 URL 解码,所以 @ 要写成 %40,冒号写成 %3a。这一点很重要:密码里有 @ 或 : 时,不编码就会破坏地址。

账号和密码:示例

curl -x http://USERNAME:PASSWORD@proxy-host:port https://ipinfo.io/json
curl -U USERNAME:PASSWORD -x http://proxy-host:port https://ipinfo.io/json

第一种写法里,密码的特殊字符要做百分号编码。第二种写法里,账号密码不写在代理地址里。

账号和密码(续)

手册还提醒,命令行里的账号密码在短时间内可能被同一系统上的其他用户看到,并建议敏感数据改从文件读取。下面的配置文件就是一种办法。

SOCKS5,以及 socks5 和 socks5h 的区别

手册列出 socks4://、socks4a://、socks5:// 和 socks5h:// 作为 SOCKS 代理的前缀。Everything curl 一书解释了区别:用 socks5:// 时,curl 自己解析网站域名;用 socks5h:// 时,主机名会发给代理,你的电脑上不做域名查询。想让代理来解析,就用 socks5h://。

SOCKS5,以及 socks5 和 socks5h 的区别:示例

curl -x socks5h://USERNAME:PASSWORD@proxy-host:port https://ipinfo.io/json

如果想让 curl 在本地解析域名,请改用 socks5://。

SOCKS5,以及 socks5 和 socks5h 的区别(续)

如果只是想确认你的套餐支持哪种协议,可以看 SOCKS5 代理页面;需要的四个值在代理地址、端口和登录信息指南里有说明。

环境变量和 --noproxy

curl 也会读取环境变量。手册说,变量名可以写成小写或大写,小写优先,而 http_proxy 是例外:只接受小写。Everything curl 一书解释了原因:运行 CGI 脚本的网页服务器会根据收到的请求头设置 HTTP_PROXY,所以 curl 忽略大写的名字。这些变量是 http_proxy、HTTPS_PROXY、ALL_PROXY(没有设置对应协议的变量时生效)和 NO_PROXY。

环境变量和 --noproxy:示例

export http_proxy="http://USERNAME:PASSWORD@proxy-host:port"
export HTTPS_PROXY="http://USERNAME:PASSWORD@proxy-host:port"
export NO_PROXY="localhost,127.0.0.1"
curl https://ipinfo.io/json

这些变量里的代理值可以使用和 -x 相同的前缀,例如 socks5h://。

环境变量和 --noproxy(续)

按手册所述,--proxy 选项会覆盖这些变量;用 --noproxy 加逗号分隔的主机列表,或用 NO_PROXY,可以让 curl 直接连接这些主机。设置 --proxy "" 可以覆盖环境里已设置的代理。

在 .curlrc 里设置默认代理

手册把 ~/.curlrc 作为默认配置文件,Everything curl 一书说明每行写一个选项,前面的两个短横线可写可不写,井号开头的是注释。如果你总是使用代理,就写在这里。

在 .curlrc 里设置默认代理:示例

# ~/.curlrc
proxy = "http://USERNAME:PASSWORD@proxy-host:port"

文件里有密码,请设成只有你自己能读取。

检查代理是否生效

通过代理请求 https://ipinfo.io/json。返回的 country 和 org 字段应该描述的是代理,而不是你自己的网络;怎么读这些字段,见代理位置检查指南。如果返回的是你自己的地址,说明某个选项或变量没有生效:检查是否命中了 NO_PROXY、是否有空的 --proxy "",或者变量名是否写错。

常见错误

状态码 407 表示代理没有接受账号密码。Everything curl 一书说,407 响应头会告诉你代理要求哪种认证方式,你可以指定 --proxy-basic、--proxy-digest、--proxy-ntlm 或 --proxy-negotiate,也可以用 --proxy-anyauth 让 curl 自己选。如果只是普通的账号密码,先重新复制这些值并检查编码,见认证失败指南。连接被拒绝或超时,通常是端口或协议前缀写错,见连接失败指南。如果同样的任务用 Python 运行,requests 代理指南给出了对应的设置。

用 Proxy302 怎么做

上面任何一条命令,只需要 Proxy302 代理的主机、端口、账号和密码。动态住宅流量按 GB 计费,出口国家在生成代理时设置;HTTP 在 proxy.proxy302.com 的 2222 端口,SOCKS5 在 3333 端口。静态 ISP IP 在整个租期内固定,不轮换。下表是我们最近一次每小时检测时 7 个国家的出口;探测器请求的是 ChatGPT,它只是一个示例目标。详情见动态住宅页面和代理位置检查指南。

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

实测出口:ChatGPT 从 7 个国家的连通
项目城市运营商网络ASN
美国Baton Rouge, LouisianaVerizon BusinessAS6167
英国Birkenhead, EnglandVirgin Media LimitedAS5089
德国Hannover, Lower Saxonyhtp GmbHAS13045
日本Saitama, SaitamaJCOM Co., Ltd.AS9824
新加坡Yishun New Town, SingaporeSingtel Fibre BroadbandAS9506
巴西Silvianópolis, Minas Geraisintertel telecomunicacao LTDAAS268801
印度尼西亚Jakarta, JakartaPT Mahawira Nusantara GrupAS151576

Proxy302 探测器每小时检测一次,本次检测时间:2026 年 10 月 28 日 14:56 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。可用的出口位置每天都会变化。

常见问题

为什么 http_proxy 只有小写才有效?

curl 文档解释说,大写的 HTTP_PROXY 可能由网页服务器根据请求头为 CGI 脚本创建,所以 curl 对 HTTP 只接受小写的名字。其他代理变量大小写都可以。

访问 HTTPS 网站需要 -p 或 --proxytunnel 吗?

不需要。通过 HTTP 代理访问 https:// 地址时,curl 已经使用 CONNECT 隧道。手册把 --proxytunnel 描述为让 curl 用 HTTP 代理的 CONNECT 请求建立隧道;Everything curl 一书说,经 HTTP 代理访问 HTTPS 时每次用的就是这种隧道。

密码里有 @ 或冒号怎么办?

在代理地址里做百分号编码:按 curl 手册所说,@ 写成 %40,冒号写成 %3a。或者改用 -U 传入。

怎么让某一个请求不走代理?

用 --noproxy 加主机名,或者用 --proxy "" 清除环境里设置的代理。

参考资料

8
  1. curl 手册页

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:-x/--proxy 及其协议前缀(http、socks4、socks4a、socks5、socks5h),默认端口 1080,用户名和密码的 URL 解码,-U/--proxy-user 及其警告,--noproxy,--proxytunnel,代理环境变量,小写 http_proxy 的说明,以及 ~/.curlrc。

  2. Everything curl:HTTP 代理

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:默认按 HTTP 代理处理,HTTPS 目标使用 CONNECT 方法,以及 -v 显示与代理的连接。

  3. Everything curl:SOCKS 代理

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:SOCKS4、4a、5 和 5h,以及哪一方解析主机名。

  4. Everything curl:代理环境变量

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:[scheme]_proxy 变量、ALL_PROXY、NO_PROXY,以及 http_proxy 只接受小写的原因。

  5. Everything curl:配置文件

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:每行一个选项,长选项可带或不带短横线,井号注释。

  6. Everything curl:代理认证

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:-U user:password,默认 Basic,--proxy-digest、--proxy-negotiate、--proxy-ntlm、--proxy-anyauth,以及 407 响应头。

  7. Proxy302 产品事实与价格表

    产品观察 · 确认日期:

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

  8. Proxy302 每小时连通检测

    产品观察 · 确认日期:

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

准备好试试了吗?

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