首頁 > 網路管理 > curl

curl: 基於 URL 傳輸/測試數據的萬能工具

這是一個強大的命令行工具,用於使用 URL 與伺服器交換數據。它支持 HTTP/HTTPS、FTP/FTPS、SFTP 等多種協議,廣泛應用於 API 測試、文件上傳/下載和故障排除。

什麼是 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)。

相關命令

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



相同類別命令