🐧 Linux curl 命令详解

🐧 Linux curl 命令详解


🎯 学习目标

  1. 掌握 curl 命令的基本结构与常用参数。
  2. 熟悉使用 curl 进行 HTTP/HTTPS 请求、文件下载、上传等操作。
  3. 能够结合 -X, -d, -H 等选项进行 RESTful API 测试。
  4. 了解 curl 的高级功能如 cookies 管理、SSL/TLS 设置及输出重定向。

⚡ 核心重点(知识点提炼)

功能 命令 说明
发送GET请求 curl [URL] 获取网页内容或API响应
发送POST请求 curl -X POST -d "param1=value1&param2=value2" [URL] 提交表单数据
文件下载 curl -O [URL] 下载文件并保存为原名
文件上传 curl -F "file=@filename" [URL] 使用 multipart/form-data 方式上传文件
设置头部信息 curl -H "Content-Type: application/json" 自定义HTTP头
显示响应头 curl -I [URL] 只显示HTTP响应头

📚 详细讲解

🧩 一、基本语法格式

curl [options] [URL]
  • OPTIONS
    • -X:指定请求方法(GET, POST, PUT, DELETE 等)
    • -d:发送的数据(用于 POST/PUT 请求),格式可以是键值对或 JSON
    • -H:添加自定义的 HTTP 头部
    • -o:将输出保存到文件,保留原始文件名
    • -O:将输出保存到文件,但使用远程文件名
    • -L:跟随重定向
    • -u:提供用户名和密码(用于基本认证)
    • -v:显示详细的请求和响应过程
    • -i:在输出中包含 HTTP 响应头
    • -I:仅获取 HTTP 响应头
    • -F:模拟表单提交,支持文件上传
    • -k:忽略 SSL 证书验证(不推荐用于生产环境)
    • -b / -c:读取/写入 cookie 文件

🔍 二、发送 GET 请求

1. 获取网页内容

最简单的用法就是直接访问一个 URL:

curl http://example.com

这会打印出该网页的内容到标准输出。

2. 仅获取响应头

如果你只关心服务器返回的 HTTP 响应头,可以使用 -I 选项:

curl -I http://example.com

输出示例:

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 Jun 2025 00:00:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 612
Connection: keep-alive

🛠 三、发送 POST 请求

要向服务器发送数据,通常需要使用 POST 方法。比如提交表单数据:

curl -X POST -d "name=JohnDoe&email=johndoe@example.com" https://api.example.com/register

对于更复杂的场景,如发送 JSON 数据,你需要设置相应的 Content-Type 头部:

curl -X POST -H "Content-Type: application/json" -d '{"name":"JohnDoe","email":"johndoe@example.com"}' https://api.example.com/register

🕵️‍♂️ 四、文件下载与上传

1. 文件下载

下载文件时,如果希望保留原文件名,可以使用 -O

curl -O http://example.com/path/to/file.zip

若想指定下载后的文件名,则使用 -o

curl -o myfile.zip http://example.com/path/to/file.zip

2. 文件上传

使用 -F 参数可以轻松实现文件上传:

curl -F "file=@/path/to/local/file.txt" https://upload.example.com/upload

🧠 五、处理 Cookies

当你需要发送特定的 Cookie 给服务器时,可以使用 -b 选项:

curl -b "sessionid=abc123;user=john" https://api.example.com/userinfo

如果你想让 curl 自动管理 Cookie,并将其保存到文件以便后续请求使用,可以这样做:

curl -c cookies.txt https://login.example.com

之后,在其他请求中加载这些 Cookie:

curl -b cookies.txt https://api.example.com/userinfo

🧱 六、SSL/TLS 安全连接

当访问 HTTPS 站点时,curl 默认会验证服务器提供的 SSL 证书。如果遇到证书问题,你可以选择跳过验证(不推荐):

curl -k https://insecure.example.com

更好的做法是手动安装正确的 CA 证书,或者确保系统已经配置了正确的 CA 证书库。


📊 七、实战案例:RESTful API 测试

假设你正在开发一个 RESTful API,想要测试其不同端点的功能。以下是几个例子:

1. 创建新资源

curl -X POST -H "Content-Type: application/json" -d '{"title":"New Post","author":"John Doe"}' https://api.example.com/posts

2. 更新现有资源

curl -X PUT -H "Content-Type: application/json" -d '{"title":"Updated Post Title"}' https://api.example.com/posts/123

3. 删除资源

curl -X DELETE https://api.example.com/posts/123

4. 获取资源列表

curl https://api.example.com/posts

🧪 实验练习题(动手练一练)

  1. 使用 curl 向你的 Web 服务器发送一个带有自定义头部的 GET 请求,并检查响应头是否正确接收到了自定义头部。
  2. 尝试通过 curl 发送 POST 请求,上传一个本地文件到支持文件上传的 Web 服务。
  3. 编写一个 Bash 脚本,利用 curl 自动化地从多个 URL 中抓取数据并保存到本地。
  4. 在安全环境下测试如何使用 curl 处理登录流程(包括发送凭证、保存和发送 Cookie)。
  5. 结合 grepawk 分析 curl 输出的日志信息,提取有用的数据。

🧩 拓展阅读

  • man curl:查看完整帮助文档
  • curl --help:快速查看可用选项
  • 《HTTP: The Definitive Guide》——深入理解 HTTP 协议
  • 《RESTful Web Services》——探索 REST 架构风格

🎉 恭喜!你已经掌握了 Linux 中非常实用且强大的网络工具之一 curl,下一章节我们将进入《Linux jq 命令解析JSON数据》的学习,敬请期待!🚀


posted @ 2025-06-23 23:27  红尘过客2022  阅读(367)  评论(0)    收藏  举报