Curl是一款命令行工作的URL下載軟件,該軟件使用純命令行進行操作,支持FTP、HTT、HTTP等常用協(xié)議,并能夠支持下載需要認證或應(yīng)用的資源,還可以偽裝成客戶端限定資源所需的瀏覽器客戶端用以下載資源。

【軟件介紹】
CURL是一個利用URL語法在命令行下工作的文件傳輸工具。它支持文件的上傳和下載,所以是綜合傳輸工具,但按傳統(tǒng),習(xí)慣稱CURL為下載工具。Curl可下載FTP,HTT,HTTP,GOPHE,TELNET,DICT,FILE,LDAP等協(xié)議文件,還可以上傳HTTP POST,HTTP PUT,FTP uploading,HTTP form based upload,proxies,cookies。

【安裝教程】
Windows下安裝使用curl命令
根據(jù)自己的操作系統(tǒng)位數(shù)和是否需要SSL下載相應(yīng)的版本。下載完成之后解壓到需要使用curl命令的目錄。這里為了方便我先直接解壓到當(dāng)前目錄。

為了測試curl命令,我已經(jīng)發(fā)布了一個帶應(yīng)用的本地服務(wù)器,并且可以在瀏覽器中訪問:

打開命令窗口并定位到curl命令所在的目錄,你可以使用cd命令也可以像下圖這樣快速進入:

測試curl命令

當(dāng)然,可以給Windows增加curl命令的環(huán)境變量,增加CURL_HOME環(huán)境變量,給PATH環(huán)境變量加上%CURL_HOME%;
這樣就可以在命令窗口的任意目錄下使用curl命令了。


【設(shè)置方法】
windows curl 怎么設(shè)置環(huán)境變量?
這是解壓后的目錄

bin文件夾里面有個curl.exe,復(fù)制地址

進入系統(tǒng)環(huán)境變量,可以搜索進入

找到path變量,并新增

將剛才的curl.exe所在的目錄添加

進入cmd命令提示符

輸入curl,可以識別了

【高級用法】
常用參數(shù)如下:
-c,–cookie-jar:將cookie寫入到文件
-b,–cookie:從文件中讀取cookie
-C,–continue-at:斷點續(xù)傳
-d,–data:http post方式傳送數(shù)據(jù)
-D,–dump-header:把header信息寫入到文件
-F,–from:模擬http表達提交數(shù)據(jù)
-s,–slient:減少輸出信息
-o,–output:將信息輸出到文件
-O,–remote-name:按照服務(wù)器上的文件名,存在本地
–l,–head:僅返回頭部信息
-u,–user[user:pass]:設(shè)置http認證用戶和密碼
-T,–upload-file:上傳文件
-e,–referer:指定引用地址
-x,–proxy:指定代理服務(wù)器地址和端口
-w,–write-out:輸出指定格式內(nèi)容
–retry:重試次數(shù)
–connect-timeout:指定嘗試連接的最大時間/s
使用示例:
例1:抓取頁面到指定文件,如果有亂碼可以使用iconv轉(zhuǎn)碼
# curl -o baidu.html www.baidu.com
# curl –s –o baidu.html www.baidu.com |iconv -f utf-8 #減少輸出信息
例2:模擬瀏覽器頭(user-agent)
# curl -A “Mozilla/4.0 (compatible;MSIE 6.0; Windows NT 5.0)” www.baidu.com
例3:處理重定向頁面
# curl –L http://192.168.1.100/301.php #默認curl是不處理重定向
例4:模擬用戶登陸,保存cookie信息到cookies.txt文件,再使用cookie登陸
# curl -c ./cookies.txt -F NAME=user -F PWD=***URL 本文所有的概念都可以從《Linux就該這么學(xué)》中找到詳細的解釋。#NAME和PWD是表單屬性不同,每個網(wǎng)站基本都不同
# curl -b ./cookies.txt –o URL
例5:獲取HTTP響應(yīng)頭headers
# curl -I http://www.baidu.com
# curl -D ./header.txt http://www.baidu.com #將headers保存到文件中
例6:訪問HTTP認證頁面
# curl –u user:pass URL
例7:通過ftp上傳和下載文件
# curl -T filename ftp://user:pass@ip/docs #上傳
# curl -O ftp://user:pass@ip/filename #下載
【使用例子】
php如何使用curl發(fā)送post請求
首先我們在任意位置建立一個php文件。然后使用你喜歡的編輯器打開這個文件。

