cUrl命令行工具下載使用心得及常用參數解釋

2020-12-13 知足常足生活圈

Curl是一個網絡傳輸工具,同wget非常相似。主要的區別在於wget默認是保存到文件,而curl將輸出定向到命令行上。這使得curl能非常方便的查看站點的內容。比如,我們可以從ifconfig.me站點得到我們本機的IP位址:

curl ifconfig.me

93.96.141.93

Windows下Curl可執行程序的下載地址為:

https://curl.haxx.se/download.html

該下載不需要編譯,可以立即執行,windows 64位下載的時候,注意點版本號那一列(如:7.49.1),不要點「Win64 ia64 zipmetalink」,點這個下載下來的為源碼。

原始碼地址為:

http://curl.haxx.se/download/

一. 如何下載Curl命令行工具?

1. 進入下載頁,選擇需要的版本(適合自身作業系統): https://curl.haxx.se/download.html

2. 根據自己的作業系統位數和是否需要SSL下載相應的版本。我這裡這裡下載curl-7.59.0-win32-mingw.zip,下載完成之後解壓到需要使用curl命令的目錄。這裡為了方便我先直接解壓到當前目錄。

3. 打開命令窗口並定位到curl命令所在的目錄,你可以使用cd命令也可以像下圖這樣快速進入:比如:cd f:\curl\bin

4. 以百度網址推送為例例:

將要提交的連結按照每行一條的格式寫入一個文本文件中,命名此文件為urls.txt,然後進入該文件所在目錄,執行如下命令:

curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=m.0460.com&token=hJPA7bOjJmh4jKaC&type=mip"

cUrl網址推送操作圖

5. 如何在任意目錄下使用cUrl命令工具

可以給Windows增加curl命令的環境變量,增加CURL_HOME環境變量,給PATH環境變量加上%CURL_HOME%; 變量值為crul工具所在目錄:如我這裡的 f:\curl\bin。

這樣就可以在命令窗口的任意目錄下使用curl命令了。

二. Curl命令行工具常用參數詳解:

下載單個文件,默認將輸出列印到標準輸出中(STDOUT)中

curl http://www.centos.org

通過-o/-O選項保存下載的文件到指定的文件中:

-o:將文件保存為命令行中指定的文件名的文件中

-O:使用URL中默認的文件名保存文件到本地

1 # 將文件下載到本地並命名為mygettext.html

2 curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

3

4 # 將文件保存到本地並命名為gettext.html

5 curl -O http://www.gnu.org/software/gettext/manual/gettext.html

同樣可以使用轉向字符">"對輸出進行轉向輸出

同時獲取多個文件

1 curl -O URL1 -O URL2

若同時從同一站點下載多個文件時,curl會嘗試重用連結(connection)。

通過-L選項進行重定向

默認情況下CURL不會發送HTTP Location headers(重定向).當一個被請求頁面移動到另一個站點時,會發送一個HTTP Loaction header作為請求,然後將請求重定向到新的地址上。

例如:訪問google.com時,會自動將地址重定向到google.com.hk上。

從FTP伺服器下載文件

CURL同樣支持FTP下載,若在url中指定的是某個文件路徑而非具體的某個要下載的文件名,CURL則會列出該目錄下的所有文件名而並非下載該目錄下的所有文件

1 # 列出public_html下的所有文件夾和文件

2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

3

4 # 下載xss.php文件

5 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

上傳文件到FTP伺服器

通過 -T 選項可將指定的本地文件上傳到FTP伺服器上

# 將myfile.txt文件上傳到伺服器

curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

# 同時上傳多個文件

curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

# 從標準輸入獲取內容保存到伺服器指定的文件中

curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

傳遞請求數據

默認curl使用GET方式請求數據,這種方式下直接通過URL傳遞數據

可以通過 --data/-d 方式指定使用POST方式傳遞數據

1 # GET

2 curl -u username https://api.github.com/user?access_token=XXXXXXXXXX

3

4 # POST

5 curl -u username --data "param1=value1&param2=value" https://api.github.com

6

7 # 也可以指定一個文件,將該文件中的內容當作數據傳遞給伺服器端

8 curl --data @filename https://github.api.com/authorizations

註:默認情況下,通過POST方式傳遞過去的數據中若有特殊字符,首先需要將特殊字符轉義在傳遞給伺服器端,如value值中包含有空格,則需要先將空格轉換成%20,如:

1 curl -d "value%201" http://hostname.com

在新版本的CURL中,提供了新的選項 --data-urlencode,通過該選項提供的參數會自動轉義特殊字符。

1 curl --data-urlencode "value 1" http://hostname.com

除了使用GET和POST協議外,還可以通過 -X 選項指定其它協議,如:

1 curl -I -X DELETE https://api.github.cim

上傳文件

1 curl --form "fileupload=@filename.txt" http://hostname/resource

