Linux curl命令的使用

    在Linux中curl是一個利用URL規則在命令行中工做的文件傳輸工具是一個很是強大的http命令工具,支持文件的上傳和下載。html

1 - 基本語法格式

curl [option] [url]

## 參數[option]說明

-A/--user-agent <string>    設置用戶代理髮送給服務器
-b/--cookie <name=string/file>    cookie字符串或文件讀取位置
-c/--cookie-jar <file>   在操做結束後把cookie寫入到文件file中
-C/--continue-at  <offset>  斷點續傳
-D/--dump-header  <file>  把header信息寫入到該文件中
-e/--referer  來源地址
-f/--fail  鏈接失敗時不顯示http錯誤
-o/--output  把輸出寫到該文件中
-O/--remote-name  把輸出寫到該文件中,保留遠程文件的文件名
-r/--range  <range>  檢索來自HTTP/1.1或FTP服務器字節範圍
-s/--silent  靜音模式。不輸出任何東西
-T/--upload-file <file>  上傳文件
-u/--user  <user[:password]>  設置服務器的用戶名密碼
-w/--write-out [format]  什麼輸出完成後
-x/--proxy <host[:port]>  在給定的端口上使用HTTP代理
-#/--progress-bar   進度條顯示當前的傳送狀態

 

2 - 基本用法

1)基本用法linux

curl http://www.baidu.com

經常使用於沒有安裝桌面的Linux服務器測試一個服務器是否能夠訪問一個網站,若是可訪問該命令會返回html內容chrome

2)保存訪問的網頁windows

## 1.使用linux的重定向功能保存
curl http://www.linux.com >> linux.html

## 2. 使用curl的內部option:-o(小寫)保存網頁
curl -o linux.html http://www.linux.com

## 3.使用curl的內部option:-O(大寫)保存網頁中的文件
curl -O http://www.linux.com//hello.sh

3)測試請求網頁或者接口的返回狀態碼瀏覽器

curl -o /dev/null -s -w %{http_code} www.linux.com

4)指定proxy服務器以及其端口bash

curl -x 192.168.100.100:1080 http://www.linux.com

5)cookie服務器

    有些網站是使用cookie來記錄session信息。對於chrome這樣的瀏覽器,能夠輕易處理cookie信息,但在curl中只要增長相關參數也是能夠很容易的處理cookiecookie

## 1.保存http的response裏面的cookie信息
curl -c cookiec.txt  http://www.linux.com 
## 執行後cookie信息就被存到了cookiec.txt裏面了

## 2.保存http的response裏面的header信息。內置option: -D
curl -D cookied.txt http://www.linux.com
## 執行後cookie信息就被存到了cookied.txt裏面了
## 注意:-c(小寫)產生的cookie和-D裏面的cookie是不同的。

## 3.使用cookie,不少網站都是經過監視你的cookie信息來判斷你是否按規矩訪問他們的網站的,所以咱們須要使用保存的
## cookie信息cookie.txt
curl -b cookiec.txt http://www.linux.com

6)模仿瀏覽器session

    有些網站須要使用特定的瀏覽器去訪問他們,有些還須要使用某些特定的版本。curl內置option:-A可讓咱們指定瀏覽器去訪問網站curl

curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com

7)僞造referer(盜鏈)

    不少服務器會檢查http訪問的referer從而來控制訪問。好比:你是先訪問首頁,而後再訪問首頁中的郵箱頁面,這裏訪問郵箱的referer地址就是訪問首頁成功後的頁面地址,若是服務器發現對郵箱頁面訪問的referer地址不是首頁的地址,就判定那是個盜鏈。curl中內置option:-e可讓咱們設定referer,這樣就會讓服務器其覺得你是從www.linux.com點擊某個連接過來的

curl -e "www.linux.com" http://mail.linux.com

8)循環下載

    有時候下載圖片能夠能是前面的部分名稱是同樣的,就最後的尾椎名不同

curl -O http://www.linux.com/dodo[1-5].JPG
## 這樣就會把dodo1,dodo2,dodo3,dodo4,dodo5所有保存下來

 

9)下載重命名

curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG
##因爲下載的hello與bb中的文件名都是dodo1,dodo2,dodo3,dodo4,dodo5。所以第二次下載的會把第一次下載的覆蓋,這樣就## 須要對文件進行重命名。
curl -o #1_#2.JPG http://www.linux.com/{hello,bb}/dodo[1-5].JPG
## 這樣在hello/dodo1.JPG的文件下載下來就會變成hello_dodo1.JPG,其餘文件依此類推,從而有效的避免了文件被覆蓋

10)分塊下載

有時候下載的東西會比較大,這個時候咱們能夠分段下載。使用內置option:-r

curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG

## 合併,這樣就能夠查看dodo1.JPG的內容了​​​​​​​
cat dodo1_part* > dodo1.JPG

11)經過ftp下載文件

curl能夠經過ftp下載文件,curl提供兩種從ftp中下載的語法

curl -O -u 用戶名:密碼 ftp://www.linux.com/dodo1.JPG
curl -O ftp://用戶名:密碼@www.linux.com/dodo1.JPG

12)斷點續傳

    在windows中,咱們可使用迅雷這樣的軟件進行斷點續傳。curl能夠經過內置option:-C一樣能夠達到相同的效果
若是在下載dodo1.JPG的過程當中忽然掉線了,可使用curl -C -O斷點續傳

curl -C -O http://www.linux.com/dodo1.JPG

13)上傳文件

    curl不單單能夠下載文件,還能夠上傳文件。經過內置option:-T來實現

curl -T dodo1.JPG -u 用戶名:密碼 ftp://www.linux.com/img/
相關文章
相關標籤/搜索