curl 是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。
参考 curl 用法指南
基础用法
直接请求指定资源
响应内容导出到文件
默认输出到stdout, 指定 -o file
则输出到指定文件
1
| curl -o sina.html www.sina.com
|
发起GET请求并带参数
-G
表示 GET请求,默认也是GET请求,所以不加也可以。
1 2
| curl -G --data "login=1&name=sindy" localhost:7001 curl "https://www.baidu.com/s?wd=weather&rsv_spt=1"
|
发起POST请求并带参数
-X
指定请求方法,-d
指定请求参数,--data-urlencode
对参数进行URL编码, -H
/--header
指定请求头
用 -d
参数以后,HTTP 请求会自动加上标头 Content-Type : application/x-www-form-urlencoded
。并且会自动将请求转为 POST
方法,因此可以省略 -X POST
。
1 2 3 4 5 6 7 8
| curl -X POST --data '{"name":"controller"}' --header 'Content-Type:application/json' http://127.0.0.1:7001/form
curl -d 'login=emma' -d 'password=123' -X POST https://google.com/login
|
-d
参数可以读取本地文本文件的数据,向服务器发送。
1
| curl -d '@data.txt' https://google.com/login
|
设置请求头
-H
/--header
指定请求头,设置多个header,可指定多个 --header
选项
1 2 3 4
|
curl --header "content-type: application/json" --header "authorization: Bearer token" url
|
设置 useragent
-A
/--user-agent
指定UA, 对于带反爬虫的网站,可以设置UA来伪装浏览器。
1 2
| curl -A val url curl --user-agent val url
|
指定 referer
对于防止盗链的网站,可以指定 referer 来伪装请求来源。
指定 cookie
接口需要鉴权的话,可以指定 cookie 来发送相关鉴权信息。
1 2
| curl --cookie "name=alice" url
|
高级用法
追踪重定向,获取重定向后的内容
1 2 3 4 5 6 7
| curl -L www.sina.com
curl http://localhost:7001
curl -L http://localhost:7001
|
显示响应头
1 2 3 4
| curl -i www.sina.com
curl -I www.sina.com
|
显示完整的 http 通信过程
1 2 3 4
| curl -v www.sina.com
curl --trace output.txt www.baidu.com
|
自动urlencode传入的数据
--data
/-d
默认不会encode数据
1
| curl -X POST --data-urlencode "data" url
|
文件上传
1
| curl --form upload=@localfilename --form press=ok url
|
保存返回的cookie
1
| curl -c cookies.txt http://example.com
|
发送 cookie 文件
1
| curl -b cookies.txt http://example.com
|
http 认证
1
| curl --user name:password url
|
多参数示例
1 2 3 4 5 6
| curl -iv -d "@data.json" --cookie 'csrfToken=REhEag2ATP5vfl2Za6aOXoCT' --header 'x-csrf-token:REhEag2ATP5vfl2Za6aOXoCT' --header 'content-type: application/json' -o out.txt http://localhost:7002/component/create
|