-
二話不說(shuō)抗愁,先從這里開(kāi)始吧闸餐!
curl http://www.yahoo.com
回車之后茬高,www.yahoo.com 的html就稀里嘩啦地顯示在屏幕上了~~~~~
-
嗯,要想把讀過(guò)來(lái)頁(yè)面存下來(lái)吧凉,是不是要這樣呢隧出?
curl http://www.yahoo.com > page.html
當(dāng)然可以,但不用這么麻煩的阀捅!
用curl的內(nèi)置option就好胀瞪,存下http的結(jié)果,用這個(gè)option: -o
curl -o page.html http://www.yahoo.com
這樣饲鄙,你就可以看到屏幕上出現(xiàn)一個(gè)下載頁(yè)面進(jìn)度指示凄诞。等進(jìn)展到100%,自然就OK咯
-
什么什么忍级?帆谍!訪問(wèn)不到?肯定是你的proxy沒(méi)有設(shè)定了轴咱。
使用curl的時(shí)候汛蝙,用這個(gè)option可以指定http訪問(wèn)所使用的proxy服務(wù)器及其端口: -xcurl -x 123.45.67.89:1080 -o page.html http://www.yahoo.com
-
訪問(wèn)有些網(wǎng)站的時(shí)候比較討厭,他使用cookie來(lái)記錄session信息朴肺。
像IE/NN這樣的瀏覽器窖剑,當(dāng)然可以輕易處理cookie信息,但我們的curl呢戈稿?
我們來(lái)學(xué)習(xí)這個(gè)option: -D <-- 這個(gè)是把http的response里面的cookie信息存到一個(gè)特別的文件中去curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.yahoo.com
這樣西土,當(dāng)頁(yè)面被存到page.html的同時(shí),cookie信息也被存到了cookie0001.txt里面了
-
那么鞍盗,下一次訪問(wèn)的時(shí)候需了,如何繼續(xù)使用上次留下的cookie信息呢?要知道橡疼,很多網(wǎng)站都是靠監(jiān)視你的cookie信息援所,
來(lái)判斷你是不是不按規(guī)矩訪問(wèn)他們的網(wǎng)站的。
這次我們使用這個(gè)option來(lái)把上次的cookie信息追加到http request里面去: -bcurl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.yahoo.com
這樣欣除,我們就可以幾乎模擬所有的IE操作住拭,去訪問(wèn)網(wǎng)頁(yè)了!
-
瀏覽器信息
有些討厭的網(wǎng)站總要我們使用某些特定的瀏覽器去訪問(wèn)他們历帚,有時(shí)候更過(guò)分的是滔岳,還要使用某些特定的版本,哪里有時(shí)間為了它去找這些怪異的瀏覽器呢M炖巍谱煤?
好在curl給我們提供了一個(gè)有用的option,可以讓我們隨意指定自己這次訪問(wèn)所宣稱的自己的瀏覽器信息: -Acurl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.yahoo.com
這樣禽拔,服務(wù)器端接到訪問(wèn)的要求刘离,會(huì)認(rèn)為你是一個(gè)運(yùn)行在Windows 2000上的IE6.0室叉,嘿嘿嘿,其實(shí)也許你用的是蘋(píng)果機(jī)呢硫惕!
而"Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686"則可以告訴對(duì)方你是一臺(tái)PC上跑著的Linux茧痕,用的是Netscape 4.73
-
另外一個(gè)服務(wù)器端常用的限制方法,就是檢查http訪問(wèn)的referer恼除。
比如你先訪問(wèn)首頁(yè)踪旷,再訪問(wèn)里面所指定的下載頁(yè),這第二次訪問(wèn)的referer地 址就是第一次訪問(wèn)成功后的頁(yè)面地址豁辉。
這樣令野,服務(wù)器端只要發(fā)現(xiàn)對(duì)下載頁(yè)面某次訪問(wèn)的referer地址不 是首頁(yè)的地址,就可以斷定那是個(gè)盜連了.
curl給我們提供了設(shè)定referer的option: -ecurl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -e "mail.yahoo.com" -o page.html -D cookie0001.txt http://www.yahoo.com
這樣徽级,就可以騙對(duì)方的服務(wù)器气破,你是從mail.yahoo.com點(diǎn)擊某個(gè)鏈接過(guò)來(lái)的了
-
利用curl 下載文件
下載頁(yè)面到一個(gè)文件里,可以使用 -o灰追,下載文件也是一樣堵幽。
比如:curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
這里有一個(gè)新的option: -O
大寫(xiě)的O:
curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
這樣,就可以按照服務(wù)器上的文件名弹澎,自動(dòng)存在本地了朴下!
如果screen1.JPG以外還有screen2.JPG、screen3.JPG苦蒿、....殴胧、screen10.JPG需要下載:
curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG
-
上傳的option是 -T
向ftp傳一個(gè)文件:curl -T localfile -u name:passwd ftp://upload_site:port/path/
當(dāng)然,向http服務(wù)器上傳文件也可以,比如
curl -T localfile http://cgi2.tky.3web.ne.jp/~zzh/abc.cgi
注意佩迟,這時(shí)候团滥,使用的協(xié)議是HTTP的PUT method
http提交一個(gè)表單,比較常用的是POST模式和GET模式
GET模式什么option都不用报强,只需要把變量寫(xiě)在url里面就可以了
比如:
curl http://www.yahoo.com/login.cgi?user=nickwolfe&password=12345
而POST模式的option則是 -d
比如灸姊,
curl -d "user=nickwolfe&password=12345" http://www.yahoo.com/login.cgi
一點(diǎn)需要注意的是,POST模式下的文件上的文件上傳秉溉,比如
<form method="POST" enctype="multipar/form-data" action="http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi">
<input type=file name=upload>
<input type=submit name=nick value="go">
</form>
這樣一個(gè)HTTP表單力惯,我們要用curl進(jìn)行模擬,就該是這樣的語(yǔ)法:
curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi