hopeless-dream

导航

curl -w参数

-w参数的作用:

完成 HTTP 请求后,使用变量改变 标准输出 的信息。

变量的使用方式

  1. 使用 "%{variable_name}" 的格式使用变量
  2. 如果要打印%,需要写成%%,如:"%{variable_name}%%" 
  3. 通过文本文件传入变量,使用@filename的形式

支持的变量(常用的)

content_type:HTTP 请求的 Content-type

errormsg:错误信息

http_code:响应码

local_ip:ip地址,可以是ipv4,也可以是ipv6

remote_ip:目标服务器的远程IP,可以是 ipv4、ipv6

remote_port:目标服务器的远程端口

response_code:和 http_code 一样,都是响应码

size_request:HTTP请求中发送的总字节数

url_effective:最后获取的 URL。如果 curl 添加了 -L 且真的重定向之后,这个就很有用了

-L:获取重定向后的真实地址

-k:忽略HTTPS请求的CA证书

只举一个例子

# curl -w "%{url_effective}" -o /dev/null -s -S -L -k https://www.zhipin.com/job_detail/?ka=header-job
https://www.zhipin.com/web/common/security-check.html?seed=jWHNq2M5c7p9qn9d4E%3D&name=1f49f5f3&ts=1659155053136&callbackUrl=%2Fjob_detail%2F%3Fka%3Dheader-job&srcReferer=

以下变量多用于从文本文件获取请求耗时:

time_namelookup:DNS 域名解析的耗时,就是把 https://abc.com 转换成 ip 地址的过程

time_connect:TCP 连接建立的时间,就是三次握手的时间

time_appconnect:SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间

time_redirect:在最终事务开始之前,所有重定向步骤(包括名称查找、连接、预传输和传输)所用的时间(以秒为单位)

time_redirect 显示多个重定向的完整执行时间

time_pretransfer:从请求开始到响应开始传输的时间

time_starttransfer:从请求开始到第一个字节将要传输的时间,包括预传输时间和服务器处理结果所需的时间。

time_total:这次请求花费的全部时间

 

从文件获取请求信息分析

# vim a.txt
  
    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

使用

# curl -w "@a.txt" -o /dev/null -sSLk  www.baidu.com
    time_namelookup:  0.013
       time_connect:  0.024
    time_appconnect:  0.000
      time_redirect:  0.000
   time_pretransfer:  0.025
 time_starttransfer:  0.036
                    ----------
         time_total:  0.037

 

posted on 2022-07-30 12:35  hopeless-dream  阅读(554)  评论(0编辑  收藏  举报