前言
在Linux中curl是一個利用URL規則在命令行下工作的文件傳輸工具,可以說是一款很強大的http命令行工具。它支持文件的上傳和下載,是綜合傳輸工具,但按傳統,習慣稱url爲下載工具。curl命令在日常開發或運維中都經常用到,這裏和大家總結下curl命令的常用用法。
基礎用法
curl http://www.baidu.com
執行後,www.baidu.com 的html就會顯示在屏幕上了。
保存訪問的網頁
方式一 使用linux的重定向功能保存
curl http://www.baidu.com >> linux.html
方式二 使用curl的內置option:-o(小寫)保存網頁
curl -o linux.html http://www.baidu.com
測試網頁返回值
curl -o /dev/null -s -w %{http_code} http://www.baidu.com
/dev/null可以理解爲/dev路徑下的空文件;該命令將command命令的標準輸出輸出到空文件中;-s 表示靜默處理 -w 輸出對應的狀態碼;
自動跳轉
有的網址是自動跳轉的。使用`-L`參數,curl就會跳轉到新的網址。下面的命令會自動跳轉到www.sina.com.cn
curl -L http://www.sina.com
顯示頭信息
curl -i http://www.baidu.com
發送表單信息
發送表單信息有GET和POST兩種方法。GET方法相對簡單,只要把數據附在網址後面就行。
curl http://www.baidu.com/test?name=aiqinhai
POST方法必須把數據和網址分開,curl就要用到--data參數。curl默認的HTTP動詞是GET,使用`-X`參數可以支持其他動詞。
curl -X POST --data "name=aiqinhai" http://www.baidu.com/test
如果你的數據沒有經過表單編碼,還可以讓curl爲你編碼,參數是`--data-urlencode`。
curl -X POST--data-urlencode "name=ai qin hai" http://www.baidu.com/test
僞造refere
很多服務器會檢查http訪問的referer從而來控制訪問。比如:你是先訪問首頁,然後再訪問首頁中的郵箱頁面,這裏訪問郵箱的referer地址就是訪問首頁成功後的頁面地址,如果服務器發現對郵箱頁面訪問的referer地址不是首頁的地址,就斷定那是個盜連了curl中內置option:-e可以讓我們設定referer
curl -e "www.baidu.com" http://mail.baidu.com
下載文件
使用內置option:-o(小寫)
curl -o aiqinhai.jpg http://www.baidu.com/aiqinhai.jpg
使用內置option:-O(大寫)
curl -O http://www.baidu.com/aiqinhai.jpg
增加頭信息
有時需要在http request之中,自行增加一個頭信息。--header參數就可以起到這個作用。
curl --header "Content-Type:application/json" http://www.baidu.com
或
curl -H "Content-Type:application/json" http://www.baidu.com
HTTP認證
有些網域需要HTTP認證,這時curl需要用到--user參數。
curl --user name:password http://www.baidu.com