什麼是 curl?
curl 是 'Client URL' 的縮寫,是一個 CLI 工具,使用 URL 語法傳輸/接收數據。它廣泛應用於網頁開發、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. 幫助/版本
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`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 Token 認證
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 與 wget: wget 強於大容量/遞歸下載,curl 強於 API 交互/精細控制。
- 引號: 如果 -d/-H 中包含 JSON/特殊字符,建議使用單引號將其括起來。
- 壓縮響應: 使用 --compressed 可以讓伺服器在支持時自動解壓,減少傳輸量。
- 代理: HTTP 代理使用 -x 設置,SOCKS5 代理使用 --socks5 設置。
- 安全注意事項(-k): -k/--insecure 僅限於開發·測試使用。在生產環境中建議設置信任根證書(--cacert)。