在Linux中curl是一個利用URL規則在命令行中工做的文件傳輸工具是一個很是強大的http命令工具,支持文件的上傳和下載。html
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 進度條顯示當前的傳送狀態
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/