cURL(CommandLine Uniform Resource Locator)是一個利用URL語法在命令行下工做的文件傳輸工具,1997年首次發行。它支持文件上傳和下載,因此是綜合傳輸工具,但按傳統,習慣稱cURL爲下載工具。cURL還包含了用於程序開發的libcurl。php
詳細介紹參見:wikihtml
curl命令參數不少,這裏只列出我曾經用過、特別是在shell腳本中用到過的那些。
-v/--verbose 小寫的v參數,用於打印更多信息,包括髮送的請求信息,這在調試腳本是特別有用。
-m/--max-time <seconds> 指定處理的最大時長
-H/--header <header> 指定請求頭參數
-s/--slient 減小輸出的信息,好比進度
--connect-timeout <seconds> 指定嘗試鏈接的最大時長
-x/--proxy <proxyhost[:port]> 指定代理服務器地址和端口,端口默認爲1080
-T/--upload-file <file> 指定上傳文件路徑
-o/--output <file> 指定輸出文件名稱
-d/--data/--data-ascii <data> 指定POST的內容
--retry <num> 指定重試次數
-e/--referer <URL> 指定引用地址
-I/--head 僅返回頭部信息,使用HEAD請求
一、curl安裝shell
sudo apt-get install curl
二、GET請求瀏覽器
curl http://www.baidu.com,回車以後,HTML內容打印在屏幕上;若是這裏的URL指向的是一個文件或者一幅圖均可以直接下載到本地。 curl -i "http://www.baidu.com" 顯示所有信息 curl -l "http://www.baidu.com" 只顯示頭部信息 curl -v "http://www.baidu.com" 顯示get請求全過程解析
wget "http://www.baidu.com"也能夠服務器
三、下載cookie
curl –o linjiqin http://www.cnblogs.com/X-knight/,執行後能夠看到下載進度提示,完成100%後會自動退出了,把網頁保存到X-knight中。
它還有一個大寫O的選項,是按照服務器上的文件名保存到本地,若是執行curl –O http://www.cnblogs.com,是會報錯的,提示找不到文件名,若是換成curl –O https://www.cnblogs.com/X-knight/p/10589004.html,就自動保存文件爲10589004.html。curl
四、上傳tcp
-T/--upload-file:往服務器上傳文件
用法:工具
上傳多個文件 curl -T "img[1-1000].png" ftp://example.com/upload/ 上傳多個文件 curl -T "{file1,file2}" http://www.example.com
五、POST方法
-d或--data參數:post請求,用法爲:post
curl -d "id=1&name=test" http://example.com/example.php ,需把請求的參數和URL分開,
同時能夠使用:
curl -d "id=1" -d "name=test" http://example.com/example.php ,至關於提交了兩個參數。當提交的參數值中有特殊字符就須要先轉義。如空格時,就須要轉義成%20。
--data-urlencode參數:能夠自動轉義成特殊字符,無需人工事先轉義。
curl --data-urlencode "name=April 1" http://example.com/example.php
-F或--form:將本地文件上傳到服務器,用法爲:
curl -F "filename=@/home/test/test.pic" http://example.com/example.php 。千萬不能漏掉@符號。
六、設置referer
有時候咱們若是直接請求某個URL不能成功,它須要判斷referer是否正確,那就能夠經過-e或--referer參數模擬
curl --referer http://www.example.com http://www.example.com
七、指定User Agent
-A/--user-agent:假裝成指定的瀏覽器Chrome訪問,用法:
curl -A "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36" www.baidu.com
八、僞造cookie
-b或--cookie:
有兩種用法:
一是指定參數和值:
curl --cookie "name=xxx" http://www.example.com
二是從文件讀取:
curl -b /cookie.txt http://www.example.com
九、保存cookie
-c/--cookie-jar:curl命令執行後保存操做時生成的cookie到文件:
curl -c ./cookie.txt -d username=aaaa -d pwd=****** http://www.example.com
十、定義輸出顯示內容
-w/--write-out: 能夠定義輸出的內容,如經常使用的http碼,tcp鏈接時間,域名解析的時間,握手時間及第一時間響應時間等,很是強大。
一、打印出返回的http碼
curl -o /dev/null -s -w %{http_code} "http://www.baidu.com"
二、打印響應時間
curl -o /dev/null -s -w "time_total: %{time_total}\n" "http://www.baidu.com"