服务器上没有图形界面也没有浏览器——用curl和wget通过代理IP发请求是运维和采集的基础操作。两个工具的代理配置方式不同而且参数容易记混。
curl走代理
# HTTP代理
curl -x http://代理IP:端口 https://ip.sb
# SOCKS5代理
curl -x socks5://代理IP:端口 https://ip.sb
# 带认证的代理
curl -x http://用户名:密码@代理IP:端口 https://ip.sb
# 查看请求耗时明细
curl -x http://代理IP:端口 -w "DNS:%{time_namelookup} TCP:%{time_connect} TLS:%{time_appconnect} Total:%{time_total}n" -o /dev/null -s https://目标curl默认不走环境变量http_proxy——必须用-x参数显式指定。或者用–proxy参数(和-x等价)。天行IP(邀请码 blsj,月付6元起)的节点在curl里直接配。
wget走代理
# wget读环境变量,先设
export http_proxy=http://代理IP:端口
export https_proxy=http://代理IP:端口
wget https://目标文件.zip
# 或者用-e参数
wget -e use_proxy=yes -e http_proxy=http://代理IP:端口 https://目标wget不支持SOCKS5代理——只能用HTTP代理。需要SOCKS5的话用curl或先配proxychains。
proxychains强制代理
apt install proxychains4 -y
nano /etc/proxychains4.conf
# 末尾加一行: socks5 代理IP 端口 用户名 密码
# 强制任何命令走代理
proxychains4 curl https://ip.sb
proxychains4 wget https://目标proxychains劫持程序的网络调用→不管程序本身支不支持代理,流量都走代理通道。适合那些不支持代理参数的命令行工具。
curl和wget选择
| 场景 | curl | wget |
|---|---|---|
| API调试发请求 | 选curl | |
| 下载大文件续传 | 选wget -c | |
| SOCKS5代理 | 支持 | 不支持 |
| 代理认证 | URL里带 | 环境变量或.netrc |
常见问题
curl报”Failed to connect to 代理IP port 端口: Connection refused”?
代理端口没开或IP白名单没加。先telnet验证端口。
proxychains后程序很慢?
proxychains默认DNS也走代理(proxy_dns)→每个域名解析多一次代理往返。不需要代理DNS的关掉:在proxychains.conf里注释掉proxy_dns。






