1. 程式人生 > >curl講解第一篇---入門和基本使用

curl講解第一篇---入門和基本使用

概念

它支援很多協議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。 curl同樣支援HTTPS認證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認證,HTTP上傳,代理伺服器, cookies, 使用者名稱/密碼認證, 下載檔案斷點續傳,上載檔案斷點續傳,,http代理伺服器管道( proxy tunneling), 甚至它還支援IPv6, socks5代理伺服器,,通過http代理伺服器上傳檔案到FTP伺服器等等,功能十分強大。 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 下載它。 [1]curl的最新版本是7.29.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方法,例如在頁面中有這樣一段: <form method="GET" action="junk.cgi"> <input type=text name="birthyear"> <input type=submit name=press value="OK"> </form> 那麼
瀏覽器
上會出現一個文字框和一個標為“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,這裡有一個網頁: <form method="POST" action="junk.cgi"> <input type=text name="birthyear"> <input type=submit name=press value="OK"> </form> 瀏覽器上也會出現一個文字框和一個標為“OK”的按鈕。按下這個按鈕,表單用POST方法向伺服器提交資料。 這時的URL是看不到的,因此需要使用特殊的方法來抓取這個頁面: curl -d "birthyear=1905&press=OK" www.hotmail. com/when/junk.cgi 這個命令就可以做到。 1995年年末,RFC 1867定義了一種新的POST方法,用來上傳檔案。主要用於把本地檔案上傳到伺服器。此時頁面是這樣寫的: <form method="POST" enctype='multipart/form-data' action="upload.cgi"> <input type=file name=upload> <input type=submit name=press value="OK"> </form> 對於這種頁面,curl的用法不同: curl -F [email protected] -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的格式。

編輯本段

學習資料: 2  

相關推薦

curl講解第一---入門基本使用

概念 它支援很多協議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。 curl同樣支援HTTPS認證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認證,HTTP

第一 : Docker的基本概念框架

一、Docker簡介 什麼是容器 ? 一種虛擬化的方案 作業系統級別的虛擬化 只能執行相同或相似的核心作業系統 依賴於Linux核心特性:Namespace和Cgroups(Control Group) 容器技術有哪些優點 ?

Linux的基礎入門基本命令

more命令 title ria p s sed 打印 ctrl 發行版 tdi 什麽是shell? shell 是一個命令語言解釋器(command-language interpreter)。 擁有自己內建的 shell 命令集。此外,shell也能被系統中其他有效的L

redis入門基本應用

1.redis的五種儲存結構 字元型別 雜湊型別 列表型別 集合型別 有序集合 2.redis的應用場景 資料快取(商品資料、新聞、熱點資料) 單點登入 秒殺、搶購 網站訪問排名…

HDFS 入門基本操作

1、HDFS 是做什麼的   Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS,hdfs是分散式計算中資料儲存管理的基礎,是基於流資料模式訪問和處理超大檔案的需求而開發的,可以運行於廉價的商用伺服器上。它所具有的高容錯、高可靠性、高可擴充套件

scala開發快速入門 | 第一 入門

一、scala簡介Scala語言是集面向物件和麵向函式思想於一體的程式語言。特點:1)它的設計吸收借鑑了多種程式語言的思想,只有很少的特點是scala自己獨有的。2)其程式執行在JVM上,並且相容java程式,Scala可以呼叫java方法,訪問java欄位,繼承java類,

hibernate入門基本操作

什麼是框架 寫程式,使用框架之後,幫我們實現一部分功能,使用框架好處,少寫一部分程式碼實現功能 什麼是hibernate框架(重點) hibernate框架應用在javaee三層結構中dao層框架 在dao層裡面做對資料庫crud(增刪改查)操作,使

RabbitMQ之入門基本概念

目錄 簡介 基本概念 ConnectionFactory、Connection、Channel——基本物件 Queue訊息佇列——內部物件 exchange訊息分發策略(路由) 1. Direct策略 2. Fanout策略 3. Topic策略 4. Heade

hive第一----簡介使用客戶端

  Hive是Hadoop專案中的一個子專案,由FaceBook向Apache基金會貢獻,其中TaoBao也是其中一位使用者+貢獻者,Hive被視為一個倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並可以將sql語句轉換為 MapReduce 任務進行執行。 其優點是學習成本低,可以通過類SQL語句

以軟體師為目標第一入門部落格

我現在是一名大二軟體工程的在讀大學生,當初選擇這個專業就是因為內心的熱愛,我學習程式設計的目的就是能夠成為一個優秀的軟體測試師,作為女生我希望能夠在計算機這個行業開創出一片屬於自己的天地,也許我現在技

git config命令使用第一——介紹,基本操作,增刪改查

本文轉自: http://blog.csdn.net/hutaoer06051/article/details/8275069 平時我們在使用git的時候,很少去關注其配置是如何,而在實際開發中,對git config這個命令的使用也並不是很多,但是配置對一個程式和專案來說

Sharding-JDBC 使用入門基本配置

  一、什麼是Sharding-JDBC Sharding-JDBC定位為輕量級Java框架,在Java的JDBC層提供的額外服務。它使用客戶端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全相容JDBC和各種ORM框架。 二、Sharding-JDB

js教程--從入門到精通 第一 js的前世今生以及js中基本資料型別引入方式

1、Javascript前世今生    1.1、什麼是Javascript       Javascript運行於Javascript 【直譯器/引擎】中的解釋性指令碼語言     &nb

js教程--從入門到精通 第一 js的前世今生以及js中基本數據類型引入方式

美國 ros 發布 命令行工具 相似性 百度瀏覽器 個數字 網頁瀏覽 實現 1、Javascript前世今生 1.1、什麽是Javascript Javascript運行於Javascript 【解釋器/引擎】中的解釋性腳本語言 Javascrip

Python自學之路【第一】:Python簡介入門

youtube 通用 too 互聯網公司 python腳本 bar strong 重裝 排行 Python前世今生 python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本

Python之路【第一】:Python簡介入門

源碼 world 網絡服務 換行 編程風格 大小寫 utf8 編譯安裝 比較 python簡介: 一、什麽是python Python(英國發音:/ pa θ n/ 美國發音:/ pa θɑ n/),是一種面向對象、直譯式的計算機程序語言。 每一門語言都有自己的哲學: py

Python之路【第一】:Python簡介入門

readline def 美團 sys eric gcc 下劃線 博客 height Python簡介 Python前世今生 python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發

MySQL的儲存過程函式入門 第一

最近開發中用到儲存過程和函式,就順便學習一下了。 1.什麼是儲存過程和函式?   儲存過程和函式是事先經過編譯並存儲在資料庫的一段SQL語句集合,呼叫儲存過程和函式可以減少資料庫和應用伺服器之間的傳輸,對於提高資料處理的效率是有好處的。 2.儲存過程和函式的區別 函式

MongoDB -01- 介紹安裝基本使用(入門

MongoDB -01- 介紹安裝和基本使用(入門篇) 相信大家都接觸過一些關係型資料庫,像 Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL 等,常見的關係型資料庫和非關係型都有哪些? 這一篇文章也提出了一些關係型資料庫的

單點登入(SSO)入門第一--基本概念

本文簡要介紹了SSO的概念,使用場景及其基本實現原理 一、SSO是什麼 SSO英文全稱為Single Sign On,即我們常說的單點登入,指的是在多個相關的應用系統中,使用者只需要使用使用者名稱密碼登入一次就可以訪問所有相互信任的應用系統。 二、為什麼要引入SS