最近特別對(duì)Shell這塊感興趣泞歉,總想用腳本去寫(xiě)點(diǎn)什么。上次為項(xiàng)目寫(xiě)了一個(gè)打包腳本匿辩,費(fèi)了九牛二虎之力腰耙,但是感覺(jué)還不錯(cuò),很有成就感铲球,而且還被領(lǐng)導(dǎo)表?yè)P(yáng)了挺庞。上周四填寫(xiě)工時(shí)的時(shí)候,發(fā)現(xiàn)每次手動(dòng)去寫(xiě)一些重復(fù)的事情的時(shí)候很麻煩稼病,于是就想通過(guò)腳本批量化處理选侨,就想到了Bash中的一個(gè)強(qiáng)大命令Curl。下面為大家介紹一些Curl的強(qiáng)大之處然走,同時(shí)也當(dāng)做一個(gè)記錄學(xué)習(xí)的過(guò)程援制,當(dāng)不久之后,自己可能會(huì)遺忘自己學(xué)習(xí)過(guò)的東西芍瑞,但是可以通過(guò)自己寫(xiě)的文字快速回憶起那時(shí)學(xué)過(guò)的東西晨仑,感覺(jué)很有用。
英文版資料:https://curl.haxx.se/docs/httpscripting.html
1.訪(fǎng)問(wèn)一個(gè)網(wǎng)址拆檬。
curl http://www.baidu.com
這個(gè)是最簡(jiǎn)單的洪己,他會(huì)把你訪(fǎng)問(wèn)的地址已文字的方式返回。比如下邊直接返回的json的字符串
2.保存頁(yè)面&&下載文件
curl option : -o
curl -o baidu.html http://www.baidu.com
下載一張圖片
curl -o girl.jpg http://hostname.com/girl.jpg
如果想下載圖片的名字和服務(wù)器保持一致 -O 大寫(xiě)的O
curl -O http://hostname.com/girl.jpg
可以看到屏幕上出現(xiàn)一個(gè)下載頁(yè)面進(jìn)度指示竟贯,等到100%答捕,就保存完成了.
3.GET訪(fǎng)問(wèn)一個(gè)接口。其實(shí)和第一個(gè)類(lèi)似澄耍,應(yīng)為第一個(gè)就是一個(gè)get方式噪珊,只不過(guò)沒(méi)有參數(shù)罷了。如果帶有參數(shù)的接口應(yīng)該這樣寫(xiě):
curl http://www.xxxx.com/getDataList?param1=value1¶m2=value2
4.POST
使用 option -d/--data齐莲,
curl -d "param2=nickwolfe¶m2=12345" http://www.xxx.com/xxx
也可以指定一個(gè)文件,將該文件中的內(nèi)容當(dāng)作數(shù)據(jù)傳遞給服務(wù)器端
curl --data @filename https://hostname.com/xxx
注:默認(rèn)情況下磷箕,通過(guò)POST方式傳遞過(guò)去的數(shù)據(jù)中若有特殊字符选酗,首先需要將特殊字符轉(zhuǎn)義在傳遞給服務(wù)器端,如value值中包含有空格岳枷,則需要先將空格轉(zhuǎn)換成%20芒填,如:
curl -d "value%201" http://hostname.com
在新版本的CURL中呜叫,提供了新的選項(xiàng) --data-urlencode,通過(guò)該選項(xiàng)提供的參數(shù)會(huì)自動(dòng)轉(zhuǎn)義特殊字符殿衰。
curl --data-urlencode "value 1" http://hostname.com
除了使用GET和POST協(xié)議外朱庆,還可以通過(guò) -X 選項(xiàng)指定其它協(xié)議,如:
curl -I -X DELETE https://api.github.cim
5.使用curl的時(shí)候闷祥,用option可以指定http訪(fǎng)問(wèn)所使用的proxy服務(wù)器及其端口: -x
curl -x 193.168.1.1:8080 http://www.baidu.com
6.保存與使用網(wǎng)站cookie信息
將網(wǎng)站的cookies信息保存到sugarcookies文件中
curl -D cookies.txt http://localhost/sugarcrm/index.php
使用上次保存的cookie信息
curl -b cookies.txt http://localhost/sugarcrm/index.php
7.CURL授權(quán)
在訪(fǎng)問(wèn)需要授權(quán)的頁(yè)面時(shí)娱颊,可通過(guò)-u選項(xiàng)提供用戶(hù)名和密碼進(jìn)行授權(quán)
curl -u username:password URL
通常的做法是在命令行只輸入用戶(hù)名,之后會(huì)提示輸入密碼凯砍,這樣可以保證在查看歷史記錄時(shí)不會(huì)將密碼泄露
curl -u username URL
8.顯示通信過(guò)程
-v
參數(shù)可以顯示一次http通信的整個(gè)過(guò)程箱硕,包括端口連接和http請(qǐng)求頭信息。
curl -v www.sina.com
參考阮一峰網(wǎng)絡(luò)http://www.ruanyifeng.com/blog/2011/09/curl.html