curl获取网站链接状态码status code

前言:在写一些 Shell 测试用例时需要检测 url 的状态是否为 200,这时如果能只获取它的状态码是最理想的,curl 可以很方便的实现。

一、-w 可以格式化输出 reponse 的返回结果。

[root@master ~]# curl -w '%{http_code}' https://baidu.com

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>bfe/1.0.8.18</center>
</body>
</html>
302[root@master ~]#

二、访问带有跳转性质的网站,我们还需要加上 -L 做进一步跳转,同时为了避免当资源过大请求缓慢的情况,通过 -I 只返回头信息

[root@master ~]# curl -IL -w '%{http_code}' https://baidu.com


HTTP/1.1 302 Moved Temporarily
Server: bfe/1.0.8.18
Date: Thu, 05 May 2022 07:47:12 GMT
Content-Type: text/html
Content-Length: 161
Connection: keep-alive
Location: http://www.baidu.com/

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Thu, 05 May 2022 07:47:13 GMT
Etag: "575e1f6f-115"
Last-Modified: Mon, 13 Jun 2016 02:50:23 GMT
Pragma: no-cache
Server: bfe/1.0.8.18

200[root@master ~]#

三、然后隐藏掉打印信息,将打印的结果输出到 /dev/null

[root@master ~]# curl -IL -w '%{http_code}' https://baidu.com -o /dev/null


% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
0   161    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
0   277    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
200[root@master ~]#

四、继续使用 -s 不显示进度和错误信息

[root@master ~]# curl -sIL -w '%{http_code}' https://baidu.com -o /dev/null
200[root@master ~]#

五、默认输出是不换行的,

方法一:输出换行

[root@master ~]# curl -sIL -w "%{http_code}\n" -o /dev/null https://baidu.com
200
[root@master ~]#

方法二:使用 echo

[root@master ~]# echo $(curl -sIL -w "%{http_code}" -o /dev/null https://baidu.com)
200
[root@master ~]#

-w 的一些其它参数

  • url_effective 最终获取的url地址,尤其是当你指定给curl的地址存在301跳转,且通过-L继续追踪的情形。
  • http_code http状态码,如200成功,301转向,404未找到,500服务器错误等。(The numerical response code that was found in the last retrieved HTTP(S) or FTP(s) transfer. In 7.18.2 the alias response_code was added to show the same info.)
  • http_connect The numerical code that was found in the last response (from a proxy) to a curl CONNECT request. (Added in 7.12.4)
  • time_total 总时间,按秒计。精确到小数点后三位。 (The total time, in seconds, that the full operation lasted. The time will be displayed with millisecond resolution.)
  • time_namelookup DNS解析时间,从请求开始到DNS解析完毕所用时间。(The time, in seconds, it took from the start until the name resolving was completed.)
  • time_connect 连接时间,从开始到建立TCP连接完成所用时间,包括前边DNS解析时间,如果需要单纯的得到连接时间,用这个time_connect时间减去前边time_namelookup时间。以下同理,不再赘述。(The time, in seconds, it took from the start until the TCP connect to the remote host (or proxy) was completed.)
  • time_appconnect 连接建立完成时间,如SSL/SSH等建立连接或者完成三次握手时间。(The time, in seconds, it took from the start until the SSL/SSH/etc connect/handshake to the remote host was completed. (Added in 7.19.0))
  • time_pretransfer 从开始到准备传输的时间。(The time, in seconds, it took from the start until the file transfer was just about to begin. This includes all pre-transfer commands and negotiations that are specific to the particular protocol(s) involved.)
  • time_redirect 重定向时间,包括到最后一次传输前的几次重定向的DNS解析,连接,预传输,传输时间。(The time, in seconds, it took for all redirection steps include name lookup, connect, pretransfer and transfer before the final transaction was started. time_redirect shows the complete execution time for multiple redirections. (Added in 7.12.3))
  • time_starttransfer 开始传输时间。在发出请求之后,Web 服务器返回数据的第一个字节所用的时间(The time, in seconds, it took from the start until the first byte was just about to be transferred. This includes time_pretransfer and also the time the server needed to calculate the result.)
  • size_download 下载大小。(The total amount of bytes that were downloaded.)
  • size_upload 上传大小。(The total amount of bytes that were uploaded.)

  • size_header 下载的header的大小(The total amount of bytes of the downloaded headers.)
  • size_request 请求的大小。(The total amount of bytes that were sent in the HTTP request.)
  • speed_download 下载速度,单位-字节每秒。(The average download speed that curl measured for the complete download. Bytes per second.)
  • speed_upload 上传速度,单位-字节每秒。(The average upload speed that curl measured for the complete upload. Bytes per second.)
  • content_type 就是content-Type,不用多说了,这是一个访问我博客首页返回的结果示例(text/html; charset=UTF-8);(The Content-Type of the requested document, if there was any.)
  • num_connects 最近的的一次传输中创建的连接数目。Number of new connects made in the recent transfer. (Added in 7.12.3)
  • num_redirects 在请求中跳转的次数。Number of redirects that were followed in the request. (Added in 7.12.3)
  • redirect_url When a HTTP request was made without -L to follow redirects, this variable will show the actual URL a redirect would take you to. (Added in 7.18.2)
  • ftp_entry_path 当连接到远程的ftp服务器时的初始路径。The initial path libcurl ended up in when logging on to the remote FTP server. (Added in 7.15.4)
  • ssl_verify_result ssl认证结果,返回0表示认证成功。( The result of the SSL peer certificate verification that was requested. 0 means the verification was successful. (Added in 7.19.0))
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三颗草丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值