一 时间
① --connect-timeout 连接超时时间
② -m | --max-time 数据最大传输时间
-m: 限制curl '完成时间(overall time limit)'
-m,--max-time '<seconds>' 整个'交互完成'的超时时间
场景: 通过设置'-m'参数,可以避免'请求时间过长'而导致的'超时'错误
curl -m 10 ...
批量测试主机的连通性
二 -w 相关变量
1、'\n' --> '换行' --> 支持其它的'制表符'
2、不同的'curl版本','变量不同'
3、通过变量能'判断什么'?
① -w | --write-out
1、'基本'描述
2、'基本'语法
3、下面涉及'变量解读'
② url_effective
含义: 最终'请求'的url --> 可能会涉及'多次重定向Location'
③ http_code
同'response_code': http的响应'状态码'
④ content_type
说明: '请求'的'content_type'
⑤ http_connect
说明: 代理涉及的'CONNECTION'请求的'响应状态码'
⑥ filename_effective
curl 执行结果最终'写入的文件名',当加上了 '-o、-O' 才有'意义'.
⑦ 上传和下载
⑧ 本地和远程的 ip和端口
⑨ 七个时间
通过curl命令分析http接口请求各阶段的耗时等
1、time_namelookup '域名解析'时间
2、time_connect 从'开始到建立TCP连接'完成所用时间
TCP 连接建立的时间: 就是'三次握手'的时间
解读:
1、连接时间,从'0'开始到建立TCP连接完成所用时间,'包括'前边'DNS解析'时间
2、如果需要'单纯的得到连接'时间,用这个time_connect时间'减去'前边time_namelookup时间
3、time_appconnection 'SSL/SSH'
其记录的值是从'开始请求到应用层协议握手完成'的时间,也就是'从0开始'的一个'时间偏移量'
SSL 协议处理时间: 'time_appconnect - time_connect'
4、time_pretransfer 从'开始到准备传输'的时间
5、time_redirect
6、time_starttransfer
描述: 发送请求'第一个字节'到到'返回第一个字节'之间的时间 --> '存疑'
curl时间统计参数time_starttransfer含义以及在文件上传场景下可能的误解
7、time_total
说明:总时间,按'秒'计,精确到'小数点后三位'
time_total: '整个请求所消耗的时间',包含dns解析、tcp握手和ssl握手的时间
8、低版本curl'不支持'相关变量
备注: '报错'信息如下
9、结合'shell'变量
10、以文件的形式,增强'可读性'
curl -w "@var.txt" http://www.wzj.com/ceshi
curl -o /dev/null -s -w "\n\nDNS查询时间: %{time_namelookup}
TCP建连时间: %{time_connect} SSL建连时间: %{time_starttransfer}
首包响应时间:%{time_starttransfer} 总耗时: %{time_total}\n"
https://www.baidu.com
三 curl的配置文件
① 默认行为
说明: 默认不存在'~/.curlrc'此文件
② -K
-K/–config: 指定'配置'文件,从配置文件中'读取参数'
说明: '自定义'加载'配置选项'文件
注意: 配置文件的'注释'、'内容格式'
-K后接配置文件名,如果使用 '-' 符号,则通过'stdin'输入配置
echo "user = user:passwd" | curl -K - https://www.baidu.com
查找顺序: 先'检查CURL_HOME' --> 类Unix系统上,它'还会'尝试从'主目录'中加载.curlrc文件
③ -q
disbale '禁止'加载配置选项文件
使用 curl --resolve 和 http 代理
说明: 通过'--environment'传递变量,可以使用-w '引用变量'
④ 代理补充
curl 8.3.0 的 variable