1. 程式人生 > >curl 使用舉例詳解(一)

curl 使用舉例詳解(一)

一、最新版本

你可以在官網上了解到curl的開發的最新情況,並下載到最新版本的程式。

二、相對簡單的用法

1、從Netscape的網頁伺服器上獲得該網站的主頁:

curl http://www.netscape.com/

2、從futnet的ftp伺服器的使用者主目錄獲得指定檔案:README

curl ftp://ftp.funet.fi/README

3、使用伺服器的8000埠獲得web主頁:

curl http://www.weirdserver.com:8000/

4、列出ftp站點目錄中的檔案:

curl ftp://cool.haxx.se/

5、從字典查詢網站獲得詞條curl
的定義:

curl dict://dict.org/m:curl

6、次性操作取得二份文件:

curl ftp://cool.haxx.se/ http://www.weirdserver.com:8080/

7、從FTPS伺服器上獲取檔案:

curl ftps//files.are.secure.com/secrets.txt

或者使用推薦的方法訪問FTPS伺服器來執行相同的操作:

curl --ftp-ssl  ftp//files.are.secure.com/secrets.txt

8、使用SFTP從一個SSH伺服器上獲取一份檔案:

curl -u username sftp://example.com/etc/issue

9、從一臺使用私鑰認證(私鑰未使用密碼保護)的SSH伺服器上使用SCP獲取一份檔案:

curl -u username: --key ~/.ssh/id_rsa \
scp://example.com/~/file.txt

10、從一臺使用私鑰認證(私鑰使用密碼保護)的SSH伺服器上使用SCP獲取一份檔案:

curl -u username: --key ~/.ssh/id_rsa --pass private_key_password \
scp://example.com/~/file.txt

11、從一臺使用IPv6的網頁伺服器上獲得站點主頁:

curl "http://[2001:1890:1112:1::20
]/"

12、從一臺Samba檔案伺服器上獲得檔案:

curl -u "domain\username:passwd" smb://server.example.com/share/file.txt

三、下載檔案

1、從網頁伺服器上下載一個web頁面到當前目錄中,並重新指定檔名:

curl -o thatpage.html http://www.netscape.com/

2、從網頁伺服器上下載一個檔案儲存到本地,但不重新指定檔名:

這種情況下,需要在URL中指定待下載的檔名,否則將下載失敗

curl -O http://www.netscape.com/index.html

3、使用原檔名一次性從伺服器上下載二份檔案:

curl -O www.haxx.se/index.html -O curl.haxx.se/download.html

四、使用密碼

1、FTP

對於ftp檔案來說,應當加使用者名稱和密碼加入到URL地址中,用法如下:

curl ftp://name:[email protected]:port/full/path/to/file

或者使用引數-u來指定使用者名稱和密碼,用法如下:

curl -u name:passwd ftp://machine.domain:port/full/path/to/file

2、FTPS

FTPS使用密碼的方式與FTP的用法很像,只不過是要指定引數--ftp-ssl來進行加密認證而已。
注意:使用FTPS://為字首是以一種‘暗示’的對伺服器進行訪問標準方法;當然,你也可以使用‘明示’的方法,用FTP://字首,配合引數--ftp-ssl使用。

3、SFTP/SCP

FTP使用方法類似,但是你需要使用引數--key來指定私鑰檔案來代替系統密碼。需要注意的是,私鑰檔案本身也可以使用密碼進行保護,但這個密碼並不是遠端伺服器的登入密碼。私鑰檔案本身的密碼需要通過引數--pass來進行指定。一般情況一下,curl會自動地從私鑰檔案中提取公鑰,但是curl在沒有適當的目錄支援的情況下,則必須使用引數--plukey來指定與私鑰匹配的公鑰檔案。

4、HTTP

Curl同樣支援在HTTP``URL中使用使用者名稱和密碼,因此你可以使用下面的方法從服務上獲取檔案:

curl http://name:[email protected]/full/path/to/file

或者另行使用引數來指定使用者名稱和密碼:

