curl 网络测试常用方法

一、基础网络测试

1. 连通性测试

bash 复制代码
curl -I http://example.com  # 仅显示响应头(快速检查状态码)
curl -v https://api.example.com  # 显示详细过程(握手、头信息)

2. 超时控制

bash 复制代码
curl --connect-timeout 5 -m 10 http://example.com  # 连接超时5秒,总超时10秒

3. DNS解析测试

bash 复制代码
curl --resolve example.com:80:1.2.3.4 http://example.com  # 强制指定IP解析

二、性能分析

1. 速度测试

bash 复制代码
curl -o /dev/null -s -w "时间: %{time_total}s\n速度: %{speed_download}B/s" https://example.com/file.zip

2. 连接阶段分析

bash 复制代码
curl -w "
DNS解析: %{time_namelookup}s
建立连接: %{time_connect}s
SSL握手: %{time_appconnect}s
首字节: %{time_starttransfer}s
总时间: %{time_total}s\n" -o /dev/null -s https://example.com

三、特殊场景

1. HTTPS证书检查

bash 复制代码
curl -vI https://example.com 2>&1 | grep -E "SSL|CN"  # 查看证书信息
curl --cacert ./ca.pem https://intranet.com  # 自定义CA证书

2. 代理测试

bash 复制代码
curl -x http://proxy:8080 -U user:pass http://example.com  # 通过代理访问

3. API调试

bash 复制代码
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
curl -H "Authorization: Bearer token" https://api.example.com/data

4. 文件传输

bash 复制代码
curl -u ftpuser:ftppass -T file.txt ftp://ftp.example.com # FTP上传 curl -O http://example.com/image.jpg # 下载文件保存原名

四、高级诊断

1. IPv4/IPv6强制

bash 复制代码
curl -4 http://example.com  # 强制IPv4
curl -6 http://example.com  # 强制IPv6

2. Cookie操作

bash 复制代码
curl -c cookies.txt http://login.com  # 保存Cookie
curl -b cookies.txt http://dashboard.com  # 携带Cookie

3. 流量控制

bash 复制代码
curl --limit-rate 100K http://example.com/largefile.iso  # 限速100KB/s

五、实用组合场景

场景 命令示例
CDN节点检测 curl -s -o /dev/null -w "%{remote_ip}" http://cdn.com
重定向跟踪 curl -Ls -w "最终URL: %{url_effective}" -o /dev/null http://bit.ly/short
负载均衡测试 `for i in {1..10}; do curl -s lb.example.com grep Server; done`
压缩测试 `curl -H "Accept-Encoding: gzip" -I example.com grep Content-Encoding`
持续监控 while true; do curl -s -o /dev/null -w "%{http_code} %{time_total}\n" http://service; sleep 2; done

六、常用输出格式化变量

bash 复制代码
curl -w "
响应码: %{http_code}
重定向URL: %{redirect_url}
SSL验证: %{ssl_verify_result}
本地IP: %{local_ip}
远端IP: %{remote_ip}
下载大小: %{size_download} bytes
" -o /dev/null -s http://example.com

调试技巧 :使用 -v 时,> 表示发送数据,< 表示接收数据,* 表示附加信息。结合 grep 可快速过滤关键信息(如 grep -E '> Host:|< HTTP')。

相关推荐
野犬寒鸦35 分钟前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习
我爱娃哈哈39 分钟前
SpringBoot + Flowable + 自定义节点:可视化工作流引擎,支持请假、报销、审批全场景
java·spring boot·后端
李梨同学丶3 小时前
0201好虫子周刊
后端
思想在飞肢体在追3 小时前
Springboot项目配置Nacos
java·spring boot·后端·nacos
Loo国昌5 小时前
【垂类模型数据工程】第四阶段:高性能 Embedding 实战:从双编码器架构到 InfoNCE 损失函数详解
人工智能·后端·深度学习·自然语言处理·架构·transformer·embedding
ONE_PUNCH_Ge6 小时前
Go 语言泛型
开发语言·后端·golang
良许Linux6 小时前
DSP的选型和应用
后端·stm32·单片机·程序员·嵌入式
不光头强6 小时前
spring boot项目欢迎页设置方式
java·spring boot·后端
怪兽毕设7 小时前
基于SpringBoot的选课调查系统
java·vue.js·spring boot·后端·node.js·选课调查系统
学IT的周星星7 小时前
Spring Boot Web 开发实战:第二天,从零搭个“会卖萌”的小项目
spring boot·后端·tomcat