好的,阿杰,我们来系统整理一下 curl
命令详解,包括基础用法、参数选项以及常见场景示例。
curl
命令详解
curl
是 Linux/Windows/macOS 下的 命令行网络请求工具,支持 HTTP、HTTPS、FTP、SMTP 等多种协议。
它常用于 调试接口、下载文件、发送请求、测试网络 等场景。
1️⃣ 基本语法
curl [options] [URL]
[options]
:命令选项,用于指定请求类型、头信息、数据等[URL]
:请求的目标地址
2️⃣ 常用选项
参数 | 作用 |
---|---|
-X | 指定请求方法(GET, POST, PUT, DELETE 等) |
-H | 添加请求头(Header) |
-d | 发送请求体数据(Data) |
-F | 发送表单数据,支持文件上传 |
-o | 输出到文件 |
-i | 显示响应头 |
-I | 仅显示响应头 |
-v | 显示详细请求/响应过程(调试用) |
-u | 基本认证(用户名:密码) |
-L | 跟随重定向(HTTP 3xx) |
-s | 静默模式,不显示进度条 |
-k | 忽略 HTTPS 证书验证(不安全) |
3️⃣ GET 请求示例
curl http://example.com
- 默认就是 GET 方法
- 加
-i
可以显示响应头:
curl -i http://example.com
- GET 请求带参数:
curl "http://example.com/api?name=ajie&age=18"
4️⃣ POST 请求示例
发送 JSON 数据
curl -X POST http://example.com/api \
-H "Content-Type: application/json" \
-d '{"name":"ajie","age":18}'
发送表单数据
curl -X POST http://example.com/login \
-F "username=ajie" \
-F "password=123456"
5️⃣ 文件上传/下载
上传文件
curl -X POST http://example.com/upload \
-F "file=@/path/to/file.txt"
下载文件
curl -o localfile.txt http://example.com/file.txt
-O
保存为服务器原文件名
curl -O http://example.com/file.txt
6️⃣ 设置请求头
curl -H "Authorization: Bearer your_token" \
-H "Accept: application/json" \
http://example.com/api
- 可多次使用
-H
添加多个请求头
7️⃣ 跟随重定向
curl -L http://example.com/redirect
- 默认
curl
不会自动跟随 3xx 重定向,需要-L
8️⃣ HTTP 基本认证
curl -u username:password http://example.com/secure
- 等价于发送
Authorization: Basic base64(username:password)
9️⃣ 调试请求
curl -v http://example.com/api
-v
输出请求头、响应头、重定向信息--trace trace.log
或--trace-ascii trace.txt
保存详细调试日志
10️⃣ 高级示例
使用代理
curl -x http://127.0.0.1:1080 http://example.com
使用 cookie
curl -b "sessionid=123456" http://example.com
限制请求速度
curl --limit-rate 100K http://example.com/file.zip
11️⃣ 总结
curl
功能非常强大,适合接口测试、文件传输、网络调试- 常用组合:
- GET 调试接口:
curl -i -v URL
- POST 发送 JSON:
curl -X POST -H "Content-Type: application/json" -d '{}' URL
- 文件下载:
curl -O URL
- 文件上传:
curl -F "file=@file" URL
- GET 调试接口:
- 生产环境可结合脚本进行自动化测试、接口监控、批量下载等
好,阿杰,我帮你整理了一份 curl 常用场景命令大全表,涵盖接口测试、文件上传下载、认证、调试等,方便快速查用。
curl
常用命令大全
场景 | 命令示例 | 说明 |
---|---|---|
基本 GET 请求 | curl http://example.com | 默认 GET 方法 |
GET 显示响应头 | curl -i http://example.com | 输出响应头和内容 |
GET 带参数 | curl "http://example.com/api?name=ajie&age=18" | URL 参数传递 |
POST JSON | curl -X POST http://example.com/api -H "Content-Type: application/json" -d '{"name":"ajie"}' | 发送 JSON 数据 |
POST 表单 | curl -X POST http://example.com/login -F "username=ajie" -F "password=123456" | 发送表单数据 |
文件上传 | curl -X POST http://example.com/upload -F "file=@/path/to/file.txt" | 上传本地文件 |
文件下载 | curl -o localfile.txt http://example.com/file.txt | 保存为指定文件名 |
文件下载保留服务器名 | curl -O http://example.com/file.txt | 保留服务器端文件名 |
设置请求头 | curl -H "Authorization: Bearer token" -H "Accept: application/json" http://example.com/api | 可多次使用 -H 添加头 |
跟随重定向 | curl -L http://example.com/redirect | 默认不跟随 3xx,需要 -L |
HTTP 基本认证 | curl -u username:password http://example.com/secure | 自动生成 Basic Auth 头 |
调试请求 | curl -v http://example.com/api | 输出请求和响应详细信息 |
保存调试日志 | curl --trace-ascii trace.txt http://example.com | 保存请求响应信息 |
使用代理 | curl -x http://127.0.0.1:1080 http://example.com | HTTP 或 SOCKS5 代理 |
使用 Cookie | curl -b "sessionid=123456" http://example.com | 发送指定 Cookie |
限制下载速度 | curl --limit-rate 100K http://example.com/file.zip | 限速下载 |
静默模式 | curl -s -o /dev/null http://example.com | 不显示进度条和输出 |
HEAD 请求 | curl -I http://example.com | 只获取响应头,不返回内容 |
PUT 请求 | curl -X PUT -d '{"name":"ajie"}' http://example.com/api | 更新资源 |
DELETE 请求 | curl -X DELETE http://example.com/api/123 | 删除指定资源 |
💡 使用技巧:
- 常用组合:
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' -i -v URL
同时查看请求头、响应头和调试信息。 - 配合脚本,可批量测试接口、下载文件或抓取数据。
- HTTPS 测试时忽略证书(开发环境):
curl -k https://example.com
发表回复