curl -u name:passwd http://machine.domain/full/path/to/file

在HTTP提供的諸多認證方式中,curl支援下列認證:Basic, Digest, NTLMNegotiate (SPNEGO)。在未指定任何認證方式的情況下,curl預設使用Basic。你可以通過使用‘–anyauth’來告訴curl使用何種伺服器能夠接受的加密方式來訪問指定的URL地址。
注意:根據URL的要求,HTTP URLs是不能包含使用者名稱和密碼的。因此curl在使用代理的情況下是無法以這種方式正常工作的,即使curl有時候是允許這樣操作的。當使用代理的情況下,你必須使用引數-u來指定使用者和密碼。

5、HTTPS

HTTPS可能是私鑰認證最覺的方式,具體內容見下文。

五、代理

curl同時支援HTTPSOCKS代理伺服器,並且可以指定適當的認證方式。因為沒有相應的標準,所以curl並沒有對FTP代理伺服器進行特殊的設定,但是curl也可以大部分的FTP代理伺服器下正常工作。你可以使用HTTP或者SOCKS代理從FTp伺服器上下載和上傳檔案。

1、使用名為my-proxyHTTP代理伺服器,通過888埠,從一臺FTP伺服器上下載指定檔案:

curl -x my-proxy:888 ftp://ftp.leachsite.com/README

2、使用上面的代理伺服器,通過使用者名稱和密碼從指定的HTTP伺服器上下載檔案:

curl -u user:passwd -x my-proxy:888 http://www.get.this/

3、一些代理伺服器要求指定認證方式。所以上面的命令需要將-u改為-U

curl -U user:passwd -x my-proxy:888 http://www.get.this/

4、用逗號分隔的主機或者域名列表中,如果有不使用代理伺服器的,應如下指定:

curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/

5、如果使用--proxy1.0代替--proxy或者-x來指定代理伺服器的工作協議,那麼curl將使用HTTP/1.0代替 HTTP/1.1來嘗試進行任何連線。

6、curl使用引數--socks4--socks5來支援SOCKS4SOCKS5代理

可以參見Curl所支援的環境變更,來針對代理服務進行高階設定。

7、從FTP客戶端的角度來看,大部分的FTP代理伺服器都被設定為類似於普通的FTP伺服器,這些伺服器需要通過特殊的命令來選擇遠端伺服器。

curl支援使用-u,-Q--ftp-account選項來設定通過大多數FTP代理來檔案遠端伺服器。
舉例:使用相關引數,通過FTP代理伺服器,向遠端FTP伺服器上傳一份檔案:

curl -u "[email protected] Proxy-Username:Remote-Pass" \
--ftp-account Proxy-Password --upload-file local-file \ 
ftp://my-ftp.proxy.server:21/remote/upload/path/

檢視你的FTP代理伺服器手冊來設定與之匹配的檔案傳輸,並使用curl-v選項來檢視curl的傳輸內容。

六、範圍

HTTP 1.1引入了位元組範圍。通過這個功能,客戶端可以要求只獲取一個指定檔案的一部分內容。curl通過引數-r來支援此功能。
1、獲取一份檔案的前100個位元組:

curl -r 0-99 http://www.get.this/

2、獲取一份檔案最後500個位元組:

curl -r -500 http://www.get.this/

3、Curl同時也支援下載FTP伺服器上的檔案的一定範圍內的內容.

你可以指定檔案的開始和結束的位置。
FTP伺服器上獲取一份檔案的前100個位元組的內容:

curl -r 0-99 ftp://www.get.this/README

七、上傳

(一)、FTP / FTPS / SFTP / SCP

1、上傳標準輸入的所有資料到指定伺服器:

curl -T - ftp://ftp.upload.com/myfile

2、使用使用者名稱和密碼,上傳指定檔案到伺服器上(在URL中指定遠端檔名稱):

curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile

3、將本地檔案上傳到遠端站點,遠端伺服器上的檔案使用與本地檔案相同的檔名:

