cURL常见用法 - wbwangk/wbwangk.github.io GitHub Wiki

参考

cURL是一个常用的linux命令行工具,它可以模仿浏览器发送各种HTTP请求。
最简单的用法:$ curl http://127.0.0.1:80$ curl http://qq.com

HTTP命令(-X)

$ curl -X DELETE http://某域名.com/某资源id 表示删除某个资源

HTTP表单数据(-d)

普通表单:

$ curl -X POST http://某域名.com -d 'field1=value1&field2=value2'

AJAX+json格式:

$ curl -X POST http://127.0.0.1:5984/demo \
            -d '{"company": "Example, Inc."}'

上例是向couchdb的demo数据库中添加文档的例子。

HTTP头(-H)

$ curl -H 'Content-Type: application/json' \
            -X POST http://127.0.0.1:5984/demo \
            -d '{"company": "Example, Inc."}'

在http头中指定了POST数据是json格式的。

操作cookie(-c -b)

$ curl -c cookiec.txt  http://www.linux.com

从服务器返回的cookie数据被保存到了cookiec.txt文件中。

$ curl -b cookiec.txt http://www.linux.com

把cookiec.txt文件中数据当cookie发给服务器。-c和-b参数相结合就模拟了浏览器的cookie功能。

直接在命令行上模拟cookie的写法:

curl -vX PUT http://127.0.0.1:5984/mydatabase \
       --cookie "AuthSession=YW5uYTo1Nzg2MzU4RTqigPm9-aUOs2Q7qaBZcTRvvOUCHg;name=ddd" 

上传文件

以上传couchdb的附件为例演示curl上传文件的功能:

curl -vX PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=2-2739352689 \
     --data-binary @artwork.jpg -H "Content-Type:image/jpg"

-T 上传文件

使用curl -T参数上传文件:

curl -T '/etc/hosts' 'http://webdav.imaicloud.com/webb3/'

使用justniffer监控enp0s3网卡:

justniffer -i enp0s3 -r

可以看到curl -T参数发送的实际http请求如下:

PUT /webb3/hosts HTTP/1.1
Host: webdav.imaicloud.com
User-Agent: curl/7.47.0
Accept: */*
Content-Length: 235
Expect: 100-continue

HTTP/1.1 100 Continue


127.0.0.1       block2  block2
127.0.0.1       localhost

HTTP/1.1 201 Created
Server: nginx/1.9.8
Date: Thu, 05 Jan 2017 07:54:42 GMT
Content-Length: 0
Location: http://webdav.imaicloud.com/webb3/hosts
Connection: keep-alive

其中/etc/hosts文件的内容是:

127.0.0.1       block2  block2
127.0.0.1       localhost

下载文件

$ curl -o go1.tar.gz https://dl.google.com/go/go1.16.3.linux-386.tar.gz
$ curl -O https://dl.google.com/go/go1.16.3.linux-386.tar.gz

访问https地址

curl --cacert /etc/ipa/ca.crt https://c7007.ambari.apache.org/KdcProxy

json格式化显示

安装 jq

apt-get install jq

使用jq格式化显示json

cat tt.json | jq .

如果curl输出是json,则:

curl xxxxx   | jq .

与jq类似软件还有jshon。