🧪 cURL 新手指南:一邊學習,一邊實作!
cURL 是一個非常實用的工具,不論你是剛開始學寫程式,還是準備踏入資安領域,都一定會遇到它。
這篇文章會從「cURL 是什麼」開始講起,帶你了解它的各種用途、常見的參數,還會告訴你為什麼它在資安測試中非常關鍵。搭配實際網址 https://lab.feifei.tw/test_for_curl.php
,讓你可以馬上動手試試看!
🔰 1. cURL 是什麼?
cURL 是一個可以透過指令列發送網路請求的工具。它可以與多種協定互動(例如 HTTP、HTTPS、FTP…),功能強大,卻又非常簡單。
你可以用它做很多事:
- 發送 API 請求
- 測試網站是否有正常回應
- 模擬表單送出
- 上傳或下載檔案
對開發者來說,它是日常工具;對資安人員來說,它是滲透測試的入門利器!
🧩 2. 哪些時候會用到 cURL?
這裡是幾個最常見的使用情境:
- 測 API 接口
確認伺服器有正確回應資料與狀態碼。 - 網站監控
可配合排程工具定時檢查網站是否活著。 - 模擬各種 HTTP 方法
像GET
、POST
、PUT
、DELETE
等等。 - 測試表單或檔案上傳
開發上很常用。 - 資安測試
看伺服器是否不小心開放了TRACE
、OPTIONS
等敏感方法。
🔐 3. 為什麼資安人員要會用 cURL?
cURL 在資安檢測中非常有用,因為你可以精準控制每個請求的細節。例如:
- 測試是否開放危險方法
例如DELETE
、PUT
,可能讓駭客直接刪資料。 - 觀察網站標頭資訊
像是伺服器類型、是否支援 HTTPS 強制等。 - 模擬邊界行為
用奇怪參數測試伺服器的容錯能力,看能不能發現漏洞。
總之,學會 cURL,你就能用「最直接的方式」和伺服器對話!
🔧 4. 各種參數下會用什麼 HTTP 方法?
很多人以為 curl
只會送 GET
,其實它很聰明,會根據你加的參數自動選擇最適合的方法。
讓我們一邊看說明,一邊搭配 https://lab.feifei.tw/test_for_curl.php
這個測試網址操作看看吧!
✅ 預設情況:GET
curl https://lab.feifei.tw/test_for_curl.php
沒加參數時就是最單純的 GET
,直接抓網頁內容。
📄 -I
:使用 HEAD
,只抓標頭
curl -I https://lab.feifei.tw/test_for_curl.php
這個只會顯示標頭(Header),不會有內容。常用來看網站狀態。
📤 -d
或 --data
:變成 POST
curl -d "name=Phoebe&age=18" https://lab.feifei.tw/test_for_curl.php
有加 -d
,cURL 就會用 POST
,把資料當成表單送出去。
✋ -X POST
:強制用 POST
(不帶資料)
curl -X POST https://lab.feifei.tw/test_for_curl.php
只是改成 POST,但沒有資料。如果要送資料,記得要加 -d
。
🧱 -X PUT
/ -X DELETE
:手動指定方法
curl -X PUT -d "name=Phoebe" https://lab.feifei.tw/test_for_curl.php
curl -X DELETE https://lab.feifei.tw/test_for_curl.php?id=123
這兩個方法在 API 開發、測試中非常常見。
📁 --upload-file
或 -T
:自動用 PUT
上傳檔案
curl -T ./file.txt https://lab.feifei.tw/test_for_curl.php
模擬檔案上傳,常見於 RESTful API。
📎 -F
或 --form
:POST 且支援多部分表單
curl -F "[email protected]" -F "name=Phoebe" https://lab.feifei.tw/test_for_curl.php
這就是模擬像網頁表單那種帶檔案的 POST 請求。
🧪 -X OPTIONS
與 -X TRACE
:資安用途
curl -X OPTIONS https://lab.feifei.tw/test_for_curl.php
curl -X TRACE -d "hello" https://lab.feifei.tw/test_for_curl.php
OPTIONS
:看伺服器支援哪些方法。TRACE
:讓伺服器「回顯」你送的請求。容易被拿來做攻擊,因此不少網站會禁用。
🧠 常見參數與對應方法總覽:
使用方式 | 實際 HTTP 方法 | 用途說明 |
---|---|---|
curl URL |
GET | 預設抓內容 |
-I |
HEAD | 只抓標頭 |
-d / --data |
POST | 傳送表單資料 |
-T / --upload-file |
PUT | 上傳檔案 |
-F / --form |
POST | 傳送多部分表單(含檔案) |
-X POST |
POST | 指定使用 POST,不送資料 |
-X DELETE |
DELETE | 測試刪除 API |
-X OPTIONS |
OPTIONS | 測試支援方法 |
-X TRACE |
TRACE | 測試伺服器是否回顯請求內容 |
🔍 5. -I
vs -X GET
:看起來一樣,其實不一樣!
這是一個常見迷思,我們來解釋清楚 👇
🔸 -I
預設就是 HEAD
方法
curl -I https://lab.feifei.tw/test_for_curl.php
只會要求伺服器回傳標頭,不含任何內容。如果伺服器沒支援 HEAD
,會回傳錯誤(如 405)。
🔸 -X GET
是指定 GET
請求
curl -X GET https://lab.feifei.tw/test_for_curl.php
這就會回傳完整內容,包含你要的資料。
❓如果 -I -X GET
同時用會怎樣?
curl -I -X GET https://lab.feifei.tw/test_for_curl.php
雖然實際用的是 GET
方法,但因為 -I
的關係,你只會看到標頭,不會看到內容。
這是因為:
-X GET
控制「請求方法」-I
控制「顯示結果」
看起來像是 HEAD
,其實是 GET
。
✅ 總結:學會 cURL,你能做更多事!
- 🔍 能快速測 API、Debug 網站
- 🔐 能進行基本資安測試
- 🧠 能理解請求與伺服器行為
🎯 立即練習吧!
打開終端機,針對這個網址動手操作:
https://lab.feifei.tw/test_for_curl.php
想知道伺服器收到的內容嗎?這支頁面會直接顯示你發出的請求,讓你清楚看到 HTTP 方法、參數、Header 等資訊!
🧪 推薦挑戰:
- 試著用
-X PUT
傳資料 - 看看
-F
傳檔案的差別 - 測試
TRACE
回傳的內容 - 搭配
-H
加自訂標頭(如 Authorization)
如果你學會這篇教學內容,就代表你已經踏入了 cURL 世界的門檻,無論未來是學 API 還是滲透測試,它都會是你最重要的好夥伴之一!
讓我們一起成為真正懂 HTTP 的人~