cURL 使用代理完全指南

HTTP/HTTPS/SOCKS5 · 认证与环境变量 · 报错速查 · 更新于 2026-11-06
Tutorials
主页 › 教程中心 › cURL 使用代理完全指南

cURL 走代理最快的方式是 -x 参数(长格式 --proxy):

curl -x http://USER:PASS@GATEWAY:PORT https://api.ipify.org

api.ipify.org 会回显出口 IP——如果输出是你的代理 IP 而不是本机 IP,说明隧道已通。

代理 URL 语法

cURL 接受完整 URL 作为代理值,scheme 决定「你到代理之间」使用的协议:

http://user:pass@host:port      # HTTP 代理(最常用)
https://user:pass@host:port     # 到代理本身走 TLS
socks5://user:pass@host:port    # SOCKS5,域名由本机解析
socks5h://user:pass@host:port   # SOCKS5,域名在代理侧解析
采集场景优先用 socks5h:// 而不是 socks5://:带 h 表示 DNS 在代理侧解析,DNS 泄露和 CDN 调度错区的问题都不存在。

HTTPS 目标走 HTTP 代理

对 https:// 目标,cURL 先向代理发 HTTP CONNECT 请求建立隧道,再在隧道内升级 TLS。代理看不到明文——所以用普通 HTTP 代理访问 HTTPS 网站是安全的:

curl -x http://USER:PASS@GATEWAY:PORT https://target-site.com -I

如果报 407 Proxy Authentication Required,是认证信息错或缺;报 CONNECT tunnel failed,是代理不允许该目标主机或端口。

环境变量

cURL(以及大部分 Unix 工具)认小写环境变量,一次设置全局生效:

export http_proxy="http://USER:PASS@GATEWAY:PORT"
export https_proxy="http://USER:PASS@GATEWAY:PORT"
export all_proxy="socks5h://USER:PASS@GATEWAY:PORT"
export no_proxy="localhost,127.0.0.1,.internal.example.com"

no_proxy 用于排除不走隧道的主机——记得把自家基础设施和健康检查地址加进去。

按项目隔离:.curlrc

环境变量会在项目之间串味,配置文件不会:

# ~/projects/shop-monitor/.curlrc
proxy = "http://USER:PASS@GATEWAY:PORT"
noproxy = "localhost,127.0.0.1"
curl -K ~/projects/shop-monitor/.curlrc https://target-site.com

验证目标看到的信息

出口 IP 只是一半,还要确认目标侧推断出的地理位置和 ASN:

curl -x http://USER:PASS@GATEWAY:PORT https://api.ipify.org
curl -x http://USER:PASS@GATEWAY:PORT "https://ipinfo.io/json" | head -20

轮换

用轮换网关时不需要在 cURL 里做轮换——供应商在网关侧换出口 IP。要固定会话(多次请求同一 IP),大多数供应商在用户名里加 session 标记即可,cURL 侧只要复用同一组凭据:

for i in 1 2 3; do
  curl -s -x http://USER-SESSION-abc123:PASS@GATEWAY:PORT https://api.ipify.org; echo
done

常见报错速查

报错含义处理
407 Proxy Authentication Required凭据错误或缺失检查用户名密码,特殊字符要 URL 编码(@ 写成 %40)
CONNECT tunnel failed代理拒绝目标主机/端口确认套餐支持 HTTPS、443 端口未受限
56 Recv failure传输中途连接被重置换一个会话 IP 重试;降低并发
仅走代理时 TLS 报错代理或中间盒劫持 TLS改用 socks5h:// 或支持 TLS 的代理入口

常见问题

HTTPS 网站能用 -x 吗?

可以。对 https:// 目标,cURL 先通过代理建立 HTTP CONNECT 隧道再升级 TLS,代理看不到明文。普通 http:// 代理即可访问 HTTPS 目标。

curl 里 socks5 和 socks5h 的区别?

socks5 在本机解析 DNS,socks5h 在代理侧解析。采集场景用 socks5h,避免 DNS 泄露和 CDN 调度错区。

cURL 怎么轮换 IP?

不需要自己做——轮换网关在服务端换出口 IP。要固定 IP 时在用户名里加 session 标记并复用同一组凭据。

407 Proxy Authentication Required 是什么意思?

代理拒绝了你的凭据。检查代理 URL 中 user:pass 部分,特殊字符需 URL 编码(如 @ 写成 %40)。

想找个真实池子练手?IPLight 动态住宅代理 $1.20/GB 起(量大低至 $0.72/GB),覆盖 170+ 国家——查看价格或实时池深报告。

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