2018-11-30 · Tools

CURL 命令简单示例

curl 是利用 CURL 语法在命令行方式下工作的开源文件传输工具。它被广泛应用在 UNIX、多种 Linux 发行版中,并且有 DOS 和 Win32 、 Win64 下的移植版本。如果是安装了 git shell,也是自带 curl 命令的。

curl 命令可以在我们开发 Web 应用的时候,模拟前端发起的 HTTP 请求,本节简要介绍 curl 命令。

最简单的 CURL

# 将输出显示在STDOUT中(终端)
curl http://www.centos.org
# 使用-v / -trace 来查看下载详情

# -o(小写) 指定文件名
curl -o mygettext.html http://api.github.com/gettext.html

# -O(大写) 使用URL中文件名
curl -O http://api.github.com/gettext.html

# 重定向 >
curl http://www.centos.org > centos-org.html

通过参数 -i 返回 HTTP头

curl baidu.com -i

将返回如下输出:

HTTP/1.1 200 OK
Date: Mon, 15 Oct 2018 07:21:14 GMT
Server: Apache
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
ETag: "51-47cf7e6ee8400"
Accept-Ranges: bytes
Content-Length: 81
Cache-Control: max-age=86400
Expires: Tue, 16 Oct 2018 07:21:14 GMT
Connection: Keep-Alive
Content-Type: text/html

<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>

设置请求头 -H

curl "baidu.com?q=txt&c=1" -H 'Content-Type: application/json'

授权下载

有时,网站需要用户名和密码才可查看的内容, 默认使用HTTP身份进行验证,可以使用 –ntlm | –digest 来切换验证方式。

curl -u username:password URL

代理模式

curl -x proxysever.test.com:3128 http://google.co.in
# 将网站的cookies信息保存到sugarcookies文件中
curl -D sugarcookies http://localhost/sugarcrm/index.php

# 使用上次保存的cookie信息
curl -b sugarcookies http://localhost/sugarcrm/index.php

请求参数

默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据。可以通过 –data/-d 方式指定使用POST方式传递数据

# GET
curl -u username https://api.github.com/user?access_token=XXXXXXXXXX

# POST
curl -u username --data "param1=value1¶m2=value" https://api.github.com

# 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
curl --data @filename https://github.api.com/authorizations

# 在新版本的CURL中,提供了新的选项 –data-urlencode,通过该选项提供的参数会自动转义特殊字符。
curl --data-urlencode "value 1" http://hostname.com

# 除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如:
curl -X DELETE https://api.github.com

上传文件

curl --form "fileupload=@filename.txt" http://hostname/resource

curl http://hostname/resource -F "file=@xxx.doc" -F "name=xxx"