集成 · 入门

通过代理使用 cURL:重要选项与示例详解

cURL 是验证代理是否正常工作的最快方式,也是各类库所仿照的参照。掌握五个代理参数,就能调试任何客户端。

阅读约需 2 分钟 6 个章节 更新于 发布于

一行命令即可完成#

首次请求
curl -x http://USER-cc-us:[email protected]:9000 https://api.ipify.org

-x(或 --proxy)接收内嵌凭据的代理 URL。cURL 会自动使用 CONNECT 为 HTTPS 目标建立隧道,并让代理解析主机名。

值得掌握的参数#

参数用途
-x, --proxy URL指定代理:协议、主机、端口,以及可选的凭据
-U, --proxy-user user:pass单独提供凭据,适合密码含特殊字符的情况
--proxy-basic强制使用 Basic 代理身份验证(提供密码时的默认方式)
-v显示 CONNECT 交互、代理状态码和响应标头
--noproxy '*'本次调用忽略代理环境变量
-w '%{time_total}\n'输出耗时,以便比较不同出口

SOCKS5 与远程 DNS#

socks5h
# 在出口端解析主机名(推荐)
curl -x socks5h://USER-cc-de:[email protected]:9001 https://api.ipify.org

# 在本地解析主机名,再将 IP 发送给代理(会泄露 DNS 查询)
curl -x socks5://USER-cc-de:[email protected]:9001 https://api.ipify.org

环境变量#

调用 cURL 的工具以及许多其他工具都遵循 http_proxyhttps_proxyno_proxy。在一个工作会话开始时导出一次即可。

Shell
export https_proxy="http://USER-cc-us:[email protected]:9000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org   # 无需 -x 即可走代理

解读故障信息#

详细输出
curl -v -x http://USER:[email protected]:9000 https://api.ipify.org 2>&1 | grep -E "CONNECT|HTTP/1.1 4|HTTP/1.1 5"
# < HTTP/1.1 407 Proxy Authentication Required  -> 凭据错误
# < HTTP/1.1 400 Bad Request                    -> 用户名参数错误
# < HTTP/1.1 502 Bad Gateway                    -> 该位置没有出口;扩大范围

CONNECT 行上的状态来自网关;Connection established 之后的状态来自目标网站。错误说明页面列出了每个网关状态码的含义。

在循环中轮换会话#

Bash
for i in $(seq 1 5); do
  curl -s -x "http://USER-cc-us-sid-run$i-ttl-5m:[email protected]:9000" https://api.ipify.org
  echo
done   # 五个不同的美国出口;每个出口均可凭其 ID 复用五分钟

大家常问的问题#

通过代理访问 HTTPS 时,cURL 是否需要特殊参数?

不需要。使用 http:// 代理 URL 时,cURL 会自动为 https:// 目标发送 CONNECT;只有在普通 HTTP 上强制建立隧道时才需要 --proxytunnel。

密码包含 @ 或 :,导致 cURL 失败。

请使用 -U user:pass 传入凭据,不要将其嵌入 URL;也可以对特殊字符进行 URL 编码。

准备好即可开始

立即投入实际使用。

创建账户,充值 $20,然后将本指南中的端点粘贴到您的工具中。您购买的流量永不过期。