linux curl
参数说明
# curl工具:c写的一个命令
# -A 设置user-agent curl -A "Chrome" http://www.baidu.com
# -b 设置cookies,发起一个带cookies的http请求 curl -b a=test http://httpbin.org/cookies
# -X 用指定方法请求,比如访问 http://httpbin.org/post这个网址,他是github上可以拉取到并且部署到我们本机的,只能用特定方法请求他,
#直接curl http://httpbin.org/post 会报错,但是指定请求类型就可以 curl -X POST http://httpbin.org/post
# -I 只返回头信息,HEAD, curl -I https://www.baidu.com
# -d 以post方法请求,并发送相关参数,curl -d test=123 http://httpbin.org/post 多个参数:curl -d "a=1&b=2&c=3" http://httpbin.org/post
#或者 curl -d a=1 -d b=2 -d c=3http://httpbin.org/post,也可以以文件方式请求,把 a=1&b=2&c=3写进/tmp/aaa.data curl -d @/tmp/aaa.data http://httpbin.org/post 也可以
# -O 下载文件并以远程文件名保存 curl -O http://httpbin.org/image/jpeg
# -o 小写,另存为另一个名字 curl -o aaa.jpeg http://httpbin.org/image/jpeg
# -L 跟随重定向请求,curl -IL https://baidu.com
# -H 设置头信息,webp是一种图片格式,是google定义,在不降低清晰图的情况下缩小图片。curl -o image.webp -H "accept:image/webp" http://httpbin.org/image
# curl -o image.png -H "accept:image/png" http://httpbin.org/image 就是请求这个网址,接受png合适的图片,并保存image.png
# -k 跳过ssl验证,允许发起不安全的ssl请求比如curl -k https://www.12306.cn
# -s 不显示其他无关信息,只显示ip
#http请求返回 301是永久重定向,302是临时重定向 403是被禁止,没有权限 401是未授权,需要登录
# 返回访问的状态码
# curl -m 5 -s -o /dev/null -w %{http_code} https://www.baidu.com/
curl获取访问时间
生成打印字段配置文件
cat >./curl-format.txt <<-EOF
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_redirect: %{time_redirect}\n
time_pretransfer: %{time_pretransfer}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}\n
EOF
字段含义
cat ./curl-format.txt
time_namelookup: DNS解析时间
time_connect:TCP 连接建立的时间,就是三次握手的时间 ,计算方式:time_connect - time_namelookup
time_appconnect:SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间
time_redirect: 从开始到最后一个请求事务的时间
time_pretransfer:从请求开始到响应开始传输的时间
time_starttransfer: 从请求开始到第一个字节将要传输的时间
time_total:这次请求花费的全部时间
示例:
curl -w "@curl-format.txt" -o /dev/null -s -L "https://www.ptmind.com"
time_namelookup: 0.529108
time_connect: 0.688685
time_appconnect: 1.201098
time_redirect: 0.000000
time_pretransfer: 1.201304
time_starttransfer: 1.418342
----------
time_total: 1.540865
#循环多次执行
for i in $(seq 1000);do curl -w "@curl-format.txt" -o /dev/null -s -L "https://www.ptmind.com";echo ------$i---------;sleep 1;done
计算公式
DNS查询时间:0529108
TCP连接时间: time_connect - time_namelookup = 0.688685 - 0.529108 = 159ms
服务器处理时间:time_starttransfer - time_pretransfer = 1.418342 - 1.201304 = 217ms
内容传输时间:time_total - time_starttransfer = 1.540865 - 1.418342 = 122ms
直接执行不要配置
curl -w "%{time_namelookup}\n%{time_connect}\n%{time_pretransfer}\n%{time_starttransfer}\n%{time_total}" -o /dev/null -s -L "https://www.ptmind.com"
输出信息如下:
0.028
0.033
0.057
0.450
0.677
#循环执行
for i in $(seq 1000);do curl -w "%{time_namelookup}\n%{time_connect}\n%{time_pretransfer}\n%{time_starttransfer}\n%{time_total}" -o /dev/null -s -L "https://www.ptmind.com";echo ------$i---------;sleep 1;done