curl命令使用指南

我一向以为,curl只是一个编程用的函数库。
最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法。
curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在”标准输出”(stdout)上面。

curl的选项功能

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
不带任何参数时curl将返回指定url中的数据并打印在屏幕上
-u 使用用户名和密码登陆。如curl -uname:passwd URL
-b/--cookie <name=data> 向服务器提交cookie,若无=则name视为文件名,例如:curl -b cookie.txt www.imarkofu.com
-o out 将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件。如curl -o page.html URL
-d <key=value> 向服务器POST表单数据 例如:curl -d "pageSize=8&pageNo=5" http://www.imarkofu.com/load.do
-A/--user-agent <ua> 指定发送请求的用户代理,例如:curl -A My-Agent/1.0.0 www.imarkofu.com
-x ip:port 指定使用的http代理,例如:curl -x 192.168.1.1:8080 www.imarkofu.com
-D head.txt 将服务器的返回的header保存为文件,头部的cookie也可被保存,例如:curl -D header.txt www.imarkofu.com
-L 当页面有跳转的时候,输出跳转到的页面
-I header信息 当有跳转时,可以通过 curl -L -I URL|grep Location 来确定跳转到的新url地址
-c <file> 保存服务器的cookie文件
-e url 设置引用头的值
-T localfile 向服务器PUT文件 例如:curl -T xxx.doc www.imarkofu.com/upload.do
-F <key=value> 向服务器POST表单,例如:curl -F "web=@index.html;type=text/html" url.com
-E cert.pem 指定本地证书
-H <header:value> 为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.imarkofu.com
-X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.imarkofu.com
-compressed 采用压缩方式接收返回数据
-connect-timeout `<`s`>` 设置超时时间
-v 详细输出,包含请求和响应的首部
--retry num
--retry timeo 指定重试的次数和间隔
--tcp-nodelay 打开TCP_NODELAY选项 不进行捎带确认
-O 按服务器上的名称保存下载的文件
-r/--range from-to 下载指定range内的数据
-C 在保存文件时进行续传

curl的常见使用

curl查看web站点rt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
curl -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"\n" "http://www.taobao.com"  
0.014::0.015::0.018::0.019::1516256.00
-s:去掉所有状态
-w:按照后面的格式写出rt
time_namelookup:DNS 解析域名[www.taobao.com]的时间
time_commect:client和server端建立TCP 连接的时间
time_starttransfer:从client发出请求;到web的server 响应第一个字节的时间
time_total:client发出请求;到web的server发送会所有的相应数据的时间
speed_download:下载速度 单位 byte/s

0.014: DNS 服务器解析www.taobao.com 的时间单位是s
0.015: client发出请求到server建立TCP的时间,里面包括DNS解析的时间
0.018: client发出请求到server响应发出第一个字节开始的时间,包括前面的2个时间
0.019: client发出请求到server把响应的数据全部发送给client,并关闭connect的时间
1516256.00 :下载数据的速度

1. 建立TCP连接到server返回client第一个字节的时间:0.018s - 0.015s = 0.003s
2. server把响应数据发送给client的时间:0.019s - 0.018 = 0.01s