-H:指定一個請求頭,如:

curl -H "Test: HelloWorld" http://127.0.0.1:8080

使用該命令,在發出的請求中會多一個 HTTP 請求頭:Test: HelloWorld

百度網址推送示例:

將要提交的連結按照每行一條的格式寫入一個文本文件中,命名此文件為urls.txt,然後進入該文件所在目錄,執行如下命令:

curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=m.0460.com&token=hJPA7bOjJmh4jKaC&type=mip"

-0:使用 HTTP/1.0 發送請求,如:

curl -O http://127.0.0.1:8080

-L:會對重定向進行處理,與 -o 參數配合使用,功能類似於 wget:

curl -L https://github.com/coreos/etcd/releases/download/v2.2.2/etcd-v2.2.2-linux-amd64.tar.gz -o etcd-v2.2.2-linux-amd64.tar.gz

-k:不安全的 HTTPS,客戶端不用驗證站點的證書,如:

curl -k https://127.0.0.1:8443

對於安全連接,還有以下參數 –ssl,–sslv2 或 -2,–sslv3 或 -3,–tlsv1 或 -l,–tlsv1.0,–tlsv1.1,–tlsv1.2

-I:不顯示消息體,如:

[root@123 ~]# curl -I http://127.0.0.1:8080

HTTP/1.1 200 OK

Server: openresty/1.9.3.1

Date: Tue, 29 Dec 2015 02:07:34 GMT

Content-Type: text/html

Content-Length: 612

Last-Modified: Sun, 29 Nov 2015 15:21:26 GMT

Connection: keep-alive

ETag: "565b17f6-264"

Accept-Ranges: bytes

-d:指定消息體,如:

curl http://127.0.0.1:8080 -d "Hello World"

-X:指定 HTTP 請求方法,如:

-XPOST HTTP 請求為 POST

-XDELETE HTTP 請求為 DELETE

該參數如果不指定,如果請求中不帶消息體,默認使用 GET 方法,否則使用 POST 方法,示例:

curl -XDELETE http://127.0.0.1:8080

