一、简介

Curl是一个用于通过Url传输数据的命令行工具,支持多种协议;可以用来调试网络请求。

二、安装

下载并解压,解压后将bin目录添加到环境变量中。

三、用法

语法:

curl [options / URLs]

1、获得帮助

curl --help

2、URL

  • 指定多个URL

在大括号中指定多个URL:

http://site.{one,two,three}.com

在中括号中使用序列:

ftp://ftp.example.com/file[1-100].txt

ftp://ftp.example.com/file[a-z].txt

指定步长计数器:

http://example.com/file[1-100:10].txt

http://example.com/file[a-z:2].txt
  • 指定用户名和密码

有两种方式:

curl ftp://name:passwd@machine.domain:port/full/path/to/file

curl -u name:passwd ftp://machine.domain:port/full/path/to/file

也支持HTTP请求,方式相同。

3、输出

默认curl将接收到的数据写入到stdout,可以通过-o-O命令保存到本地文件。

获取一个网页并存储在本地指定名称的文件中:

curl -o thatpage.html http://www.example.com/

获取一个网页并存储在本地,使用远程文件的名称,如果URL中没有指定文件名,则失败,例如:http://www.example.com/。

curl -O http://www.example.com/index.html

4、HTTP

使用-X参数自定义HTTP请求方法:

  • GET
curl http://www.example.com/

等价于

curl -X GET http://www.example.com/
  • POST

使用-d参数指定请求参数:

curl -d "key=value&foo=bar" -X POST http://www.example.com/

如果发送JSON格式参数,需指定Content-Type

curl -d '{"key": "value", "foo": "bar"}' -H "Content-Type: application/json" -X POST http://www.example.com/

windows中需要使用双引号:

curl -d "{\"key\": \"value\", \"foo\": \"bar\"}" -H "Content-Type: application/json" -X POST http://www.example.com/
URL中有参数时也需要加引号:"http://www.example.com/app?type=1&key=value"

也可以发送一个JSON文件:

curl -d "data.json" -X POST http://www.example.com/
  • PUT

与POST方式类似。

  • 将浏览器请求复制为curl

可以在Chrome开发工具的Network中,右键请求,将请求复制为curl:

5、超时与限速

可以使用-m(max-time)设置超时时间(秒);使用-Y(speed-limit)和-y(speed-time)分别设置传输速度(每秒字节数)与时间(秒):

如果下载速度以低于每秒3000字节运行1分钟,则中止下载;且必须在30分钟内完成:

curl -m 1800 -Y 3000 -y 60 www.far-away-site.com

6、上传

从指定的文件(uploadfile)中上传数据(myfile),使用用户名和密码登录:

curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile

7、代理

使用名为my-proxy的HTTP代理获取一个ftp文件,该代理使用888端口:

curl -u user:passwd -x my-proxy:888 http://www.get.this/
参考资料: