curl
curl(Client URL)在命令列對 URL 做傳輸,最常用在 HTTP/HTTPS:下載、看標頭、呼叫 API。Windows 10 之後、macOS、Linux 大多已內建。它不取代瀏覽器,但比開開發者工具更快確認「伺服器到底回了什麼」。
日常 20%
curl https://example.com
curl -I https://example.com
curl -L https://example.com
curl -o page.html https://example.com
curl -O https://example.com/file.zip
curl -v https://example.com
| 選項 | 作用 |
|---|---|
| (無) | GET,把回應主體印到終端機 |
-I / --head |
只要標頭(狀態碼、Content-Type、Location) |
-L |
跟隨 HTTP 重新導向 |
-o 檔名 |
存成指定檔名 |
-O |
用 URL 最後一段當檔名 |
-v |
顯示請求/回應與 TLS 握手,除錯首選 |
-sS |
安靜模式但保留錯誤 |
看狀態碼與標頭比看整頁 HTML 更有用:
Windows PowerShell 裡 curl 可能是 Invoke-WebRequest 的別名。若行為怪異,改叫 curl.exe。
送資料(API)
curl -X POST https://httpbin.org/post -d "name=ada"
curl -X POST https://httpbin.org/post \
-H "Content-Type: application/json" \
-d "{\"name\":\"ada\"}"
-d 預設把方法改成 POST。自訂標頭用 -H。需要帳密時,用伺服器文件指定的方式(例如 -u user:pass 或帶 Token 的 -H),不要把密碼寫進會進 git 的腳本。
常見狀態碼:200 成功、301/302 轉址(記得 -L)、401/403 認證或權限、404 沒這資源、5xx 伺服器端錯誤。連不上時 curl 會印連線錯誤——那是網路層,先回到 ping。
測試「這個 TCP 連接埠有沒有人聽」也可以,但本站以 HTTP 為主;連接埠盤點請在授權環境用 Nmap。
教學影片
2 cool (web) things to do in Linux(NetworkChuck,Linux for Hackers EP 8)後半集中示範:不用瀏覽器、用 curl 打自己的網站,再用 -i 看回應標頭。節奏快、和「第一次用 curl」最接近。
curl from start to end(Daniel Stenberg,curl 作者)從你按下 Enter 之後發生什麼講起:解析 URL、DNS、TCP、TLS,再到送出 HTTP。約 70 分鐘,適合已經會基本 GET、想知道「為什麼有時卡在 TLS」的人。
Mastering curl with Daniel Stenberg 是作者的完整命令列課程(約 3 小時 40 分),涵蓋選項、設定檔、HTTP 細節與除錯。當手冊用即可,不必一次看完。官方還有更新過的短版,見 curl 影片列表。
官方學習資源
官方文件與 YouTube
curl.se、man page、The Art of Scripting HTTP Requests、影片列表。作者頻道:Daniel Stenberg。