wget/curl 測試http的2種命令行工具

wget/curl是兩個比較方便的測試http功能的命令行工具,大多數情況下,測試http功能主要是查看請求響應頭信息,而給這兩個工具加上適當的命令行參數即可輕易做到,其實查man手冊就能找到對應的參數選項,不過這裏仍然mark一下。

wget的debug選項:
–debug
Turn on debug output, meaning various information important to the developers of
Wget if it does not work properly. Your system administrator may have chosen to
compile Wget without debug support, in which case -d will not work. Please note
that compiling with debug support is always safe—Wget compiled with the debug
support will not print any debug info unless requested with -d.

實例:


可以看到,wget鏈接請求採用的是HTTP/1.0協議,這是因爲我這裏使用的wget版本爲1.12,自1.13版本後的wget默認也就採用HTTP/1.1協議(http://bzr.savannah.gnu.org/lh/wget/trunk/annotate/head:/NEWS#L46):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[root@localhost src]# ./wget --debug 127.0.0.1
DEBUG output created by Wget 1.13.4 on linux-gnu.
 
URI encoding = `UTF-8'
--2012-10-05 21:32:59--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
Created socket 3.
Releasing 0x09841a20 (new refcount 0).
Deleting unused 0x09841a20.
 
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.13.4 (linux-gnu)
Accept: */*
Host: 127.0.0.1
Connection: Keep-Alive
 
---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200 OK
Server: nginx/1.2.0
Date: Fri, 05 Oct 2012 13:32:59 GMT
Content-Type: text/html
Content-Length: 168
Last-Modified: Fri, 05 Oct 2012 09:05:00 GMT
Connection: keep-alive
Accept-Ranges: bytes
 
---response end---
200 OK
Registered socket 3 for persistent reuse.
Length: 168 1
Saving to: `index.html.1'
 
100%[============================================================>] 168         --.-K/s   in 0s     
 
2012-10-05 21:33:04 (3.60 MB/s) - `index.html.1' saved [168/168]

如果wget不帶–debug選項,則可以使用-S、–save-headers選項,不過此時只能查看響應頭部信息:
-S
–server-response
Print the headers sent by HTTP servers and responses sent by FTP servers.

–save-headers
Save the headers sent by the HTTP server to the file, preceding the actual contents,
with an empty line as the separator.

實例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost ~]# wget -S 127.0.0.1
--2012-05-26 12:38:32--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Server: nginx/1.2.0
  Date: Sat, 26 May 2012 04:38:32 GMT
  Content-Type: text/html
  Content-Length: 186
  Last-Modified: Fri, 25 May 2012 02:41:59 GMT
  Connection: keep-alive
  Accept-Ranges: bytes
Length: 186 1
Saving to: “index.html.44”
 
100%[================================================================>] 186         --.-K/s   in 0s     
 
2012-05-26 12:38:32 (4.52 MB/s) - “index.html.44” saved [186/186]
 
[root@localhost ~]#

利用curl的-v查看請求響應頭部信息:
-v/–verbose
Makes the fetching more verbose/talkative. Mostly useful for debugging. A line
starting with ’>’ means “header data” sent by curl, ’<’ means "header data"
received by curl that is hidden in normal cases, and a line starting with ’*’
means additional info provided by curl.

Note that if you only want HTTP headers in the output, -i/--include might be the
option you’re looking for.

If you think this option still doesn’t give you enough details, consider using
--trace or --trace-ascii instead.

This option overrides previous uses of --trace-ascii or --trace.

Use -s/--silent to make curl quiet.

實例(可以看到,curl鏈接請求默認採用的是HTTP/1.1協議):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@localhost aa]# curl -v 127.0.0.1
* About to connect() to 127.0.0.1 port 80 (#0)
*   Trying 127.0.0.1… connected
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (i686-pc-linux-gnu) libcurl/7.19.7 NSS/3.12.7.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2
> Host: 127.0.0.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.2.0
< Date: Sat, 26 May 2012 04:45:12 GMT
< Content-Type: text/html
< Content-Length: 186
< Last-Modified: Fri, 25 May 2012 02:41:59 GMT
< Connection: keep-alive
< Accept-Ranges: bytes
<
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
<center><h1>root:web</h1></center>
</body>
</html>
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
[root@localhost aa]#

利用curl的-I選項僅查看響應頭部信息:
-I/--head
(HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature the command HEAD
which this uses to get nothing but the header of a document. When used on a FTP
or FILE file, curl displays the file size and last modification time only.

實例:

1
2
3
4
5
6
7
8
9
10
11
[root@localhost aa]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.2.0
Date: Sat, 26 May 2012 04:43:12 GMT
Content-Type: text/html
Content-Length: 186
Last-Modified: Fri, 25 May 2012 02:41:59 GMT
Connection: keep-alive
Accept-Ranges: bytes
 
[root@localhost aa]#

附:
curl官網:http://curl.haxx.se/
curl維基:http://en.wikipedia.org/wiki/CURL
wget官網:http://www.gnu.org/software/wget/
wget維基:http://en.wikipedia.org/wiki/Wget
curl與wget的對比:http://daniel.haxx.se/docs/curl-vs-wget.html



轉載:Lenky個人站點

發佈了8 篇原創文章 · 獲贊 23 · 訪問量 84萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章