Appearance
curl
1. 常用选项
1.1. 核心请求选项
| 选项 | 说明 | 示例 |
|---|---|---|
-X <method> | 指定 HTTP 方法(GET/POST/PUT/DELETE 等) | curl -X POST url |
-H <header> | 添加请求头(可多次使用) | curl -H "Auth: token" url |
-F <name=value> | 上传表单(multipart/form-data) | curl -F "file=@a.txt" url |
-d <data> | 发送请求体数据(常用于 POST) | curl -d "key=val" url |
1.2. 数据发送相关
| 选项 | 说明 | 示例 |
|---|---|---|
-d | 发送数据(默认 application/x-www-form-urlencoded) | -d "a=1&b=2" |
--data-binary | 发送二进制数据(保留换行等) | --data-binary @file.bin |
--data-urlencode | URL 编码数据 | --data-urlencode "name=张三" |
@filename | 从文件读取数据(配合 -d / -F) | -d @data.json |
1.3. 请求头与协议
| 选项 | 说明 | 示例 |
|---|---|---|
-H、--header | 添加自定义 Header | -H "Content-Type: application/json" |
-A <agent> | 设置 User-Agent | -A "Mozilla/5.0" |
-e <referer> | 设置 Referer 头 | -e "https://google.com" |
-b <cookies> | 发送 Cookie(字符串或文件) | -b "name=val" |
-c <file> | 保存 Cookie 到文件 | -c cookies.txt |
1.4. 响应输出控制
| 选项 | 说明 | 示例 |
|---|---|---|
-i | 显示响应头 + 响应体 | |
-I | 仅显示响应头(HEAD 请求) | curl -I url |
-o <file> | 将响应体保存到文件 | -o output.html |
-O | 使用 URL 最后一部分作为文件名保存 | -O |
-s、--silent | 静默模式(不显示进度条和错误) | -s |
-S | 与 -s 配合,显示错误信息 | -sS |
1.5. 调试与日志
| 选项 | 说明 | 示例 |
|---|---|---|
-v | 详细模式(显示请求/响应全过程) | curl -v url |
--trace <file> | 超详细追踪(保存所有通信) | --trace log.txt |
--trace-ascii <file> | 文本格式追踪 | |
-w <format> | 自定义输出格式(如响应时间) | -w "%{time_total}\n" |
1.6. 网络与连接
| 选项 | 说明 | 示例 |
|---|---|---|
-m <sec> | 最大超时时间(秒) | -m 10 |
--connect-timeout <sec> | 连接超时 | --connect-timeout 5 |
-L | 自动跟随重定向(Location) | -L |
--max-redirs <num> | 最大重定向次数 | --max-redirs 10 |
-x <proxy> | 使用代理 | -x http://127.0.0.1:8080 |
-U <user:pass> | 代理认证 | -U user:pass |
1.7. HTTPS 与安全
| 选项 | 说明 | 示例 |
|---|---|---|
-k | 跳过 SSL 证书验证(不安全,仅测试) | -k |
--cert <file> | 客户端证书(PEM 格式) | --cert client.pem |
--key <file> | 私钥文件 | --key key.pem |
--cacert <file> | 自定义 CA 证书 | --cacert ca.pem |
2. 请求示例
2.1. GET 请求
Bash
curl -X GET "https://example.com" \
-H "Authorization: Bearer your_token_here" \
-H "Content-Type: application/json" \
-H "User-Agent: MyApp/1.0"-X GET:显式指定方法(GET 是默认,可省略);-H:添加请求头;- 目标使用
example.com进行测试(返回你发送的内容)。
2.2. POST multipart/form-data
Bash
curl -X POST "https://example.com" \
-F "field1=value1" \
-F "field2=value2" \
-F "file=@/path/to/local/file.txt"-F:表示form字段(自动设置Content-Type: multipart/form-data);@:上传本地文件。
2.3. POST application/x-www-form-urlencoded
Bash
curl -X POST "https://example.com" \
-d "name=张三&age=25&city=北京"特殊字符会被转义(如 “空格” → %20,“张三” → %E5%BC%A0%E4%B8%89)。
2.4. POST JSON
Bash
curl -X POST "https://example.com" \
-H "Content-Type: application/json" \
-d '{
"field1": "value1",
"field2": "value2"
}'-d:发送请求体数据;-H "Content-Type: application/json":必须声明 JSON 类型;- 单引号包裹 JSON 避免 shell 解析问题。