linux curl是一个非常实用的、用来与服务器之间传输数据的工具,其提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传等功能,在平常工作开发中能够利用此工具进行各种网络协议的测试。

参数说明

参数 作用 例子
-I/--head 只显示文档信息 curl -I http://www.baidu.com
-H 请求中带header,多个header写多次 curl -H "X-Forwarded-For: 211.100.19.167" -H "User-Agent: Mozilla/5.0" www.baidu.com
-x/--proxy <host[:port]> 在给定的端口上使用HTTP代理 curl -x 113.10.246.178:80 0.v38.faidns.com
-v/--verbose 小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。
-A/--user-agent  <ua> 指定使用的http代理访问(即user agent) curl -A Faisco-Agent/1.0.0 0.v38.faidns.com/ok.png
--cookie 请求中带上cookie curl "http://www.wvma.com" --cookie "security=low;PHPSESSID=ubuaivh6pq34a9q3t0d5905hp3"
-d HTTP POST方式传送数据 curl -d "leaderboard_id=7778a8143f111272&score=19&app_key=8d49f16fe034b98b&_test_user=test01" "http://172.16.102.208:8089/wiapi/score"
--compressed 请求时要求必须是gzip压缩的,即在请求时的header会加Accept-Encoding: deflate, gzip curl -v --compressed http://www.menkemy.com/_x.jsp?c=3
-L 当页面有跳转的时候,输出跳转到的页面 curl -L www.ladyfirstflorist.com/_x.jsp?c=3
-k 允许cURL 执行“不安全” SSL 连接和传输所有的SSL 连接 使用捆绑默认安装的CA 证书试图使其安全,这使得除非使用-k/--insecure,否则所有连接被认为是“不安全”的而失败 curl -k "https://hd.faisco.cn/10109247/1/load.html?style=38"
-e/--referer 通过-e或--referer参数模拟浏览器referer传递 curl -v --referer http://www.myreferer.com http://www.wayken.com
--socks4 <host[:port]> 用socks4代理给定主机和端口 curl --socks4 58.67.170.75:80 -I http://myip.ipip.net
--socks5 <host[:port]> 用socks5代理给定主机和端口 curl --socks5 58.67.170.75:80 -I http://myip.ipip.net
-F 上传文件,例如文件名是myfile.txt,则该路径下必须有该文件 curl -v -F "[email protected]" -X POST 192.168.1.3:8881

示例:

  1. 模拟HTTP JSON请求
curl -i -X POST -H "Content-type:application/json" -d '{"id":10899,"name":"product1"}' http://172.17.2.11:8880/

获取请求响应时间

curl -o /dev/null -s -w "nslookup:"%{time_namelookup}"\nhttp_code:"%{http_code}"\ntime_connect:"%{time_connect}"\ntime_starttransfer:"%{time_starttransfer}"\ntime_total:"%{time_total}"\n" www.mingxuanylly.com
  • http_code http:状态码,如200成功,301转向,404未找到,500服务器错误等
  • time_connect:建立到服务器的 TCP 连接所用的时间
  • time_total:完成请求所用的时间
  • 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.)
  • time_namelookup:DNS解析时间,从请求开始到DNS解析完毕所用时间

telnet模拟http请求,以连接http://www.wayken.icoc.cc/为例

telnet www.wayken.icoc.cc 80
Connected to www.wayken.icoc.cc (173.254.226.218). 

如果是windows,需要按ctrl+],打开本地回显功能,这样才可以看见我们所打的东西

Escape character is '^]'.
  1. 只获取http头
HEAD / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:39.0) Gecko/20100101 Firefox/39.0
Host: www.wayken.icoc.cc
Accept: */*
  1. 获取http整个请求数据
HEAD / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:39.0) Gecko/20100101 Firefox/39.0
Host: www.wayken.icoc.cc
Accept: */*

按两次回车,即可输出信息

参考链接