curl

curl

文件傳輸工具
cURL是一個利用URL語法在命令行下工作的文件傳輸工具,1997年首次發行。它支持文件上傳和下載,所以是綜合傳輸工具,但按傳統,習慣稱cURL為下載工具。curl同樣支持HTTPS認證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認證,HTTP上傳, 代理服務器, cookies, 用戶名/密碼認證, 下載文件斷點續傳,上載文件斷點續傳,,http代理服務器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務器,,通過http代理服務器上傳文件到FTP服務器等等,功能十分強大。[1]
    軟件名稱: 軟件平台: 軟件語言: 開發商: 軟件授權: 軟件版本: 軟件大小: 中文名:curl 性質:開源文件傳輸工具 作用:文件傳輸 适用範圍:計算機 類别:用URL語法

概念

它支持很多協議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。

Windows操作系統下的網絡螞蟻,網際快車(FlashGet)的功能它都可以做到。準确的說,curl支持文件的上傳和下載,所以是一個綜合傳輸工具,但是按照傳統,用戶習慣稱curl為下載工具。

curl是瑞典curl組織開發的,您可以訪問: http://curl.haxx. se/

獲取它的源代碼和相關說明。

鑒于curl在Linux上的廣泛使用,IBM在AIX Linux Toolbox的光盤中包含了這個軟件,并且您可以訪問IBM網站:

http://www- 1.ibm. com/servers/aix/products/aixos/linux/altlic.html 下載它。

curl的最新版本是7.27.0,IBM網站上提供的版本為7.9.3。

在AIX下的安裝很簡單,IBM網站上下載的rpm格式的包。

在 http://curl.haxx. se/docs/ ,您可以下載到UNIX格式的man幫助,裡面有詳細的curl工具的使用說明。

curl的用法為:curl [options] [URL...]

其中options是下載需要的參數,大約有80多個,curl的各個功能完全是依靠這些參數完成的。

具體參數的使用,用戶可以參考curl的man幫助。

下面,本文就将結合具體的例子來說明怎樣利用curl進行下載。

設計方法

獲得頁面

使用命令:curl http://curl.haxx. se

這是最簡單的使用方法。用這個命令獲得了http://curl.haxx. se指向的頁面,同樣,如果這裡的URL指向的是一個文件或者一幅圖都可以直接下載到本地。如果下載的是HTML文檔,那麼缺省的将不顯示文件頭部,即HTML文檔的header。要全部顯示,請加參數 -i,要隻顯示頭部,用參數 -I。任何時候,可以使用 -v 命令看curl是怎樣工作的,它向服務器發送的所有命令都會顯示出來。為了斷點續傳,可以使用-r參數來指定傳輸範圍。

獲取表單

在WEB頁面設計中,form是很重要的元素。Form通常用來收集并向網站提交信息。提交信息的方法有兩種,GET方法和POST方法。先讨論GET方法,當浏覽器上出現一個文本框和一個标為“OK”的按鈕。按下這個按鈕,表單就用GET方法向服務器提交文本框的數據。

例如原始頁面是在 www.hotmail. com/when/birth.html看到的,然後您在文本框中輸入1905,然後按OK按鈕,那麼浏覽器的URL現在應該是:“www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK”

對于這種網頁,curl可以直接處理,例如想獲取上面的網頁,隻要輸入:

curl "www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK"

就可以了。

表單用來提交信息的第二種方法叫做POST方法,POST方法和GET方法的區别在于GET方法使用的時候,浏覽器中會産生目标URL,而POST不會。類似GET,當浏覽器上也出現一個文本框和一個标為“OK”的按鈕。按下這個按鈕,表單用POST方法向服務器提交數據。

這時的URL是看不到的,因此需要使用特殊的方法來抓取這個頁面:

curl -d "birthyear=1905&press=OK" www.hotmail. com/when/junk.cgi

這個命令就可以做到。

1995年年末,RFC 1867定義了一種新的POST方法,用來上傳文件。主要用于把本地文件上傳到服務器。此時頁面是這樣寫的:

對于這種頁面,curl的用法不同:

curl -F upload=@localfilename -F press=OK URL

這個命令的實質是将本地的文件用POST上傳到服務器。

有關POST還有不少用法,用戶可以自己摸索。

使用PUT

