curl 命令使用

1)初體驗

curl http://www.yahoo.com

回車之後,www.yahoo.com 的html就稀里嘩啦地顯示在屏幕上了~

2)保存頁面
curl http://www.yahoo.com > page.html

或者用curl的內置option,存下http的結果
curl -o page.html http://www.yahoo.com

3)如果需要proxy代理

curl -x 123.45.67.89:1080 -o page.html http://www.yahoo.com

4)處理cookie信息
option: -D <– 這個是把http的response裏面的cookie信息存到一個特別的文檔中去
curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.yahoo.com

5)下一次訪問的時候,如何繼續使用上次留下的cookie信息呢?要知道,很多網站都是靠監控您的cookie信息,來判斷您是不是不按規矩訪問他們的網站的。
這次我們使用這個option來把上次的cookie信息追加到http request裏面去: -b
curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.yahoo.com

6)瀏覽器信息
讓我們隨意指定自己這次訪問所宣稱的自己的瀏覽器信息: -A
curl -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

這樣,服務器端接到訪問的需要,會認爲您是個運行在Windows 2000上的IE6.0,嘿嘿嘿,其實也許您用的是蘋果機呢!
而”Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686″則能夠告訴對方您是一臺PC上跑着的Linux,用的是Netscape 4.73,呵呵呵

7)另外一個服務器端常用的限制方法,就是檢查http訪問的referer。比如您先訪問首頁,再訪問裏面所指定的下載頁,這第二次訪問的referer地址就是第一次訪問成功後的頁面地址。這樣,服務器端只要發現對下載頁面某次訪問的referer地址不 是首頁的地址,就能夠斷定那是個盜連了~

幸好curl給我們提供了設定referer的option: -e
curl -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

這樣,就能夠騙對方的服務器,您是從mail.yahoo.com點擊某個鏈接過來的了,呵呵呵

8)利用curl 下載文檔

curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG //按照服務器上的文檔名保存
curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG //序列下載
curl -O http://cgi2.tky.3web.ne.jp/~/[001-201].JPG
curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~/[001-201].JPG //自定義文檔名的下載

#1是變量,指的是這部分,第一次取值zzh,第二次取值nick
#2代表的變量,則是第二段可變部分—[001-201],取值從001逐一加到201
這樣,自定義出來下載下來的文檔名,就變成了這樣:
原來: ~zzh/001.JPG —> 下載後: 001-zzh.JPG
原來: ~nick/001.JPG —> 下載後: 001-nick.JPG

這樣一來,就不怕文檔重名啦,呵呵

9)斷點續傳

curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG

10)分塊下載 -r

比如我們有一個http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 要下載(趙老師的電話朗誦 :D )
我們就能夠用這樣的命令:
curl -r 0-10240 -o “zhao.part1″ http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
curl -r 10241-20480 -o “zhao.part2″ http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
curl -r 20481-40960 -o “zhao.part3″ http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
curl -r 40961- -o “zhao.part4″ http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3
這樣就能夠分塊下載啦。
但是您需要自己把這些破碎的文檔合併起來
假如您用UNIX或蘋果,用 cat zhao.part* > zhao.mp3就能夠
假如用的是Windows,用copy /b 來解決吧

上面講的都是http協議的下載,其實ftp也相同能夠用。
用法:
curl -u name:passwd ftp://ip:port/path/file

curl ftp://name:passwd@ip:port/path/file

11)上傳 -T

比如我們向ftp傳一個文檔:

curl -T localfile -u name:passwd ftp://upload_site:port/path/

當然,向http服務器上傳文檔也能夠
curl -T localfile http://cgi2.tky.3web.ne.jp/~zzh/abc.cgi
注意,這時候,使用的協議是HTTP的PUT method

http提交一個表單,比較常用的是POST模式和GET模式

GET模式什麼option都不用,只需要把變量寫在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

就相當於向這個站點發出一次登陸申請~~~~~

到底該用GET模式還是POST模式,要看對面服務器的程式設定。

一點需要注意的是,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>
這樣一個HTTP表單,我們要用curl進行模擬,就該是這樣的語法:
curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi

12)https的時候使用本地證書
curl -E localcert.pem https://remote_server

13)用curl通過dict協議去查字典~~~~~
curl dict://dict.org/d:computer

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章