curl文件下載工具的使用方法
curl是一個(gè)利用URL語(yǔ)法在命令行方式下工作的文件傳輸工具。本文介紹了它的簡(jiǎn)單用法。 |
curl是一個(gè)利用URL語(yǔ)法在命令行方式下工作的文件傳輸工具。它支持很多協(xié)議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同樣支持HTTPS認(rèn)證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認(rèn)證, HTTP上傳, 代理服務(wù)器, cookies, 用戶名/密碼認(rèn)證, 下載文件斷點(diǎn)續(xù)傳, 上載文件斷點(diǎn)續(xù)傳, http代理服務(wù)器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務(wù)器, 通過(guò)http代理服務(wù)器上傳文件到FTP服務(wù)器等等,功能十分強(qiáng)大。Windows操作系統(tǒng)下的網(wǎng)絡(luò)螞蟻,網(wǎng)際快車(FlashGet)的功能它都可以做到。準(zhǔn)確的說(shuō),curl支持文件的上傳和下載,所以是一個(gè)綜合傳輸工具,但是按照傳統(tǒng),用戶習(xí)慣稱curl為下載工具。 那么瀏覽器上會(huì)出現(xiàn)一個(gè)文本框和一個(gè)標(biāo)為“OK”的按鈕。按下這個(gè)按鈕,表單就用GET方法向服務(wù)器提交文本框的數(shù)據(jù)。例如原始頁(yè)面是在www.hotmail.com/when/birth.html看到的,然后您在文本框中輸入1905,然后按OK按鈕,那么瀏覽器的URL現(xiàn)在應(yīng)該是:“www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK” 對(duì)于這種網(wǎng)頁(yè),curl可以直接處理,例如想獲取上面的網(wǎng)頁(yè),只要輸入: curl "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK" 就可以了。 表單用來(lái)提交信息的第二種方法叫做POST方法,POST方法和GET方法的區(qū)別在于GET方法使用的時(shí)候,瀏覽器中會(huì)產(chǎn)生目標(biāo)URL,而POST不會(huì)。類似GET,這里有一個(gè)網(wǎng)頁(yè): 瀏覽器上也會(huì)出現(xiàn)一個(gè)文本框和一個(gè)標(biāo)為“OK”的按鈕。按下這個(gè)按鈕,表單用POST方法向服務(wù)器提交數(shù)據(jù)。這時(shí)的URL是看不到的,因此需要使用特殊的方法來(lái)抓取這個(gè)頁(yè)面: curl -d "birthyear=1905&press=OK" www.hotmail.com/when/junk.cgi 這個(gè)命令就可以做到。 1995年年末,RFC 1867定義了一種新的POST方法,用來(lái)上傳文件。主要用于把本地文件上傳到服務(wù)器。此時(shí)頁(yè)面是這樣寫的: 對(duì)于這種頁(yè)面,curl的用法不同: curl -F upload=@localfilename -F press=OK [URL] 這個(gè)命令的實(shí)質(zhì)是將本地的文件用POST上傳到服務(wù)器。有關(guān)POST還有不少用法,用戶可以自己摸索。 3、使用PUT方法。 HTTP協(xié)議文件上傳的標(biāo)準(zhǔn)方法是使用PUT,此時(shí)curl命令使用-T參數(shù): curl -T uploadfile www.uploadhttp.com/receive.cgi 4、有關(guān)認(rèn)證。 curl可以處理各種情況的認(rèn)證頁(yè)面,例如下載用戶名/密碼認(rèn)證方式的頁(yè)面(在IE中通常是出現(xiàn)一個(gè)輸入用戶名和密碼的輸入框): curl -u name:password www.secrets.com 如果網(wǎng)絡(luò)是通過(guò)http代理服務(wù)器出去的,而代理服務(wù)器需要用戶名和密碼,那么輸入: curl -U proxyuser:proxypassword http://curl.haxx.se 任何需要輸入用戶名和密碼的時(shí)候,只在參數(shù)中指定用戶名而空著密碼,curl可以交互式的讓用戶輸入密碼。 5、引用。 有些網(wǎng)絡(luò)資源訪問的時(shí)候必須經(jīng)過(guò)另外一個(gè)網(wǎng)絡(luò)地址跳轉(zhuǎn)過(guò)去,這用術(shù)語(yǔ)來(lái)說(shuō)是:referer,引用。對(duì)于這種地址的資源,curl也可以下載: curl -e http://curl.haxx.se daniel.haxx.se 6、指定用戶客戶端。 有些網(wǎng)絡(luò)資源首先需要判斷用戶使用的是什么瀏覽器,符合標(biāo)準(zhǔn)了才能夠下載或者瀏覽。此時(shí)curl可以把自己“偽裝”成任何其他瀏覽器: curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL] 這個(gè)指令表示curl偽裝成了IE5.0,用戶平臺(tái)是Windows 2000。(對(duì)方服務(wù)器是根據(jù)這個(gè)字串來(lái)判斷客戶端的類型的,所以即使使用AIX也無(wú)所謂)。使用: curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL] 此時(shí)curl變成了Netscape,運(yùn)行在PIII平臺(tái)的Linux上了。 7、COOKIES Cookie是服務(wù)器經(jīng)常使用的一種記憶客戶信息的方法。如果cookie被記錄在了文件中,那么使用命令: curl -b stored_cookies_in_file www.cookiesite.com curl可以根據(jù)舊的cookie寫出新cookie并發(fā)送到網(wǎng)站: curl -b cookies.txt -c newcookies.txt www.cookiesite.com 8、加密的HTTP——HTTPS。 如果是通過(guò)OpenSSL加密的https協(xié)議傳輸?shù)木W(wǎng)頁(yè),curl可以直接訪問: curl https://that.secure.server.com 9、http認(rèn)證。 如果是采用證書認(rèn)證的http地址,證書在本地,那么curl這樣使用: curl -E mycert.pem https://that.secure.server.com 參考讀物和注意事項(xiàng):curl非常博大,用戶要想使用好這個(gè)工具,除了詳細(xì)學(xué)習(xí)參數(shù)之外,還需要深刻理解http的各種協(xié)議與URL的各個(gè)語(yǔ)法。這里推薦幾個(gè)讀物: |
評(píng)論
查看更多