一,crul命令
在Linux中curl是一個(gè)利用URL規(guī)則在命令行下工作的文件傳輸工具,可以說是一款很強(qiáng)大的http命令行工具。
語法:# curl [option] [url]
二,常見用法
設(shè)置url變量:url=http://www.baidu.com
get請求:curl $url
post請求:curl -d 'xxx' $url
proxy使用:curl -x 'http://127.0.0.1:8081' $url
三,重要參數(shù)
- -H "Content-Type: application/json;charset=UTF-8" 消息頭設(shè)置
- -u username:password 用戶認(rèn)證
- -d 要發(fā)送的post數(shù)據(jù) @file 表示來自文件
- --data-urlencode 'page_size=50' 對內(nèi)容進(jìn)行url編碼
- -G 把打他數(shù)據(jù)當(dāng)成get請求的參數(shù)發(fā)送,常與--data-urlencode結(jié)合使用
- -o 文件
- -x 代理 http代理 socks5代理
- -v verbose 打印更詳細(xì)日志 -s 關(guān)閉一些提示輸出
四,例子:
1、基本用法
curl http://www.baidu.com
執(zhí)行后,www.baidu.com 的html就會(huì)顯示在屏幕上了
Ps:由于安裝linux的時(shí)候很多時(shí)候是沒有安裝桌面的,也意味著沒有瀏覽器,因此這個(gè)方法也經(jīng)常用于測試一臺服務(wù)器是否可以到達(dá)一個(gè)網(wǎng)站
2、保存訪問的網(wǎng)頁
2.1:使用linux的重定向功能保存
curl http://www.baidu.com >> baidu.html
2.2:可以使用curl的內(nèi)置option:-o(小寫)保存網(wǎng)頁
$ curl -o baidu.html http://www.baidu.com
執(zhí)行完成后會(huì)顯示如下界面,顯示100%則表示保存成功
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 79684 0 79684 0 0 3437k 0 --:--:-- --:--:-- --:--:-- 7781k
2.3:可以使用curl的內(nèi)置option:-O(大寫)保存網(wǎng)頁中的文件
Ps:要注意這里后面的url要具體到某個(gè)文件,不然抓不下來
curl -O http://www.linux.com/hello.sh
3、測試網(wǎng)頁返回值
curl -o /dev/null -s -w %{http_code} www.linux.com
Ps:在腳本中,這是很常見的測試網(wǎng)站是否正常的用法
4、指定proxy服務(wù)器以及其端口
很多時(shí)候上網(wǎng)需要用到代理服務(wù)器(比如是使用代理服務(wù)器上網(wǎng)或者因?yàn)槭褂胏url別人網(wǎng)站而被別人屏蔽IP地址的時(shí)候),幸運(yùn)的是curl通過使用內(nèi)置option:-x來支持設(shè)置代理
curl -x 192.168.100.100:1080 http://www.linux.com
5、cookie
有些網(wǎng)站是使用cookie來記錄session信息。對于chrome這樣的瀏覽器,可以輕易處理cookie信息,但在curl中只要增加相關(guān)參數(shù)也是可以很容易的處理cookie
5.1:保存http的response里面的cookie信息。內(nèi)置option:-c(小寫)
curl -c cookiec.txt http://www.linux.com
執(zhí)行后cookie信息就被存到了cookiec.txt里面了
5.2:保存http的response里面的header信息。內(nèi)置option: -D
curl -D cookied.txt http://www.linux.com
執(zhí)行后cookie信息就被存到了cookied.txt里面了
注意:-c(小寫)產(chǎn)生的cookie和-D里面的cookie是不一樣的。
5.3:使用cookie
很多網(wǎng)站都是通過監(jiān)視你的cookie信息來判斷你是否按規(guī)矩訪問他們的網(wǎng)站的,因此我們需要使用保存的cookie信息。內(nèi)置option: -b
curl -b cookiec.txt http://www.linux.com
6、模仿瀏覽器
有些網(wǎng)站需要使用特定的瀏覽器去訪問他們,有些還需要使用某些特定的版本。curl內(nèi)置option:-A可以讓我們指定瀏覽器去訪問網(wǎng)站
curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com
這樣服務(wù)器端就會(huì)認(rèn)為是使用IE8.0去訪問的
7、偽造referer(盜鏈)
很多服務(wù)器會(huì)檢查http訪問的referer從而來控制訪問。比如:你是先訪問首頁,然后再訪問首頁中的郵箱頁面,這里訪問郵箱的referer地址就是訪問首頁成功后的頁面地址,如果服務(wù)器發(fā)現(xiàn)對郵箱頁面訪問的referer地址不是首頁的地址,就斷定那是個(gè)盜連了
curl中內(nèi)置option:-e可以讓我們設(shè)定referer
curl -e "www.linux.com" http://mail.linux.com
這樣就會(huì)讓服務(wù)器其以為你是從www.linux.com點(diǎn)擊某個(gè)鏈接過來的
8、下載文件
8.1:利用curl下載文件。
- 使用內(nèi)置option:-o(小寫)
curl -o dodo1.jpg http:www.linux.com/dodo1.JPG
- 使用內(nèi)置option:-O(大寫)
curl -O http://www.linux.com/dodo1.JPG
這樣就會(huì)以服務(wù)器上的名稱保存文件到本地
8.2:分塊下載
有時(shí)候下載的東西會(huì)比較大,這個(gè)時(shí)候我們可以分段下載。使用內(nèi)置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
cat dodo1_part* > dodo1.JPG
這樣就可以查看dodo1.JPG的內(nèi)容了
9、斷點(diǎn)續(xù)傳
在windows中,我們可以使用迅雷這樣的軟件進(jìn)行斷點(diǎn)續(xù)傳。curl可以通過內(nèi)置option:-C同樣可以達(dá)到相同的效果
如果在下載dodo1.JPG的過程中突然掉線了,可以使用以下的方式續(xù)傳
curl -C -O http://www.linux.com/dodo1.JPG
10、顯示抓取錯(cuò)誤
curl -f http://www.linux.com/error