curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。支持通过 HTTP、HTTPS、FTP、SFTP 等协议,进行网络传输。常用于发送 HTTP 请求,获取网页内容,上传或下载文件,以及与 API 的交互。

语法

1
curl [options...] <url>

基础指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-A, --user-agent <name>          参数指定客户端的用户代理标头,将 User-Agent <name> 发送到服务器
-b, --cookie <数据|文件> 向服务器发送 Cookie
-c, --cookie <文件> 接收 Cookie 并保存文件
-d, --data <数据> 向服务器发送 HTTP POST 数据
-f, --fail HTTP 错误不输出信息
-F, --form <数据> 向服务器发送二进制文件(表单)
-h, --help <category> 获取命令帮助
-H, --header <请求头> 携带请求头
-i, --include 打印出服务器回应的 HTTP 响应头信息
-o, --output <文件名> 下载文件,而不是 stdout
-O, --remote-name 下载文件,名称为远程文件的文件名
-s, --silent 静默模式,不输出错误和进度信息
-S, --show-error 只输出错误
-T, --upload-file <文件> 将本地文件上传服务器
-u, --user <用户:密码> 提供 基本认证(Basic Authentication)所需的用户名和密码
-v, --verbose 输出整个过程信息
-V, --version 显示版本号
-X, --

常见例子

  • 发送 GET 请求:
1
curl https://example.com
  • 发送 POST 请求:
1
curl -X POST -d "key=value" https://example.com
  • 带头信息的请求:
1
curl -H "Authorization: Bearer token" https://example.com
  • 携带 Cookie 的请求:
1
2
3
curl -b 'foo=bar' https://example.com

curl -b cookies.txt https://www.google.com // 使用 cookie 文件
  • 下载文件:
1
curl -O https://example.com/file.zip
  • 上传文件:
1
curl -F "file=@file.txt" https://example.com/upload
  • 打印响应头:
1
curl -i https://example.com
  • 打印整个过程:
1
curl -v https://example.com