相關焦點

  • Linux下curl命令的使用
    前言在Linux下,curl是一個綜合傳輸工具,既可以用來上傳文件,也可以用來下載文件,在日常使用過程中,它通常都是以下載工具的角色出現,常用來檢驗一個網址是否可以訪問。與curl命令相似的,還有wget命令,二者在功能上具有很多類似的地方,但curl由於可自定義各種請求參數所以在模擬web請求方面更擅長;wget由於支持ftp和Recursive所以在下載文件方面更擅長。
  • Linux常用命令 - curl
    curl 是一個命令行實用程序,用於將數據從伺服器或傳輸到伺服器,該伺服器設計用於在沒有用戶交互的情況下工作。使用 curl,您可以使用支持的協議(包括 HTTP、 HTTPS、 SCP、 SFTP 和 FTP)下載或上傳數據。 curl 提供了許多選項,允許您恢復傳輸、限制帶寬、代理支持、用戶認證等等。
  • curl常用方法
    有時候經常會需要在本地模擬接口訪問,有時候會使用GET,但是有時候會使用POST。這時候就會想到一個簡便的工具:curlcurl格式:curl  -H  請求頭  -d  請求體  -X  POST  接口地址參數內容格式-H(或者--header)請求頭"Content-Type:application/json"-dPOST內容'{"user": "admin", "passwd":"12345678"}'-X
  • curl 強大的網絡工具
    簡介curl 是常用的命令行工具,用來請求 Web 伺服器。它的名字就是客戶端(client)的 URL 工具的意思。它的功能非常強大,命令行參數多達幾十種。如果熟練的話,完全可以取代 Postman 這一類的圖形界面工具。本文介紹它的主要命令行參數,作為日常的參考,方便查閱。內容主要翻譯自《curl cookbook》。
  • 21 個 curl 命令練習 | Linux 中國
    我認為使用 curl 構造 HTTP 請求也許就是這樣的一項技能,所以這裡有一些 curl 練習作為實驗!什麼是 curl ?curl 是用於構造 HTTP 請求的命令行工具。我喜歡使用 curl,因為它能夠很輕鬆地測試伺服器或 API 的行為是否符合預期,但是剛開始接觸它的時候會讓你感到一些困惑!
  • curl使用指南
    curl是一個命令行工具,通過指定的URL來上傳或下載數據,並將數據展示出來。curl中的c表示client,而URL,就是URL。這裡我們介紹一下curl的使用。1. 命令行基礎1.1 命令行選項1.
  • 命令行工具開發:如何快速實現命令行提示?
    阿里妹導讀:對於稍微複雜一些的命令行工具,命令行的提示功能必不可少。那麼對於不同語言的開發者,有沒有一種簡單快捷的實現方式呢?本文分享一種快速實現的方法,使用YAML文件定義命令行工具的使用規範,再通過工具自動生成各種shell的命令行提示腳本,最後分享一些至關重要的命令行解析器。
  • JVM 常用命令行工具
    JMC 在個人開發環境中使用是免費的,但在商業環境中使用則需付費正式支持工具:這一類工具屬於長期被支持的工具實驗性工具:這一類工具帶有實驗性質,日後可能會轉正,也可能會在某個 JDK 版本中無聲無息地消失二、虛擬機進程狀況工具使用 jps(JVM Process Status Tool)可以列出正在運行的虛擬機進程,並顯示虛擬機執行主類(main 函數所在的類)名稱以及這些進程的本地虛擬機唯一
  • curl 的用法指南
    簡介curl 是常用的命令行工具,用來請求 Web 伺服器。它的名字就是客戶端(client)的 URL 工具的意思。它的功能非常強大,命令行參數多達幾十種。如果熟練的話,完全可以取代 Postman 這一類的圖形界面工具。
  • Calibre 常用命令行工具詳解之 calibre-smtp
    如果你熟悉命令行的使用,並且想要在處理電子書方面提高效率,抑或想要把一些和電子書處理相關的工作自動化,這些工具將會對你很有幫助。本文從 Calibre 提供的這些命令行工具中挑選了常用的 3 款,分別為:ebook-meta、ebook-convert、calibre-smtp,詳細介紹它們如何使用,以及都適用於哪些應用場景。這些內容需要你懂一點點命令行知識。
  • Calibre 常用命令行工具詳解之 ebook-convert
    如果你熟悉命令行的使用,並且想要在處理電子書方面提高效率,抑或想要把一些和電子書處理相關的工作自動化,這些工具將會對你很有幫助。本文從 Calibre 提供的這些命令行工具中挑選了常用的 3 款,分別為:ebook-meta、ebook-convert、calibre-smtp,詳細介紹它們如何使用,以及都適用於哪些應用場景。這些內容需要你懂一點點命令行知識。
  • 前端應該會的23個linux常用命令
    常用 options2、rm 命令 : 刪除文件/目錄options:3、tail 命令 : 查看文件內容tail 命令可用於查看文件的內容,有一個常用的參數 -f 常用於查閱正在改變的日誌文件。tail -f filename 會把 filename 文件裡的最尾部的內容顯示在屏幕上,並且不斷刷新,只要 filename 更新就可以看到最新的文件內容。
  • 這23個linux常用命令必須會!
    3. tail 命令 : 查看文件內容tail 命令可用於查看文件的內容,有一個常用的參數 -f 常用於查閱正在改變的日誌文件。ps [options]常用 optionsps -ef # 顯示所有命令,連帶命令行17. | 命令 : 管道命令通常情況下,我們只執行一條命令,那麼如何執行多條命令呢?
  • 非常值得一看的 Curl 用法指南
    導讀curl 是常用的命令行工具,用來請求 Web 伺服器。它的名字就是客戶端(client)的 URL 工具的意思。它的功能非常強大,命令行參數多達幾十種。如果熟練的話,完全可以取代 Postman 這一類的圖形界面工具。
  • 3分鐘短文|Linux 使用curl發起post請求的4個常用方式
    引言cURL是一種命令行實用程序,用於使用一種受支持的協議,從遠程伺服器傳輸數據,或將數據傳輸到遠程伺服器。默認情況下,已安裝在macOS和大多數Linux發行版上。開發人員可以使用cURL來測試API接口,查看響應頭和發出HTTP請求。
  • 用linux命令瀏覽網頁:用Wget命令來瀏覽網頁
    用linux命令瀏覽網頁:用Wget命令來瀏覽網頁 以下是在liux模式下用linux命令瀏覽網頁的方法,可以用linux命令:lynx,links瀏覽web,linux命令:lftp,wget,curl等上傳/下載軟體。
  • curl 和Wget功能比較
    用過Linux和命令行的人可能都知道Wget和Curl,很多碼農可能都用Curl寫過程序,但是要說兩者的區別可能很多人說不上了。本文我們對兩者進行一個比較。共同點兩者都是命令行工具,可以從FTP,HTTP和HTTPS下載內容。
  • Linux curl 常用示例
    curl 常用案例講解。 1.
  • PHP 使用 CURL 詳解
    >上述代碼中使用到了四個函數curl_init() 和 curl_close() 分別是初始化CURL連接和關閉CURL連接,都比較簡單。curl_exec() 執行CURL請求,如果沒有錯誤發生,該函數的返回是對應URL返回的數據,以字符串表示滿意;如果發生錯誤,該函數返回 FALSE。
  • 在PHP中使用CURL實現GET和POST請求的方法
    1.CURL介紹CURL是一個利用URL語法規定來傳輸文件和數據的工具.支持很多協議,如HTTP、FTP、TELNET等。