好的,阿杰,我们来系统整理一下 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️⃣ 总结

  1. curl 功能非常强大,适合接口测试、文件传输、网络调试
  2. 常用组合:
    • 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
  3. 生产环境可结合脚本进行自动化测试、接口监控、批量下载等

好,阿杰,我帮你整理了一份 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 JSONcurl -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.comHTTP 或 SOCKS5 代理
使用 Cookiecurl -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删除指定资源

💡 使用技巧

  1. 常用组合: curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' -i -v URL 同时查看请求头、响应头和调试信息。
  2. 配合脚本,可批量测试接口、下载文件或抓取数据。
  3. HTTPS 测试时忽略证书(开发环境): curl -k https://example.com