1. 常用方法
1.1 POST数据提交
1
| curl -X POST -d 'keyword=linux' http://www.baidu.com
|
1.2 指定请求头
1
| curl -H 'Content-Type:application/json' -H 'keyword:linux' http://www.baidu.com
|
2. 常用参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| -b, --cookie <data> 传输Cookie,格式为"NAME1=VALUE1; NAME2=VALUE2",若无"=",表名为文件名 -d, --data DATA HTTP POST数据 -F, --form <name=content/@file> 模拟HTTP表单数据提交(Content-Type multipart/form-data),可用@引用文件,可以多参数进行拼接 -G, --get 使用HTTP GET方法发送-d数据 -H, --header <header/@file> 指定HTTP header,可用@引用文件,可以多参数进行拼接 -I, --head 仅显示响应文档头 -o, --output <file> 输出文件 -x, --proxy [PROTOCOL://]HOST[:PORT] 指定代理 -e, --referer Referer,亦可用-H来实现 -X, --request <command> HTTP命令 --resolve <host:port:address[,address]...> 域名解析 -s, --silent 静默模式,不显示进度和错误信息 --tcp-nodelay 使用TCP_NODELAY选项 -T, --upload-file <file> 文件上传 -A, --user-agent <name> 指定User-Agent,亦可用-H实现 -v, --verbose 显示详细操作信息 -w, --write-out <format/@file> 结束后额外信息输出,可用@指定格式文件,具体参数参见 https://curl.haxx.se/docs/manpage.html#-w
|
3. 时间统计
CURL可以通过-w,配合-o /dev/null和-s可以专门测量HTTP请求的时间消耗。
示例:
1 2 3 4 5 6 7 8 9 10
| curl -w "\n\ time_namelookup: %{time_namelookup}\n\ time_connect: %{time_connect}\n\ time_appconnect: %{time_appconnect}\n\ time_pretransfer: %{time_pretransfer}\n\ time_redirect: %{time_redirect}\n\ time_starttransfer: %{time_starttransfer}\n\ --------------------------------\n\ time_total: %{time_total}\n\ \n" -o /dev/null -s http://www.baidu.com
|
结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| vagrant@debian:~/blog$ curl -w "\n\ > time_namelookup: %{time_namelookup}\n\ > time_connect: %{time_connect}\n\ > time_appconnect: %{time_appconnect}\n\ > time_pretransfer: %{time_pretransfer}\n\ > time_redirect: %{time_redirect}\n\ > time_starttransfer: %{time_starttransfer}\n\ > --------------------------------\n\ > time_total: %{time_total}\n\ > \n" -o /dev/null -s http://www.baidu.com
time_namelookup: 0.004284 time_connect: 0.037377 time_appconnect: 0.000000 time_pretransfer: 0.037483 time_redirect: 0.000000 time_starttransfer: 0.071478 -------------------------------- time_total: 0.071703
|
-w参数可以通过@引用格式文件,将下述格式保存为curl-format,可以直接使用命令curl -w "@curl-format" -o /dev/null -s http://www.baidu.com
。
1 2 3 4 5 6 7 8 9 10
| \n time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_appconnect: %{time_appconnect}\n time_pretransfer: %{time_pretransfer}\n time_redirect: %{time_redirect}\n time_starttransfer: %{time_starttransfer}\n --------------------------------\n time_total: %{time_total}\n \n
|
时间参数个人理解(各时间均为命令起始至对应节点的时间):
1 2 3 4 5 6 7
| time_namelookup DNS解析完成时间 time_connect TCP建立连接时间 time_appconnect SSL/SSH/etc完成时间 time_pretransfer CURL发送结束,开始等待服务器传输的时间(?) time_redirect 重定向时间(仅重定向时间,不从起始计时) time_starttransfer CURL接收到服务端首个字节的时间 time_total 总时间
|