> 网络管理 > curl

curl: 基于 URL 的数据传输/测试万能工具

一个强大的命令行工具,用于使用 URL 与服务器交换数据。它支持 HTTP/HTTPS、FTP/FTPS、SFTP 等多种协议,广泛用于 API 测试、文件上传/下载和故障排除。

curl 是什么?

curl 是 'Client URL' 的缩写,是一个使用 URL 语法传输/接收数据的 CLI 工具。它广泛应用于 Web 开发、API 测试、CI/CD 自动化、运维故障排除等领域。

核心功能

  • 多种协议: HTTP/HTTPS, FTP/FTPS, SFTP, LDAP, SMTP/SMTPS 等(取决于构建选项)。
  • HTTP 控制: 精细控制方法、标头、Cookie、压缩、HTTP/2、重定向、超时、重试等。
  • 上传/下载: 文件下载 (-o/-O)、断点续传 (-C -)、表单上传 (-F)、单个文件上传 (-T)。
  • 安全性: TLS 证书验证(默认启用)、指定信任根 (--cacert)、客户端证书 (--cert/--key)。
  • 自动化友好性: 静默输出 (-s)、失败时退出 (-f)、格式化输出 (-w),适用于脚本。

主要选项 (Shell)

最基本的要求是目标 URL。您可以将多个 URL 用空格分隔,或者从文件 (@file) 中读取。

1. 基本请求和下载

2. HTTP 方法和数据传输

3. 标头、认证、Cookie

4. 输出控制/可靠性

5. 安全/TLS & 代理/诊断

6. 协议/版本

7. 帮助/版本

生成的命令:

请尝试组合命令。

描述:

`curl` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用场景示例 (Shell)

收集了实际工作中常用的请求模式。

输出网页内容

curl https://example.com

基本 GET 请求。

文件下载(跟踪重定向)

curl -O -L https://wordpress.org/latest.zip

-O 原始文件名,-L 跟踪重定向。

JSON GET + 美化显示

curl -s https://api.github.com/users/google | jq

通过 jq 解析/提高可读性。

JSON POST

curl -X POST -H "Content-Type: application/json" -d '{"username":"test"}' https://api.example.com/users

指定标头和正文。

表单文件上传 (multipart)

curl -F "upload_file=@./my-image.png" https://example.com/upload

字段名=upload_file,文件路径用 @ 指定。

Bearer 令牌认证

curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com/me

使用 Authorization 标头。

仅查看响应头

curl -I https://google.com

有助于诊断服务状态/缓存。

失败时非零退出 + 静默

curl -sSf https://example.com/health

-sS -f 组合:脚本友好。

超时 + 重试

curl --connect-timeout 5 --max-time 20 --retry 3 --retry-all-errors https://example.com/api

应对不稳定网络。

使用特定 IP 测试 (--resolve)

curl --resolve 'api.example.com:443:203.0.113.10' https://api.example.com/status

绕过 DNS 测试(保持 SNI)。

安装

大多数系统默认提供,如果没有,则通过包管理器安装。

Debian/Ubuntu

sudo apt update && sudo apt install -y curl

RHEL/CentOS/Fedora

sudo dnf install -y curl

Arch Linux

sudo pacman -S --needed curl

提示和注意事项

有用提示

  • curl vs wget: wget 在大容量/递归下载方面更强,curl 在 API 交互/精细控制方面更强。
  • 引号: 如果 -d/-H 包含 JSON/特殊字符,建议使用单引号包裹。
  • 压缩响应: 使用 --compressed,如果服务器支持,将自动解压,减少传输量。
  • 代理: HTTP 代理设置为 -x,SOCKS5 代理设置为 --socks5。
  • 安全注意事项 (-k): -k/--insecure 仅限于开发·测试使用。在生产环境中,建议设置信任根 (--cacert)。

相关命令

功能上相似或经常一起使用的命令。



相同类别命令