打開文件后,我們首先寫上php的標簽。然后初始化一個curl對象。

緊接著,我們將要請求的接口地址定義一下。這里我隨便找了一個baidu的接口地址。

然后我們看一下接口需要哪些數(shù)據(jù)。并定義成一個數(shù)組。定義完畢后使用http_build_query將數(shù)據(jù)build成標準query形式。


接著我們綁定一下curl請求的接口地址,并設(shè)置一下curl請求的請求方式為post。


然后綁定要發(fā)送的post數(shù)據(jù)到curl。

設(shè)置一下返回內(nèi)容為字符串,而不是直接打印到屏幕上面。

最后我們調(diào)用curl_exec來發(fā)送curl請求并接受結(jié)果,然后將結(jié)果打印出來。

好了腳本到此就編寫好了, 我們使用php -l來檢查一下該文件有沒有語法錯誤,然后使用php命令來執(zhí)行這個腳本。最后該接口的返回我們就看到了。這里我的調(diào)用返回了403,被禁止訪問了。


【使用方法】
1、獲得一張頁面
使用命令:curl http://curl.haxx.se
這是最簡單的使用方法。用這個命令獲得了http://curl.haxx.se指向的頁面,同樣,如果這里的URL指向的是一個文件或者一幅圖都可以直接下載到本地。如果下載的是HTML文檔,那么缺省的將不顯示文件頭部,即HTML文檔的header。要全部顯示,請加參數(shù) -i,要只顯示頭部,用參數(shù) -I。任何時候,可以使用 -v 命令看curl是怎樣工作的,它向服務(wù)器發(fā)送的所有命令都會顯示出來。為了斷點續(xù)傳,可以使用-r參數(shù)來指定傳輸范圍。
2、使用PUT方法。
HTTP協(xié)議文件上傳的標準方法是使用PUT,此時curl命令使用-T參數(shù):
curl -T uploadfile www.uploadhttp.com/receive.cgi
3、有關(guān)認證。
curl可以處理各種情況的認證頁面,例如下載用戶名/密碼認證方式的頁面(在IE中通常是出現(xiàn)一個輸入用戶名和密碼的輸入框):
curl -u name:password www.secrets.com
如果網(wǎng)絡(luò)是通過http代理服務(wù)器出去的,而代理服務(wù)器需要用戶名和密碼,那么輸入:
curl -U proxyuser:proxypassword http://curl.haxx.se
任何需要輸入用戶名和密碼的時候,只在參數(shù)中指定用戶名而空著密碼,curl可以交互式的讓用戶輸入密碼。
4、引用。
有些網(wǎng)絡(luò)資源訪問的時候必須經(jīng)過另外一個網(wǎng)絡(luò)地址跳轉(zhuǎn)過去,這用術(shù)語來說是:referer,引用。對于這種地址的資源,curl也可以下載:
curl -e http://curl.haxx.se daniel.haxx.se
5、指定用戶客戶端。
有些網(wǎng)絡(luò)資源首先需要判斷用戶使用的是什么瀏覽器,符合標準了才能夠下載或者瀏覽。此時curl可以把自己“偽裝”成任何其他瀏覽器:
curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL]
這個指令表示curl偽裝成了IE5.0,用戶平臺是Windows 2000。(對方服務(wù)器是根據(jù)這個字串來判斷客戶端的類型的,所以即使使用AIX也無所謂)。使用:
curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]
此時curl變成了Netscape,運行在PIII平臺的Linux上了。
6、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
7、加密的HTTP——HTTPS。
如果是通過OpenSSL加密的https協(xié)議傳輸?shù)木W(wǎng)頁,curl可以直接訪問:
curl https://that.secure.server.com
8、http認證。
如果是采用證書認證的http地址,證書在本地,那么curl這樣使用:
curl -E mycert.pem https://that.secure.server.com



































