• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 24,  comments - 62,  trackbacks - 0

            介紹

            cURL是一個利用URL語法的文件傳輸工具,是基于libcurl的前端命令行工具。它支持很多協(xié)議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。 它同樣支持HTTPS認證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認證, HTTP上傳, 代理服務器, cookies, 用戶名/密碼認證, 下載文件斷點續(xù)傳, 上載文件斷點續(xù)傳, http代理服務器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務器,通過http代理服務器上傳文件到FTP服務器等等,功能十分強大。

            除了使用curl命令行直接進行相關(guān)的網(wǎng)絡操作,你也可以自由地使用libcurl,它是用C語言編寫的,可以綁定到眾多的編程語言中,如C,C++,PHP,Python,Perl,Java等等。你可以很方便地利用libcurl,在程序中進行一些網(wǎng)絡傳輸工作,來代替一些語言的內(nèi)置,使你的知識可重用。在Unix工作環(huán)境下,你可以用curl代替wget和ftp等工具,并能將這種學習經(jīng)驗遷移到將來使用libcurl來完成一些自動化任務。

            curl是瑞典curl組織開發(fā)的,可以通過http://curl.haxx.se/來獲取更詳細的信息和下載文件。

            curl命令行工具使用

            curl太強大了,只能對其HTTP的部分作一簡單的介紹,其他選項可以參見其附帶的手冊。它的后端庫的使用也非常方便,主要也是在選項設置上,跟命令行基本無異。

            用法

            curl [選項] [URL...]

            URL 語法

            URL語法是跟協(xié)議相關(guān)的,具體細節(jié)可參見RFC 3986
            可以指定多個URLs或者部分URL地址,通過花括號{}進行分割:
            http://site.{one,two,three}.com
            或者用[]使用字母序:
            ftp://ftp.numericals.com/file[1-100].txt
            ftp://ftp.numericals.com/file[001-100].txt (有前導零)
            ftp://ftp.letters.com/file[a-z]].txt

            當前序列嵌套不被支持,但是還是可以使用下列的樣式:
            http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
            可以在命令行指定任意數(shù)量的URLs,它們將以指定的順序被取回。

            從curl7.15.1開始指定可以范圍步長,所以可以得到第n個數(shù)或字母:
            http://www.numericals.com/file[1-100:10].txt
            http://www.letters.com/file[a-z:2].txt

            如果使用了protocal://前綴,curl會將嘗試你想使用的協(xié)議。它默認使用HTTP,但是其他一些協(xié)議也常被用作主機名。比如說,以"ftp"打頭的主機名,curl會假定你想使用ftp協(xié)議。

            Curl會嘗試對多文件傳輸使用重連接,可以使從同一服務器獲取很多文件時,不會進行多次的連接。這種做法改進了速度,當然這只會在同一命令行中指定的文件啟用,而不會在獨立的Curl調(diào)用時使用。

            進度指示器

            curl通常在操作時會顯示一個進度指示器,來指明當前的傳輸量,傳輸速度和預計的剩余時間等等。

            但是,即然curl默認將數(shù)據(jù)顯示在終端,如果你調(diào)用curl進行操作,它會將數(shù)據(jù)打印到終端上,這時它會禁用掉進度指示器,否則這些會將輸出信息搞亂掉。

            如果在進行HTTP的POST或PUT請求時,你想將輸出重定向到文件中,可以使用shell的重定向符(>),或者類似的-o[file]選項。

            但是在FTP上傳并不會這樣,這些操作不會將數(shù)據(jù)插入到終端中。

            如果想使用進度欄,而不是常規(guī)的指示器,那么-#會非常有幫助。

            常用的HTTP選項

            -A/--user-agent<agent string>
            (HTTP)指定用戶代理字符串發(fā)送給HTTP服務器。如果這個字段沒有被設為"Mozilla/4.0",某些CGIs將不會正常工作。如果在字符串中存在空白字符,需要用單引號標識。這個字段值也可用-H/--header選項進行設置。
            如果這選項被多次設置,最后的設置將起作用。

            -b/--cookie<name=data>
            (HTTP)將data作為cookie傳給HTTP服務器,這數(shù)據(jù)當然是在使用了"Set-Cookie:"后,先前從服務端接收到的。這數(shù)據(jù)應是"NAME1=VALUE1;NAME2=VALUE2"的格式。
            如果沒有"="字符,它將會當作先前存儲cookie行的文件名,如果它能被匹配的話。使用這選項,也能激活"cookie parser",它使curl記錄傳入的cookies數(shù)據(jù)。將它與-L/--locaion選項組合將會更加便利。被讀取cookie的文件格式應當是文本HTTP頭或者Netscape/Mozilla cookie文件格式。
            注意:被-b/--cookie指定的文件只能作為輸入使用。沒有cookie會存儲在這文件中。為了存儲cookie,應使用-c/--cookie-jar選項或者直接將HTTP頭輸出到文件中,用-D/--dump-header選項。這選項可以設置多次,但是只有最后一個起作用。

            -connect-timeout<seconds>
            以秒計的最大超時,用于進行服務器連接時。這只在連接階段起作用,一旦curl連接建立,這選項將不再起作用。

            -c/--cookie-jar<file name>
            指定在完成一系列操作后,需要將全部的cookie信息保存到哪個文件中。Curl會將先前讀取的cookie的信息和從服務器返回的信息一起保存。如果沒有cookie信息,則不會進行寫文件。cookie信息的文件將與Netscape cookie文件格式保存。如果文件名被設置為'-',則將cookie打印至終端。
            注意:如果cookie-jar不能被創(chuàng)建寫入,整個curl操作也不會失改,甚至不會向你報告錯誤.使用-v將會得到警告顯示,但也只能在可能導致發(fā)生致命錯誤的情況才會顯示。

            --create-dirs
            這與-o選項配合使用,curl會在需要時建立本地文件夾結(jié)構(gòu)。這選項會創(chuàng)建在-o選項中涉及到的文件夾。如果-o選項中的文件名沒有使用到文件夾,或者所需的文件夾已經(jīng)存在,則不會有文件夾創(chuàng)建。

            -D/--dump-header<file>
            將協(xié)議頭寫到指定的文件中。當你想存儲HTTP站點發(fā)給你的數(shù)據(jù)時,這選項非常有用。在協(xié)議頭中的cookie將來可以用curl的另外調(diào)用來進行讀取,那就是-b/--cookie選項。但是-c/--cookie-jar選項將會是更好的存儲cookie信息的方法。
            當使用FTP協(xié)議時,ftp服務器的應答信息將相應地當作成協(xié)議頭,然后被存儲。

            -p/-proxytunnel
            當HTTP代理被設置后(-x/--proxy),選項會使不是HTTP協(xié)議的傳輸試圖通過代理隧道,而不是表現(xiàn)得HTTP類似的操作形為。代理隧道的方法是通過HTTP服務器直接使用CONNECT請求,讓代理直接連接到curl隧道所請求的遠程端口號的方式來實現(xiàn)的。

            -o/--output<file>
            將輸出信息打印到文件中,而不是終端。可使用{}或者[]取回多個文檔,可在file指定格式中的'#'跟一數(shù)字,這樣這變量將會由取回的URL字符串所取代。如下:
            curl http://{one,two}.site.com -o "file_#1.txt"
            如果有多個變量,可以寫成下面的樣子:
            curl http://{site.host}.host[1-5].com -o "#1_#2"
            你可對任意數(shù)量的URL使用同樣多的這個選項

            -x/--proxy<proxyhost[:port]>
            使用指定的HTTP代理,如果端口號沒有被指定,默認為1080.
            這選項會覆蓋環(huán)境變量中代理服務器的設置。如果環(huán)境變量中設置了代理,可將proxy設置為空字符串,來覆蓋環(huán)境變量中的設置。
            注意:所有通過HTTP代理的操作都會自動轉(zhuǎn)化為HTTP協(xié)議。這意味著一些特定協(xié)議的操作將會變得無效。這不會有問題,如果在設置了-p/--proxytunnel選項來通過代理隧道進行操作。

            簡單示例

            獲取cppblog首頁,打印至終端

            >curl http://m.shnenglu.com
            重定向,保存到文件cppblog.html
            >curl http://m.shnenglu.com
            作用同上,使用選項
            >curl -o baidu.html http://www.baidu.com
            使用http代理,可指定IP和端口
            >curl -x 202.127.98.43:80 -o baidu.html http:www.baidu.com
            在訪問一些論壇時,常常要求啟用cookie,因為這些網(wǎng)站需要啟用cookie來記錄sessioin信息,這時需要選項-D,將cookie信息保存起來
            >curl -o cpp.html -c len@cppblog.com[1].txt http://m.shnenglu.com

            先前保存的cookie信息返回給網(wǎng)站,這通常會傳回你的一些用戶信息。
            >curl -o cpp.html -c len@cppblog.com[2].txt -b len@cppblog.com[1].txt http://m.shnenglu.com
            posted on 2008-06-21 16:33 len 閱讀(7182) 評論(1)  編輯 收藏 引用 所屬分類: IT技術(shù)

            FeedBack:
            # re: 強大的網(wǎng)絡傳輸工具cURL和libcurl
            2009-05-26 11:40 | 上海空調(diào)維修
            不錯的教程  回復  更多評論
              

            <2008年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(4)

            隨筆分類

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲精品NV久久久久久久久久| 中文无码久久精品| 99久久成人国产精品免费| 久久久久久人妻无码| 国产精品久久久久国产A级| 99麻豆久久久国产精品免费| 激情久久久久久久久久| 伊人久久大香线蕉AV色婷婷色| 久久91精品久久91综合| 蜜桃麻豆www久久国产精品| 久久精品欧美日韩精品| 午夜福利91久久福利| 99久久免费国产精精品| 久久人妻AV中文字幕| 91精品婷婷国产综合久久| 久久精品国产99国产精品导航| 99久久国产亚洲高清观看2024| 中文字幕乱码人妻无码久久| 精品国产热久久久福利| 91精品国产色综合久久| 久久夜色精品国产噜噜噜亚洲AV | 久久一区二区三区99| 亚洲精品无码久久久影院相关影片| 国产成人久久精品二区三区| 国产精品99久久99久久久| 伊人久久大香线蕉亚洲| 97久久国产露脸精品国产| 亚洲欧美日韩精品久久亚洲区 | 国内精品久久久久久野外| 狠狠综合久久AV一区二区三区| 亚洲AV伊人久久青青草原| 久久久久国产| 久久久久国产精品麻豆AR影院| 91精品国产91热久久久久福利| 久久夜色精品国产亚洲| 丁香五月网久久综合| 久久免费高清视频| 欧美亚洲另类久久综合| 国产午夜精品久久久久九九电影| 青青青国产成人久久111网站| 亚洲国产精品久久久久|