HTTP協議文件上傳的标準方法是使用PUT,此時curl命令使用-T參數:

curl -T uploadfile www.uploadhttp. com/receive.cgi

有關認證

curl可以處理各種情況的認證頁面,例如下載用戶名/密碼認證方式的頁面(在IE中通常是出現一個輸入用戶名和密碼的輸入框):

curl -u name:password www.secrets. com

如果網絡是通過http代理服務器出去的,而代理服務器需要用戶名和密碼,那麼輸入:

curl -U proxyuser:proxypassword http://curl.haxx. se

任何需要輸入用戶名和密碼的時候,隻在參數中指定用戶名而空着密碼,curl可以交互式的讓用戶輸入密碼。

引用

有些網絡資源訪問的時候必須經過另外一個網絡地址跳轉過去,這用術語來說是:referer,引用。

對于這種地址的資源,curl也可以下載:

curl -e http://curl.haxx. se daniel.haxx. se

指定用戶端

有些網絡資源首先需要判斷用戶使用的是什麼浏覽器,符合标準了才能夠下載或者浏覽。

此時curl可以把自己“僞裝”成任何其他浏覽器:

curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" URL

這個指令表示curl僞裝成了IE5.0,用戶平台是Windows 2000。(對方服務器是根據這個字串來判斷客戶端的類型的,所以即使使用AIX也無所謂)。

使用:

curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" URL

此時curl變成了Netscape,運行在PIII平台的Linux上了。

COOKIES

Cookie是服務器經常使用的一種記憶客戶信息的方法。如果cookie被記錄在了文件中,那麼使用命令:

curl -b stored_cookies_in_file www.cookiesite. com

curl可以根據舊的cookie寫出新cookie并發送到網站:

curl -b cookies.txt -c newcookies.txt www.cookiesite. com

加密HTTP

如果是通過OpenSSL加密的https協議傳輸的網頁,curl可以直接訪問:

curl https://that.secure.server. com

http認證

如果是采用證書認證的http地址,證書在本地,那麼curl這樣使用:

curl -E mycert.pem https://that.secure.server. com

注意事項

curl非常博大,用戶要想使用好這個工具,除了詳細學習參數之外,還需要深刻理解http的各種協議與URL的各個語法。

這裡推薦幾個讀物:

RFC 2616 HTTP協議語法的定義。

RFC 2396 URL語法的定義。

RFC 2109 Cookie是怎樣工作的。

RFC 1867 HTTP如何POST,以及POST的格式。

其它

Curl是由美國國防部高級研究項目代理資助,馬薩諸塞州科技學院的David A. Kranz開發的Web開發語言, HTML語言的創建者Tim Berners-Lee也參與其中,并扮演了重要的角色。

Curl語言是一種編程語言,它被設計用于編寫網絡程序。它的目标是以一種單一的語言來取代HTML, Cascading Style Sheets(層疊樣式表) and JavaScript , 雖然它目前并未在世界範圍内被廣泛使用,但在日本有一定的普及。

Curl不像HTML,它不是一種文本标記語言,但Curl語言既可以用于普通的文本顯示,又可以用于實現大規模的客戶端商業軟件系統。Curl不利的一面是:需要向客戶端安裝運行環境。

用Curl寫的程序既可以運行于浏覽器中,又可以像普通客戶端程序那樣獨立于浏覽器運行,運行前需要安裝SurgeRTE。"SurgeRTE"是一種與JAVA類似的跨平台運行環境 (runtime environment,RTE),其中包含浏覽器的插件。它目前支持微軟視窗(Microsoft Windows)操作系統 和 Linux操作系統, 據傳蘋果機版将在不久的未來發布。

Curl語言便于學習,編程效率高,是一種支持多重繼承,範型等數據類型的面向對象編程語言。目前國内已有一些公司開始涉及Curl語言的推廣與開發。

Curl是高等數學中的運算符,代表旋度。多用于流體力學計算。

curl(α)=倒三角×阿爾法。倒三角為哈密頓算符,無法打出。

PHP cURL 函數

PHP支持的由Daniel Stenberg創建的libcurl庫允許你與各種的服務器使用各種類型的協議進行連接和通訊。

PHP中使用cURL實現Get和Post請求的方法

這些函數在PHP 4.0.2中被引入。

相關詞條

相關搜索

其它詞條