Curl是Linux下一個很強大的http命令行工具,其功能十分強大。

一,開始curl之旅
1) 二話不說,先從這裏開始吧!
$ curl http://www.linuxidc.com
回車以後,www.linuxidc.com 的html就稀里嘩啦地顯示在屏幕上了    ~
2) 嗯,要想把讀過來頁面存下來,是否是要這樣呢?
$ curl http://www.linuxidc.com > page.html
固然能夠,但不用這麼麻煩的!
用curl的內置option就好,存下http的結果,用這個option: -o
$ curl -o page.html http://www.linuxidc.com
這樣,你就能夠看到屏幕上出現一個下載頁面進度指示。等進展到100%,天然就 OK咯
3) 什麼什麼?!訪問不到?確定是你的proxy沒有設定了。
使用curl的時候,用這個option能夠指定http訪問所使用的proxy服務器及其端口: -x
$ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com
4) 訪問有些網站的時候比較討厭,他使用cookie來記錄session信息。
像IE/NN這樣的瀏覽器,固然能夠輕易處理cookie信息,但咱們的curl呢?.....
咱們來學習這個option: -D <— 這個是把http的response裏面的cookie信息存到一個特別的文件中去
$ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com
這樣,當頁面被存到page.html的同時,cookie信息也被存到了cookie0001.txt裏面了
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.linuxidc.com
這樣,咱們就能夠幾乎模擬全部的IE操做,去訪問網頁了!
6)稍微等等    ~我好像忘記什麼了    ~
對了!是瀏覽器信息
有些討厭的網站總要咱們使用某些特定的瀏覽器去訪問他們,有時候更過度的是,還要使用某些特定的版本     NND,哪裏有時間爲了它去找這些怪異的瀏覽器呢!?
好在curl給咱們提供了一個有用的option,可讓咱們隨意指定本身此次訪問所宣稱的本身的瀏覽器信息: -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.linuxidc.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.linuxidc.com" -o page.html -D cookie0001.txt http://www.linuxidc.com
這樣,就能夠騙對方的服務器,你是從mail.linuxidc.com點擊某個連接過來的了,呵呵呵
8)寫着寫着發現漏掉什麼重要的東西了!——- 利用curl 下載文件
剛纔講過了,下載頁面到一個文件裏,能夠使用 -o ,下載文件也是同樣。好比,
$ curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
這裏教你們一個新的option: -O 大寫的O,這麼用:
$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
這樣,就能夠按照服務器上的文件名,自動存在本地了!
再來一個更好用的。
若是screen1.JPG之外還有screen2.JPG、screen3.JPG、....、screen10.JPG須要下載,難不成還要讓咱們寫一個script來完成這些操做?
不幹!
在curl裏面,這麼寫就能夠了:
$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG
呵呵呵,厲害吧?! ~
9)再來,咱們繼續講解下載!
$ curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG
這樣產生的下載,就是
~zzh/001.JPG
~zzh/002.JPG
...
~zzh/201.JPG
~nick/001.JPG
~nick/002.JPG
...
~nick/201.JPG
夠方便的了吧?哈哈哈
咦?高興得太早了。
因爲zzh/nick下的文件名都是001,002...,201,下載下來的文件重名,後面的把前面的文件都給覆蓋掉了 ~
不要緊,咱們還有更狠的!
$ curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG
—這是.....自定義文件名的下載? —對頭,呵呵!
這樣,自定義出來下載下來的文件名,就變成了這樣:原來: ~zzh/001.JPG —-> 下載後: 001-zzh.JPG 原來: ~nick/001.JPG —-> 下載後: 001-nick.JPG
這樣一來,就不怕文件重名啦,呵呵
二,經常使用curl實例
1,抓取頁面內容到一個文件中
[root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com
[root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com
2,用-O(大寫的),後面的url要具體到某個文件,否則抓不下來。咱們還能夠用正則來抓取東西
[root@krlcgcms01 mytest]# curl -O
[root@krlcgcms01 mytest]# curl -O
3,模擬表單信息,模擬登陸,保存cookie信息
[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php
[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php
4,模擬表單信息,模擬登陸,保存頭信息
[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php
[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php
-c(小寫)產生的cookie和-D裏面的cookie是不同的。
5,使用cookie文件
[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin
[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin
6,斷點續傳,-C(大寫的)
[root@krlcgcms01 mytest]# curl -C -O
7,傳送數據,最好用登陸頁面測試,由於你傳值過去後,curl回抓數據,你能夠看到你傳值有沒有成功
[root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php
[root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php
8,顯示抓取錯誤,下面這個例子,很清楚的代表了。
[root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf
curl: (22) The requested URL returned error: 404
[root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf
<HTML><HEAD><TITLE>404,not found</TITLE>
。。。。。。。。。。。。
[root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf
curl: (22) The requested URL returned error: 404
[root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf
<HTML><HEAD><TITLE>404,not found</TITLE>
。。。。。。。。。。。。
9,僞造來源地址,有的網站會判斷,請求來源地址。
[root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php
[root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php
10,當咱們常常用curl去搞人家東西的時候,人家會把你的IP給屏蔽掉的,這個時候,咱們能夠用代理
[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com
[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com
   11,比較大的東西,咱們能夠分段下載
[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-
content/uploads/2010/09/compare_varnish.jpg
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0
[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-
content/uploads/2010/09/compare_varnish.jpg
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0
[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-
content/uploads/2010/09/compare_varnish.jpg
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh
4.0K    one.part1
112K    three.part3
4.0K    two.part2
[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-
content/uploads/2010/09/compare_varnish.jpg
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0
[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-
content/uploads/2010/09/compare_varnish.jpg
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0
[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-
content/uploads/2010/09/compare_varnish.jpg
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh
4.0K    one.part1
112K    three.part3
4.0K    two.part2
用的時候,把他們cat一下就OK了,cat img.part* >img.jpg
12,不會顯示下載進度信息
[root@krlcgcms01 mytest]# curl -s -o aaa.jpg 
13,顯示下載進度條
[root@krlcgcms01 mytest]# curl -# -O 
######################################################################## 100.0%
14,經過ftp下載文件
[zhangy@BlackGhost ~]$ curl -u 用戶名:密碼 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
[zhangy@BlackGhost ~]$ curl -u 用戶名:密碼 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
或者用下面的方式
[zhangy@BlackGhost ~]$ curl -O ftp://用戶名:密碼@ip:port/demo/curtain/bbstudy_files/style.css
[zhangy@BlackGhost ~]$ curl -O ftp://用戶名:密碼@ip:port/demo/curtain/bbstudy_files/style.css
15,經過ftp上傳
[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用戶名:密碼@ip:port/demo/curtain/bbstudy_files/
[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用戶名:密碼@ip:port/demo/curtain/bbstudy_files/
相關文章
相關標籤/搜索