本文來自網(wǎng)絡(luò)敞葛,訪問原文請(qǐng)點(diǎn)擊此處:
1 基本用法
curl http://www.linux.com
執(zhí)行后挪鹏,www.linux.com 的html就會(huì)顯示在屏幕上了
Ps:由于安裝linux的時(shí)候很多時(shí)候是沒有安裝桌面的区赵,也意味著沒有瀏覽器辐啄,因此這個(gè)方法也經(jīng)常用于測(cè)試一臺(tái)服務(wù)器是否可以到達(dá)一個(gè)網(wǎng)站
2 保存訪問的網(wǎng)頁
2.1 使用linux的重定向功能保存
curl http://www.linux.com >> linux.html
2.2 可以使用curl的內(nèi)置option:-o(小寫)保存網(wǎng)頁
curl -o linux.html http://www.linux.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)頁中的文件
要注意這里后面的url要具體到某個(gè)文件景鼠,不然抓不下來
curl -O http://www.linux.com/hello.sh
3 測(cè)試網(wǎng)頁返回值
curl -o /dev/null -s -w %{http_code} www.linux.com
Ps:在腳本中仲翎,這是很常見的測(cè)試網(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信息铛漓。對(duì)于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)對(duì)郵箱頁面訪問的referer地址不是首頁的地址,就斷定那是個(gè)盜連了
curl中內(nèi)置option:-e可以讓我們?cè)O(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 循環(huán)下載
有時(shí)候下載圖片可以能是前面的部分名稱是一樣的雏掠,就最后的尾椎名不一樣
curl -O http://www.linux.com/dodo[1-5].JPG
這樣就會(huì)把dodo1,dodo2劣像,dodo3乡话,dodo4,dodo5全部保存下來
8.3 下載重命名
curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG
由于下載的hello與bb中的文件名都是dodo1耳奕,dodo2绑青,dodo3,dodo4吮铭,dodo5时迫。因此第二次下載的會(huì)把第一次下載的覆蓋,這樣就需要對(duì)文件進(jìn)行重命名谓晌。
curl -o #1_#2.JPG http://www.linux.com/{hello,bb}/dodo[1-5].JPG
這樣在hello/dodo1.JPG的文件下載下來就會(huì)變成hello_dodo1.JPG,其他文件依此類推,從而有效的避免了文件被覆蓋
8.4 分塊下載
有時(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)容了
8.5 通過ftp下載文件
curl可以通過ftp下載文件溺欧,curl提供兩種從ftp中下載的語法
curl -O -u 用戶名:密碼 ftp://www.linux.com/dodo1.JPG
curl -O ftp://用戶名:密碼@www.linux.com/dodo1.JPG
8.6 顯示下載進(jìn)度條
curl -# -O http://www.linux.com/dodo1.JPG
8.7 不會(huì)顯示下載進(jìn)度信息
curl -s -O http://www.linux.com/dodo1.JPG
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、上傳文件
curl不僅僅可以下載文件烦味,還可以上傳文件聂使。通過內(nèi)置option:-T來實(shí)現(xiàn)
curl -T dodo1.JPG -u 用戶名:密碼 ftp://www.linux.com/img/
這樣就向ftp服務(wù)器上傳了文件dodo1.JPG
11、顯示抓取錯(cuò)誤
curl -f http://www.linux.com/error