前言
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。curl命令在日常开发或运维中都经常用到,这里和大家总结下curl命令的常用用法。
基础用法
curl http://www.baidu.com
执行后,www.baidu.com 的html就会显示在屏幕上了。
保存访问的网页
方式一 使用linux的重定向功能保存
curl http://www.baidu.com >> linux.html
方式二 使用curl的内置option:-o(小写)保存网页
curl -o linux.html http://www.baidu.com
测试网页返回值
curl -o /dev/null -s -w %{http_code} http://www.baidu.com
/dev/null可以理解为/dev路径下的空文件;该命令将command命令的标准输出输出到空文件中;-s 表示静默处理 -w 输出对应的状态码;
自动跳转
有的网址是自动跳转的。使用`-L`参数,curl就会跳转到新的网址。下面的命令会自动跳转到www.sina.com.cn
curl -L http://www.sina.com
显示头信息
curl -i http://www.baidu.com
发送表单信息
发送表单信息有GET和POST两种方法。GET方法相对简单,只要把数据附在网址后面就行。
curl http://www.baidu.com/test?name=aiqinhai
POST方法必须把数据和网址分开,curl就要用到--data参数。curl默认的HTTP动词是GET,使用`-X`参数可以支持其他动词。
curl -X POST --data "name=aiqinhai" http://www.baidu.com/test
如果你的数据没有经过表单编码,还可以让curl为你编码,参数是`--data-urlencode`。
curl -X POST--data-urlencode "name=ai qin hai" http://www.baidu.com/test
伪造refere
很多服务器会检查http访问的referer从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的referer地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗连了curl中内置option:-e可以让我们设定referer
curl -e "www.baidu.com" http://mail.baidu.com
下载文件
使用内置option:-o(小写)
curl -o aiqinhai.jpg http://www.baidu.com/aiqinhai.jpg
使用内置option:-O(大写)
curl -O http://www.baidu.com/aiqinhai.jpg
增加头信息
有时需要在http request之中,自行增加一个头信息。--header参数就可以起到这个作用。
curl --header "Content-Type:application/json" http://www.baidu.com
或
curl -H "Content-Type:application/json" http://www.baidu.com
HTTP认证
有些网域需要HTTP认证,这时curl需要用到--user参数。
curl --user name:password http://www.baidu.com
POST请求body传参
body传参需要注意双引号
curl -X POST --header 'Content-Type: application/json' -d "{\"audioId\": \"1044811111\",
\"transcriptResult\": \"爱琴孩\", \"status\": \"-1\"}"
"http://127.0.0.1/StudyService/v1/transcript/PCpz11111111111111111111/callback"