# curl简易教程
# 简介
curl是一个命令行工具,作用是发送网络请求,然后获取数据,显示在标准输出(stdout)上面。支持多种协议。
# 示例
# 查看网页源码
$ curl www.sina.com
# 保存网页源码
$ curl www.sina.com -o index.html
# 自动跳转
$ curl -L www.sina.com
# 显示网页头信息
-i 显示网页头信息和内容 -I只显示网页头信息
$ curl -i www.sina.com
$ curl -I www.sina.com
# 显示通信过程
-v参数可以显示一次完整的http通信过程。包括端口连接和http request头信息
$ curl -v www.sina.com
# 显示更详细的通信过程
$ curl --trace output.txt www.sina.com
$ curl --trace-ascii output.txt www.sina.com
# 发送表单信息
GET只需要把数据附在链接后面即可
$ curl example.com?a=1&b=2
POST请求必须把数据和链接分开 使用-d或者--data来发送数据 需要显式的声明post方法
$ curl -X POST --data "data=111" example.com/form.cgi
# 如果数据没有经过表单编码 可以使用--data-urlencode进行编码
$ curl -X POST --data-urlencode "data=测试数据" "http://httpbin.org/post"
POST json数据 需要声明头信息
$ curl -X POST -H "Content-Type: application/json" -d "{\"test\":1111}" "http://httpbin.org/post"
# json数据放在文件里面
$ curl -X POST -H "Content-Type: application/json" -d @test.json "http://httpbin.org/post"
# curl动词
curl默认使用的动词是GET 可以通过-X参数使用别的动词
$ curl -X DELETE example.com/111.png
# User Agent字段
这个字段是用来标识客户端的设备信息,服务器有时候会根据这个字段,针对不同设备,返回不同信息。
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36
$ curl --user-agent "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36" example.com
# cookie
使用--cookie参数 可以让curl发送请求时携带cookie信息
$ curl --cookie "name=xxxx" example.com
有时需要在http request中增加一个头信息 可以使用--header
$ curl --header "Content-Type: application/json" http://example.com
# 文件上传
使用-F参数来模拟multipart/form-data形式的form文件上传。文件需要使用 name=@file的方式来指定。
$ curl -F "file=@/home/test/test.png" http://example.com/upload
# 如果通过代理,上述直接上传的命令会失效,需要指定上传文件的MIME类型
$ curl -x myproxy:1080 -F "file=@/home/test/test.png;type=application/octet-stream" http://example.com/upload