0%

curl

curl

curl是一個同wget為Linux上方便的指令,可把網頁抓下來進行分析。一般來說當工程師撰寫完API後,都需要進行HTTP Request來測試,目前有像postman方便的GUI tool,但如果懶惰或不想啟動較吃資源的GRU tool,此時我們就可以透過curl指令幫助我們測試。

以下我紀錄個人覺得較常用之指令。

curl GET

crul預設為使用GET請求,一般來說指令組成結構為curl [option] [URL]

下方我們會以httpbin作為HTTP Request的URL並說明常用option選項。

補充:httpbin回傳會以JSON格式為內容格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
curl https://httpbin.org/get
//取得對httpbin進行get的回傳內容

curl -I https://httpbin.org/get
//只需要顯示response header
//其實就等於 curl --head hhttps://httpbin.org/get
//-I為簡寫,可透過curl -help查詢

curl -o abc.txt https://httpbin.org/get
//將httpbin進行get的回傳內容儲存下來,並存在一為abc.txt的檔案內
//小寫"o"為下載請求資源到新的檔案
//檔案之名稱與副檔名可自行設定

curl -O https://httpbin.org/get
//同為將httpbin進行get的回傳內容
//大寫"O"為使用指定網址伺服器的檔名作為下載之檔名

curl -L google.com
//檔網頁進行redirect時,連到redirect網址
//可以試看看沒有加上"-L"的狀況

curl https://httpbin.org/get -H "accept: application/json"
//設定request所要挾帶的header
//這邊設定告知伺服器用戶端可解讀JSON內容

curl POST/PUT/……

除了最基本的get,可以使用”-X”決定要進行”GET|POST|PUT|DELETE|PATCH”哪個http method。

在我們使用-X得時候,我們常常會使用到下列的指令。

1
2
3
4
-H 夾帶的header
-d 夾帶post data內容
-u 夾帶使用者帳號密碼
-b 攜帶cookie
1
2
3
4
5
6
7
8
9
curl -X POST "https://httpbin.org/post" -d "email=abc@gmail.com" -H "accept: application/json"
//進行post時,夾帶email內容
//要使用其他的http method 更改-X後面的名稱

curl -X POST "https://httpbin.org/post" -b "num=20"
//設定cookie num=20

curl -u "abc:200" https://httpbin.org/get
//若網頁有使用basic auth,可以使用-u夾帶帳號密碼過驗證