轉自:https://www.cnblogs.com/X-knight/p/10589961.html
簡介:
cURL(CommandLine Uniform Resource Locator)是一個利用URL語法在命令行下工作的文件傳輸工具,1997年首次發行。它支持文件上傳和下載,所以是綜合傳輸工具。
curl命令參數很多,這里只列舉一部分。 -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請求
1、curl安裝
|
1
|
sudo apt-get install curl
|
2、GET請求
|
1
2
3
4
|
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"也可以
3、下載
|
1
|
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。
4、上傳
|
1
|
-T/--upload-file:往服務器上傳文件
|
用法:
|
1
2
3
4
5
|
上傳多個文件
curl -T "img[1-1000].png" ftp://example.com/upload/
上傳多個文件
curl -T "{file1,file2}" http://www.example.com
|
5、POST方法
-d或--data參數:post請求,用法為:
|
1
|
curl -d "id=1&name=test" http://example.com/example.php ,需把請求的參數和URL分開,
|
同時可以使用:
|
1
|
curl -d "id=1" -d "name=test" http://example.com/example.php ,相當於提交了兩個參數。當提交的參數值中有特殊字符就需要先轉義。如空格時,就需要轉義成%20。
|
--data-urlencode參數:可以自動轉義成特殊字符,無需人工事先轉義。
|
1
|
curl --data-urlencode "name=April 1" http://example.com/example.php
|
-F或--form:將本地文件上傳到服務器,用法為:
|
1
|
curl -F "filename=@/home/test/test.pic" http://example.com/example.php 。千萬不能漏掉@符號。
|
6、設置referer
有時候我們如果直接請求某個URL不能成功,它需要判斷referer是否正確,那就可以通過-e或--referer參數模擬
|
1
|
curl --referer http://www.example.com http://www.example.com
|
7、指定User Agent
-A/--user-agent:偽裝成指定的瀏覽器Chrome訪問,用法:
|
1
|
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
|
8、偽造cookie
-b或--cookie:
有兩種用法:
一是指定參數和值:
|
1
|
curl --cookie "name=xxx" http://www.example.com
|
二是從文件讀取:
|
1
|
curl -b /cookie.txt http://www.example.com
|
9、保存cookie
-c/--cookie-jar:curl命令執行后保存操作時生成的cookie到文件:
|
1
|
curl -c ./cookie.txt -d username=aaaa -d pwd=****** http://www.example.com
|
10、定義輸出顯示內容
-w/--write-out: 可以定義輸出的內容,如常用的http碼,tcp連接時間,域名解析的時間,握手時間及第一時間響應時間等,非常強大。
1、打印出返回的http碼
|
1
|
curl -o /dev/null -s -w %{http_code} "http://www.baidu.com"
|
2、打印響應時間
|
1
|
curl -o /dev/null -s -w "time_total: %{time_total}\n" "http://www.baidu.com"
|