curl -T uploadfile -u user:passwd ftp://ftp.upload.com/

4、將待上傳的檔案追加指定的遠端檔案之後:

curl -T localfile -a ftp://ftp.upload.com/remotefile

5、curl也支援使用代理來完成檔案上傳到ftp,但是隻有在代理伺服器已經被配置為允許此型別的通道時才可以完成傳輸。如果代理伺服器支援話,你就可以使用與下面命令類似的命令來完成檔案的上傳:

curl --proxytunnel -x proxy:port -T localfile ftp.upload.com

(二)、SMB / SMBS

curl -T file.txt -u "domain\username:passwd" smb://server.example.com/share/

(三)、HTTP

**上傳標準輸入的所有資料到指定的HTTP站點:

curl -T - http://www.upload.com/myfile

注意:HTTP伺服器必須被事先配置為接受PUT, 上述命令才能被成功的執行。
對於HTTP資料上傳的其他方式,請參見POST的相關內容。

八、VERBOSE / DEBUG

如果curl沒有按照預想的方式執行,或者伺服器拒絕你的訪問,再或者你根本看不懂反饋資訊,請使用引數-v 來獲取完成的執行資訊。curl將輸出大量的傳送和接收資訊,來讓使用者檢視所有的客戶端和伺服器的互動內容,但它並不會顯示你的真實資料。

curl -v ftp://ftp.upload.com/

如果還想從curl獲得更為詳盡的資訊,請嘗試使用引數--trace或者--trace-ascii 同時指定日誌檔案的名稱:

curl --trace trace.txt www.haxx.se

相關推薦

curl 使用舉例(

一、最新版本 你可以在官網上了解到curl的開發的最新情況,並下載到最新版本的程式。 二、相對簡單的用法 1、從Netscape的網頁伺服器上獲得該網站的主頁: curl http://www.netscape.com/ 2、從

curl 使用舉例(四

十八、FTP的路徑和檔名 需要強調的當從一個以ftp://開頭的URL地址下獲取檔案的時候,給定的路徑是與你進入的目錄有相關的。如,從你的ftp站點的家目錄中獲取README,你需要執行: curl ftp://user:[email protected]

Python3 如何優雅地使用正則表示式(

正則表示式介紹 正則表示式(Regular expressions 也稱為 REs,或 regexes 或 regex patterns)本質上是一個微小的且高度專業化的程式語言。它被嵌入到 Python 中,並通過 re 模組提供給程式猿使用。使用正則表示式,你需要指定一些規則來描述那些你

linux select()(-- 使用及注意事項

通過本文你會了解到: 1. select()原型及引數說明 2. select()應用情景 3. select()注意事項 4. select()作定時器 原型

Tkprof工具(轉載

depth ber 官方 Go ble 不可 _id sys 避免 在數據庫生成的oracle trace文件中,可讀性是比較差的,此時可使用tkprof工具來格式化trace文件,tkprof是一個命令行工具,作用就是把原始的跟蹤trace文件作為輸入,然後格式化一個可讀

三:python 對象類型:數字(上

結果 dom 運行 精度 升級 方法 函數 般的 代碼 一:python 的數字類型: a)整數和浮點數 b)復數 c)固定精度的十進制數 d)有理分數 e)集合 f)布爾類型 g)無窮的整數精度 h)各種數字內置函數和模塊 二:各種數字類型的詳解   1,數字常量:pyt

