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)。