• <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的前端命令行工具。它支持很多協議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。 它同樣支持HTTPS認證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認證, HTTP上傳, 代理服務器, cookies, 用戶名/密碼認證, 下載文件斷點續傳, 上載文件斷點續傳, http代理服務器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務器,通過http代理服務器上傳文件到FTP服務器等等,功能十分強大。

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

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

            curl命令行工具使用

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

            用法

            curl [選項] [URL...]

            URL 語法

            URL語法是跟協議相關的,具體細節可參見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
            可以在命令行指定任意數量的URLs,它們將以指定的順序被取回。

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

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

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

            進度指示器

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

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

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

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

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

            常用的HTTP選項

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

            -b/--cookie<name=data>
            (HTTP)將data作為cookie傳給HTTP服務器,這數據當然是在使用了"Set-Cookie:"后,先前從服務端接收到的。這數據應是"NAME1=VALUE1;NAME2=VALUE2"的格式。
            如果沒有"="字符,它將會當作先前存儲cookie行的文件名,如果它能被匹配的話。使用這選項,也能激活"cookie parser",它使curl記錄傳入的cookies數據。將它與-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不能被創建寫入,整個curl操作也不會失改,甚至不會向你報告錯誤.使用-v將會得到警告顯示,但也只能在可能導致發生致命錯誤的情況才會顯示。

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

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

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

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

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

            簡單示例

            獲取cppblog首頁,打印至終端

            >curl http://www.shnenglu.com
            重定向,保存到文件cppblog.html
            >curl http://www.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,因為這些網站需要啟用cookie來記錄sessioin信息,這時需要選項-D,將cookie信息保存起來
            >curl -o cpp.html -c len@cppblog.com[1].txt http://www.shnenglu.com

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

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

            <2008年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(4)

            隨筆分類

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久人人青草97香蕉| 中文字幕人妻色偷偷久久| 久久香蕉一级毛片| 99久久超碰中文字幕伊人| 精品久久久久久无码免费| 欧美久久久久久| 久久精品国产一区二区三区日韩| 久久99毛片免费观看不卡| 品成人欧美大片久久国产欧美...| 久久人妻AV中文字幕| 久久精品a亚洲国产v高清不卡| 99久久精品九九亚洲精品| 欧美色综合久久久久久| 99久久无码一区人妻a黑| 青青青青久久精品国产h久久精品五福影院1421 | 久久久国产精品亚洲一区| 国产亚洲精午夜久久久久久| 久久久久久精品免费看SSS| 国产成人精品久久综合| 亚洲午夜久久久久久久久久| 精品无码人妻久久久久久| 久久A级毛片免费观看| 超级碰碰碰碰97久久久久| 久久最新免费视频| 国产亚洲色婷婷久久99精品91| 国产精品成人99久久久久| 久久精品国产亚洲AV麻豆网站| 亚洲AV日韩AV天堂久久| 久久精品国产亚洲αv忘忧草| 久久久亚洲精品蜜桃臀| 久久国产精品二国产精品| 久久狠狠色狠狠色综合| 99热成人精品热久久669| 精品久久久无码人妻中文字幕| 综合网日日天干夜夜久久| 亚洲国产精品综合久久一线| 日韩AV毛片精品久久久| 欧美粉嫩小泬久久久久久久| 国产成人久久久精品二区三区| 精品久久久久久| 久久99热只有频精品8|