强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

curl 深度教程

curl 深度教程

curl(Client URL)是世界上最广泛使用的命令行数据传输工具之一,支持 HTTP、HTTPS、FTP、SMTP 等数十种协议。从简单的网页抓取到复杂的 API 调试,从容器健康检查到大规模自动化测试,curl 无处不在。


为什么写这个教程?

curl 的 man page 超过 5000 行,官网列出 250+ 个命令行选项。大多数开发者只会用到 curl https://example.com 这一层面,但 curl 的真正威力远不止于此:

  • 🔍 精确控制每一个 HTTP 请求细节
  • 🔐 支持从 Basic 到 OAuth2 的全链路认证
  • 📦 原生支持 multipart/form-data 文件上传
  • 🛡️ TLS/SSL 证书验证与客户端证书
  • 📊 请求时间分析与连接诊断
  • 🐳 Docker 健康检查与容器间通信
  • 📝 完整的脚本化能力,可嵌入 CI/CD 流水线

教程目录

本教程共 15 章,从基础概念到高级实践,适合各层次开发者:

章节标题关键内容
01curl 简介与生态历史、设计理念、与 wget/httpie 对比
02安装与编译多平台安装、版本管理、TLS 后端、libcurl
03基本用法GET/POST、请求头/响应头、输出控制
04HTTP 方法详解GET/POST/PUT/DELETE/PATCH/OPTIONS/HEAD
05请求头与响应头自定义头、Cookie、认证头、Content-Type
06认证机制Basic/Bearer/OAuth2/客户端证书/NTLM/Kerberos
07POST 数据与上传表单、JSON、文件上传、multipart、编码
08下载与传输管理断点续传、限速、进度条、并行下载
09传输选项与网络调优超时、重试、代理、SOCKS、连接池
10TLS/SSL 安全证书验证、自签名证书、HSTS、密码套件
11脚本编写变量、配置文件、批量请求、错误处理
12调试与诊断-v/–trace、时间分析、连接诊断
13API 测试REST/GraphQL/gRPC、自动化测试、断言
14Docker 中的 curl健康检查、API 测试、容器间通信
15最佳实践安全、性能、脚本化、常见陷阱

阅读建议

  • 初学者:从第 01-03 章开始,掌握基本概念和用法
  • 后端开发者:重点阅读第 04-07 章(HTTP 方法与数据传输)和第 13 章(API 测试)
  • 运维/SRE:重点阅读第 08-09 章(传输管理)、第 12 章(调试)和第 14 章(Docker)
  • 安全工程师:重点阅读第 06 章(认证)和第 10 章(TLS/SSL)
  • 效率追求者:直接跳到第 15 章(最佳实践)

环境说明

本教程中所有命令示例均基于以下环境:

项目版本/说明
curl8.x(大部分命令兼容 7.68+)
操作系统Linux(命令同样适用于 macOS)
ShellBash 5.x
测试服务httpbin.org、example.com、localhost

⚠️ 注意:curl 的行为和可用选项可能因编译选项和版本不同而有差异。使用 curl --version 查看你的 curl 版本和支持的特性。


快速开始

如果你已经安装了 curl,可以直接体验:

# 查看版本和支持的协议
curl --version

# 发送一个简单的 GET 请求
curl https://httpbin.org/get

# 带参数的 GET 请求
curl "https://httpbin.org/get?name=curl&version=8"

# 发送 POST 请求(JSON)
curl -X POST https://httpbin.org/post \
  -H "Content-Type: application/json" \
  -d '{"hello": "world"}'

# 下载文件并显示进度
curl -LO https://example.com/file.zip

# 调试模式查看完整请求/响应
curl -v https://httpbin.org/get

扩展阅读