《HTTP 请求工具:curl 与 wget》
curl 与 wget 是命令行最常用的 HTTP 请求与下载工具。curl 灵活可定制请求头、cookie、代理,适合调试接口;wget 更适合递归下载、限速下载、断点等等。
1 curl 常用场景
1.1 带 Cookie 与自定义 Host 请求
多用于本地调试多域名 Web 站点:
curl 192.168.1.6/hello -H "host: your.server.com" \
-b "session_id=<cookie>" -vI
1.2 --resolve:域名强制解析到指定 IP
绕过 DNS 直接访问源站或本地验证环境(CDN 排查、本地联调非常常用):
# 将 your.server.com 的 443 强制解析到源站 IP
curl https://your.server.com/path.png --resolve your.server.com:443:192.168.1.1 -vI
# 将 https 站点解析到本机测试端口
curl https://your.server.com:8228 -I --resolve your.server.com:8228:127.0.0.1 -v
若指定 443 用 https,80 用 http;端口必须是「域名:端口:IP」三元组。
1.3 下载文件
# -O 保存到服务器端文件名
curl http://your.server/nginx-ip-info/cjson.so -O
# -o 指定路径与文件名
curl http://your.server/nginx-ip-info/cjson.so -o files/json.so
# 将响应头写入文件 + 静默 + 保存:-D headers.txt -s -O
curl http://your.server/cjson.so -s -D headers.txt -O
1.4 获取响应状态码与出口 IP
# 仅输出 http 状态码
status=$(curl -x 127.0.0.1:80 -w '%{http_code}' -so /dev/null http://your.server)
echo $status
# 查看本机公网 IP
curl ifconfig.me
curl cip.cc
1.5 制造大请求体、访问 IPv6、指定 CA 证书
# 制造 10M 的请求体并 POST
dd if=/dev/urandom of=large_body.dat bs=1M count=10
curl -X POST -d @large_body.dat http://localhost:8080/test
# 访问 ipv6 站点(-g 关闭 globbing,地址需加中括号)
curl -g "http://[2400:cb00:2048:1::c629:d7a2]" -H "host: www.example.com"
# 指定 CA 证书路径(局域网自建 CA)
curl --cacert ca.crt https://your.server.com -I
2 wget 常用场景
# 使用代理下载
wget -e https_proxy=127.0.0.1:7890 http://your.server/large_file.zip
# https 不校验证书(内网自签)
wget https://your.server/jmeter.tgz --no-check-certificate
# 常用选项
# -O 下载到指定文件;-o 日志文件
# --limit-rate=200K 限速下载;--tries=5 重试次数(默认 20);--read-timeout=900s
# --server-response 输出响应 HTTP header
# -c 断点续传
wget -c -O file.txt "https://your.server/file.txt"
3 总结对比
| 场景 | 用什么 |
|---|---|
| 调试接口、带 Header/Cookie、只看响应码 | curl |
| 批量/大文件/断点/限速下载 | wget |
| 域名强制解析与本地联调 | curl –resolve |
| 访问 IPv6、自签 https | curl,结合 -g / –cacert |
阅读 —
·
全站 —