在命令行环境中,curl和wget是两个最基础也最强大的网络工具。无论是测试 API、下载文件,还是编写自动化脚本,让它们通过代理服务器工作,是绕过网络限制、保护隐私或进行业务测试的常用手段。
本文将为你提供一份curl和wget的代理设置完全指南,包含可直接运行的命令示例和常见场景说明。
一、开始前的准备
在配置代理前,你需要从代理服务商处获取以下信息:
代理服务器地址(Host)
端口(Port)
协议:常见的有 HTTP、HTTPS、SOCKS5
认证信息:用户名和密码(如果需要)
在投入生产环境前,建议先利用各代理平台提供的免费测试服务验证IP质量。你可以通过socks5ip.com.cn 的价格中心找到十多家支持免费测试的主流代理平台。
二、为curl设置代理
curl的代理配置非常灵活,支持为单次请求设置,也支持全局配置。
方法一:使用-x或--proxy参数(单次请求)
这是最直接的方式,仅为当前这一条curl命令使用代理。
基础用法(HTTP/HTTPS 代理):
curl -x "http://代理服务器地址:端口" https://httpbin.org/ip
带认证的代理:
如果代理需要用户名和密码,可以直接在代理 URL 中嵌入:
curl -x "http://用户名:密码@代理服务器地址:端口" https://httpbin.org/ip
安全提示:在脚本中硬编码密码存在安全风险。对于生产环境,建议使用环境变量或
.netrc文件来管理凭证。
使用 SOCKS5 代理:curl对 SOCKS5 支持良好,可以通过-x指定协议:
curl -x socks5://代理服务器地址:端口 https://httpbin.org/ip
或者使用--socks5参数:
curl --socks5 代理服务器地址:端口 https://httpbin.org/ip
注意:
socks5://和socks5h://的区别在于 DNS 解析的位置。socks5h://会强制让代理服务器去解析域名,能更好地保护你的 DNS 请求隐私。
方法二:使用环境变量(全局或会话级)
通过设置环境变量,可以让当前终端会话中的所有curl命令都自动使用代理。
export http_proxy="http://代理服务器地址:端口" export https_proxy="http://代理服务器地址:端口"
设置后,直接运行curl即可:
curl https://httpbin.org/ip
如果想取消代理,只需unset这两个变量即可。
方法三:配置文件(永久生效)
curl支持通过配置文件~/.curlrc来设置默认代理。在文件中添加一行:
proxy = "http://代理服务器地址:端口"
之后每次运行curl都会自动使用该代理。如需临时覆盖,可在命令中再次使用-x参数。
三、为wget设置代理
wget的代理配置方式与curl类似,但命令语法略有不同。
方法一:使用-e参数(单次请求)
wget使用-e参数来临时设置代理选项。
wget -e use_proxy=yes -e http_proxy="http://代理服务器地址:端口" https://example.com/file.zip
其中use_proxy=yes是启用代理的开关,http_proxy指定代理地址。
带认证的代理:
可以在代理 URL 中直接包含认证信息:
wget -e use_proxy=yes -e http_proxy="http://用户名:密码@代理服务器地址:端口" https://example.com/file.zip
或者使用--proxy-user和--proxy-password参数:
wget --proxy-user=用户名 --proxy-password=密码 --proxy="http://代理服务器地址:端口" https://example.com/file.zip
安全提示:
--proxy-password中的密码会明文显示在进程列表中(通过ps命令可见),在共享系统上应避免使用。
方法二:使用环境变量(全局或会话级)
与curl相同,wget也会读取http_proxy和https_proxy环境变量。
export http_proxy="http://代理服务器地址:端口" export https_proxy="http://代理服务器地址:端口"
设置后,直接运行wget即可。
方法三:配置文件(永久生效)
wget的配置文件是~/.wgetrc。在文件中添加以下内容:
use_proxy = on http_proxy = http://代理服务器地址:端口/ https_proxy = http://代理服务器地址:端口/
关键点:即使目标是 HTTPS 网站,
https_proxy的值通常也是以http://开头的,因为wget会通过 HTTP CONNECT 方法建立隧道来传输加密流量。
四、常见场景与实操建议
场景一:快速验证代理是否生效
无论使用curl还是wget,访问httpbin.org/ip是验证出口 IP 是否改变的最快方法。
# 使用 curl 测试 curl -x "http://代理服务器地址:端口" https://httpbin.org/ip # 使用 wget 测试 wget -e use_proxy=yes -e http_proxy="http://代理服务器地址:端口" -qO- https://httpbin.org/ip
如果返回的 IP 地址变成了代理服务器的 IP,说明配置成功。
场景二:脚本中的代理控制
在编写自动化脚本时,推荐使用方法一(单次请求参数),这样不会影响脚本之外的其他命令,也避免了环境变量污染。
场景三:排除特定地址不使用代理
如果你希望某些内网地址或特定域名不走代理,可以使用no_proxy环境变量。
export no_proxy="localhost,127.0.0.1,*.internal.com"
场景四:调试代理问题
当代理配置不生效时,可以使用-v(verbose)参数查看详细信息。
curl -v -x "http://代理服务器地址:端口" https://httpbin.org/ip
输出中会显示* Connected to proxy等信息,帮助你定位问题。
五、常见问题(FAQ)
Q: 设置了代理但curl报错Connection refused?
A: 通常是代理服务器地址或端口填写错误,或者代理服务本身没有启动。建议先用ping或telnet测试代理服务器的连通性。
Q:wget报错Must be HTTP?
A: 这是因为你将http_proxy错误地设置成了https://开头。wget的代理 URL 应使用http://协议,即使目标 URL 是 HTTPS。
Q: 如何确认代理真的在转发流量?
A: 最可靠的方法是访问httpbin.org/ip并对比返回的 IP 地址是否发生了变化。不要仅凭请求成功就认为代理生效了。
Q:curl和wget哪个更适合脚本中使用?
A: 两者都是优秀的选择。curl功能更丰富,支持更多协议和选项,适合复杂的 API 测试;wget专注于文件下载,支持递归下载和断点续传,适合批量下载任务。
六、总结
掌握curl和wget的代理设置是每个开发者和运维人员的必备技能。三种配置方式各有适用场景:
| 配置方式 | 适用场景 | 特点 |
|---|---|---|
| 命令行参数 | 单次请求、脚本测试 | 精准控制,不影响其他命令 |
| 环境变量 | 临时会话、批量操作 | 一次设置,当前终端所有命令生效 |
| 配置文件 | 长期固定代理 | 永久生效,无需重复输入 |
在正式使用代理之前,建议先通过各代理平台提供的免费测试服务验证IP质量和稳定性。你可以访问socks5ip.com.cn 的价格中心找到十多家支持免费测试的主流代理平台,先测后买零风险。
如需更完整的代理工具配置教程(如 SSTap、Proxifier、Shadowrocket 等),可前往socks5ip.com.cn 的代理工具中心查看。
关键词标签:curl设置代理,wget设置代理,命令行代理,SOCKS5代理curl,wget代理配置,代理环境变量,curl代理认证,命令行工具代理
📌 相关资源导航
全网低价IP官网:https://socks5ip.com.cn
价格中心(免费测试):https://socks5ip.com.cn/jiagezhongxin
代理工具中心(配置教程):https://socks5ip.com.cn/dailigongjuzhongxin
客服微信:17720135827 |QQ:878989347
Slogan:全网低价IP | 专业代理IP资源平台,聚合注册中心


