curl和wget怎么走代理IP?命令行下载和接口调试的代理配置

curl -x走HTTP/SOCKS5、wget环境变量、proxychains强制代理和两者场景选型
发布于
1

服务器上没有图形界面也没有浏览器——用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。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600

HTTP代理和SOCKS5代理都能改IP,但它们在数据包里做的事完全不同。用Wireshark抓个包对比一下,你会发现HTTP代理能看到你访问的网页内容(理论上),SOCKS5只是一个透明管道什么都不看。这个区别决定了不同场景下该用哪个。