PHP7 學習筆記(十三composer

導出 php開發 HR build osi oschina sni 區別 優秀 摘要   從拷貝第三方代碼到項目中(1994),到PEAR安裝依賴包(1999),再到Composer興起(2012),PHP社區經歷了將近20年的探索。PHP這門古老的語言,也在不斷的發展更新

Java定時任務Timer排程器【】 原始碼分析(圖文

就以鬧鐘的例子開頭吧(後續小節皆以鬧鐘為例,所有原始碼只列關鍵部分)。 public class ScheduleDemo { public static void main(String[] args) throws InterruptedException {

STL Map使用()(包含如何按關鍵字降序排列

 Map是一種關聯容器,用來儲存key-value資料。其中的key是用來查詢的關鍵字,value是實際存放的值。 一個特定的關鍵字只能與一個唯一的值相聯絡。map是由一對一對的鍵值(key/value)所組成的排序結構體, 鍵值是讀一無二的(unique)的。

Git (Git介紹,單人本地倉庫操作

1.Git簡介 Git Git 是目前世界上最先進的分散式版本控制系統(沒有之一) 作用 原始碼管理 為什麼要進行原始碼管理? 方便多人協同開發 方便版本控制 Git管理原始碼特點 1.Git是分散式管理.伺服器和客戶端都有版本控制能力,都能進行程式碼的提交、合併、… 2.Git會在根

PHP cURL 應用(入門教程

對於做過資料採集的人來說,cURL一定不會陌生。雖然在PHP中有file_get_contents函式可以獲取遠端連結的資料,但是它的可控制性太差了,對於各種複雜情況的採集情景,file_get_contents顯得有點無能為力。因此,本文將為你介紹採集神器cURL的使用。 工具 火狐

主席樹入門(學習筆記(例題POJ-2104 求區間第k小

學習主席樹,在網上搜了很多教程(都好簡短啊,直接就是幾行字就上程式碼,看不懂啊有木有~~),最後才很艱難的學會了最基礎的部分。下面就是我在學習的過程中的產生的疑惑和解決的辦法。 學習主席樹需要的前置技能:線段樹。 參考資料 1. B站上的視訊講解(話說B站真的啥都有啊)

Spring事務管理(+例項

標籤: Spring事務管理,參考的文章如下: Spring事務機制詳解 Spring事務配置的五種方式 Spring中的事務管理例項詳解 1 初步理解 理解事務之前,先講一個你日常生活中最常乾的事:取錢。 比如你去ATM機取1000塊錢,大體有

Curl使用(六

31 TELNET遠端登入 The curl telnet support is basic and very easy to use. Curl passes all data passed to it on stdin to the remote serv

Jmeter(十) - 從入門到精通 - JMeter邏輯控制器 - 下篇(教程

1.簡介 Jmeter官網對邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。 意思是說,邏輯控制器可以控制取樣器(samplers)的執行順序。由此可知,控制器需要和取

Jmeter(二十) - 從入門到精通 - JMeter斷言 - 上篇(教程

1.簡介   最近由於巨集哥在搭建自己的個人部落格可能更新的有點慢。斷言元件用來對伺服器的響應資料做驗證,常用的斷言是響應斷言,其支援正則表示式。雖然我們的通過響應斷言能夠完成絕大多數的結果驗證工作,但是JMeter還是為我們提供了適合多個場景的斷言元件,輔助我們來更好的完成結果驗證工作。在使用JMeter進

Canny邊緣檢測算法原理及其VC實現()

常用 差分 實現圖 還需要 鏈接 傳感器 出了 關系 位置 轉自:http://blog.csdn.net/likezhaobin/article/details/6892176 圖象的邊緣是指圖象局部區域亮度變化顯著的部分,該區域的灰度剖面一般可以看作是一個階躍,既從

php中curl的使用(

lookup mpat com 2.0 libcurl borde 基於 測試 字符串 cURL 是一個利用URL語法規定來傳輸文件和數據的工具,PHP的curl是通過libcurl庫與服務器使用各種類型的協議,如HTTP、FTP、TELNET等。 PHP curl函數

Java線程()

線程 thread runnable 程序、進程、線程的概念 程序(program):是為完成特定任務、用某種語言編寫的一組指令的集合。即指一段靜態的代碼,靜態對象。 進程(process):是程序的一次執行過程,或是正在運行的一個程序。動態過程:有它自身的產生、存在和消亡的過程。 如

Java反射機制

java 反射 反射機制 工廠模式 1反射機制是什麽反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。在面向對象的世界裏,萬事萬物皆對象.在ja