curl命令整理

來源:互聯網
上載者:User

標籤:判斷   cap   creat   時間設定   pass   目錄   -name   request   passwd   


##curl命令


curl命令是一個功能強大的網路工具,它能夠通過http、ftp等方式下載檔案,也能夠上傳檔案。

#####1. 下載單個檔案,預設將輸出列印到標準輸出中(STDOUT)中
```
curl http://www.baidu.com
```

#####2. 通過-o/-O選項儲存下載的檔案到指定的檔案中:
-o:將檔案儲存為命令列中指定的檔案名稱(mypage.html)的檔案中

```
curl -o mypagebaidu.html http://www.baidu.com

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

curl http://www.yahoo.com >mypageyahoo.html

```
-O:使用URL中預設的檔案名稱儲存檔案到本地
```
curl -O http://www.qq.com

```
同時擷取多個檔案
```

curl -O www.sohu.com -O www.sina.com.cn

```

#####3. 斷點續傳:
當檔案在下載完成前結束該進程,可通過-C 選項繼續對該檔案進行下載(已經下載過的檔案不會被下載)

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

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

```

#####4.對CURL使用網路限速
通過--limit-rate選項對CURL的最大網路使用進行限制

```
curl --limit-rate 1000B -O
http://www.gnu.org/software/gettext/manual/gettext.html

```

#####5. 下載指定時間內修改過的檔案
當下載一個檔案時,可對該檔案的最後修改日期進行判斷,如果該檔案在指定日期內修改過,就進行下載,否則不下載。
該功能可通過使用-z選項來實現:

```
// 若yy.html檔案在2011/12/21之後有過更新才會進行下載
curl -z 21-Dec-11 http://www.example.com/yy.html

```

#####6.CURL授權
在訪問需要授權的頁面時,可通過-u選項提供使用者名稱和密碼進行授權
```
curl -u username:password URL
```
通常的做法是在命令列只輸入使用者名稱,之後會提示輸入密碼,這樣可以保證在查看記錄時不會將密碼泄露

```
curl -u username URL
```

#####7.FTP下載
CURL同樣支援FTP下載,若在url中指定的是某個檔案路徑而非具體的某個要下載的檔案名稱,CURL則會列出該目錄下的所有檔案名稱而並非下載該目錄下的所有檔案

```
// 列出public_html下的所有檔案夾和檔案
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

// 下載xss.php檔案
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
```

#####8.上傳檔案到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
```

#####9. 儲存與使用網站cookie資訊
```
// 將網站的cookies資訊儲存到sugarcookies檔案中
curl -D sugarcookies http://localhost/sugarcrm/index.php

// 使用上次儲存的cookie資訊
curl -b sugarcookies http://localhost/sugarcrm/index.php
```

#####10.傳遞請求資料

預設curl使用GET方式請求資料,這種方式下直接通過URL傳遞資料
```
curl -u username https://api.github.com/user?access_token=XXXXXXXXXX

```
可以通過 --data/-d 方式指定使用POST方式傳遞資料
```
curl -u username --data "param1=value1&param2=value" https://api.github.com
```

也可以指定一個檔案,將該檔案中的內容當作資料傳遞給伺服器端
```
curl --data @filename https://github.api.com/authorizations
```
預設情況下,通過POST方式傳遞過去的資料中若有特殊字元,首先需要將特殊字元轉義在傳遞給伺服器端,如value值中包含有空格,則需要先將空格轉換成%20
```
curl -d "value%201" http://hostname.com
```
在新版本的CURL中,提供了新的選項 --data-urlencode,通過該選項提供的參數會自動轉義特殊字元。
```
curl --data-urlencode "value 1" http://hostname.com
```
除了使用GET和POST協議外,還可以通過 -X 選項指定其它協議
```
curl -I -X DELETE https://api.github.cim
```

POST 一個 jason
這裡想要post Json資料到介面上,需要設定好Header,也就是:‘Content-type‘:‘application/x-www-form-urlencoded‘, ‘charset‘:‘utf-8‘, ‘Accept‘: ‘text/plain‘。

```
curl -i -X POST -H "‘Content-type‘:‘application/x-www-form-urlencoded‘, ‘charset‘:‘utf-8‘, ‘Accept‘: ‘text/plain‘" -d ‘json_data={"a":"aaa","b":"bbb","data":[{"c":"ccc","d":"ddd","keywords":[{"e": "eee", "f":"fff", "g":"ggg"}]}]}‘ url

```


curl命令參數

  -a/--append 上傳檔案時,附加到目標檔案

  -A/--user-agent <string> 設定使用者代理程式發送給伺服器

  - anyauth 可以使用“任何”驗證方法

  -b/--cookie <name=string/file> cookie字串或檔案讀取位置

  - basic 使用HTTP基本驗證

  -B/--use-ascii 使用ASCII /文本傳輸

  -c/--cookie-jar <file> 操作結束後把cookie寫入到這個檔案中

  -C/--continue-at <offset> 斷點續轉

  -d/--data <data> HTTP POST方式傳送資料

  --data-ascii <data> 以ascii的方式post資料

  --data-binary <data> 以二進位的方式post資料

  --negotiate 使用HTTP身分識別驗證

  --digest 使用數字身分識別驗證

  --disable-eprt 禁止使用EPRT或LPRT

  --disable-epsv 禁止使用EPSV

  -D/--dump-header <file> 把header資訊寫入到該檔案中

  --egd-file <file> 為隨機資料(SSL)設定EGD socket路徑

  --tcp-nodelay 使用TCP_NODELAY選項

  -e/--referer 來源網址

  -E/--cert <cert[:passwd]> 用戶端認證檔案和密碼 (SSL)

  --cert-type <type> 認證檔案類型 (DER/PEM/ENG) (SSL)

  --key <key> 私密金鑰檔案名稱 (SSL)

  --key-type <type> 私密金鑰檔案類型 (DER/PEM/ENG) (SSL)

  --pass <pass> 私密金鑰密碼 (SSL)

  --engine <eng> 加密引擎使用 (SSL). "--engine list" for list

  --cacert <file> CA認證 (SSL)

  --capath <directory> CA目錄 (made using c_rehash) to verify peer against (SSL)

  --ciphers <list> SSL密碼

  --compressed 要求返回是壓縮的形勢 (using deflate or gzip)

  --connect-timeout <seconds> 設定最大請求時間

  --create-dirs 建立本地目錄的目錄階層

  --crlf 上傳是把LF轉變成CRLF

  -f/--fail 串連失敗時不顯示http錯誤

  --ftp-create-dirs 如果遠程目錄不存在,建立遠程目錄

  --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用

  --ftp-pasv 使用 PASV/EPSV 代替連接埠

  --ftp-skip-pasv-ip 使用PASV的時候,忽略該IP地址

  --ftp-ssl 嘗試用 SSL/TLS 來進行ftp資料轉送

  --ftp-ssl-reqd 要求用 SSL/TLS 來進行ftp資料轉送

  -F/--form <name=content> 類比http表單提交資料

  -form-string <name=string> 類比http表單提交資料

  -g/--globoff 禁用網址序列和範圍使用{}和[]

  -G/--get 以get的方式來發送資料

  -h/--help 協助

  -H/--header <line> 自訂頭資訊傳遞給伺服器

  --ignore-content-length 忽略的HTTP頭資訊的長度

  -i/--include 輸出時包括protocol頭資訊

  -I/--head 只顯示文檔資訊
  
  -j/--junk-session-cookies 忽略會話Cookie

  - 介面<interface> 指定網路介面/地址使用

  - krb4 <層級> 啟用與指定的安全層級krb4

  -j/--junk-session-cookies 讀取檔案進忽略session cookie

  --interface <interface> 使用指定網路介面/地址

  --krb4 <level> 使用指定安全層級的krb4

  -k/--insecure 允許不使用認證到SSL網站

  -K/--config 指定的設定檔讀取

  -l/--list-only 列出ftp目錄下的檔案名稱

  --limit-rate <rate> 設定傳輸速度

  --local-port<NUM> 強制使用本地連接埠號碼

  -m/--max-time <seconds> 設定最大傳輸時間

  --max-redirs <num> 設定最大讀取的目錄數

  --max-filesize <bytes> 設定最大下載的檔案總量

  -M/--manual 顯示全手動

  -n/--netrc 從netrc檔案中讀取使用者名稱和密碼

  --netrc-optional 使用 .netrc 或者 URL來覆蓋-n

  --ntlm 使用 HTTP NTLM 身分識別驗證

  -N/--no-buffer 禁用緩衝輸出

  -o/--output 把輸出寫到該檔案中

  -O/--remote-name 把輸出寫到該檔案中,保留遠程檔案的檔案名稱

  -p/--proxytunnel 使用HTTP代理

  --proxy-anyauth 選擇任一Proxy 驗證方法

  --proxy-basic 在代理上使用基本驗證

  --proxy-digest 在代理上使用數字身分識別驗證

  --proxy-ntlm 在代理上使用ntlm身分識別驗證

  -P/--ftp-port <address> 使用連接埠地址,而不是使用PASV

  -Q/--quote <cmd> 檔案傳輸前,發送命令到伺服器

  -r/--range <range> 檢索來自HTTP/1.1或FTP伺服器位元組範圍

  --range-file 讀取(SSL)的隨機檔案

  -R/--remote-time 在本地組建檔案時,保留遠程檔案時間

  --retry <num> 傳輸出現問題時,重試的次數

  --retry-delay <seconds> 傳輸出現問題時,設定稍候再試時間

  --retry-max-time <seconds> 傳輸出現問題時,設定最大重試時間

  -s/--silent 靜音。不輸出任何東西

  -S/--show-error 顯示錯誤

  --socks4 <host[:port]> 用socks4代理給定主機和連接埠

  --socks5 <host[:port]> 用socks5代理給定主機和連接埠

  --trace <file> 對指定檔案進行debug

  --trace-ascii <file> Like -- 跟蹤但沒有hex輸出

  --trace-time 跟蹤/詳細輸出時,新增時間戳記

  -T/--upload-file <file> 上傳檔案

  -u/--user <user[:password]> 設定伺服器的使用者和密碼

  -U/--proxy-user <user[:password]> 設定代理使用者名稱和密碼

  -V/--version 顯示版本資訊

  -w/--write-out [format] 什麼輸出完成後

  -x/--proxy <host[:port]> 在給定的連接埠上使用HTTP代理

  -X/--request <command> 指定什麼命令

  -y/--speed-time 放棄限速所要的時間。預設為30

  -Y/--speed-limit 停止傳輸速度的限制,速度時間‘秒

  -z/--time-cond 傳送時間設定

  -0/--http1.0 使用HTTP 1.0

  -1/--tlsv1 使用TLSv1(SSL)

  -2/--sslv2 使用SSLv2的(SSL)

  -3/--sslv3 使用的SSLv3(SSL)

  --3p-url 使用url,進行第三方傳送

  --3p-user 使用使用者名稱和密碼,進行第三方傳送

  -4/--ipv4 使用IP4

  -6/--ipv6 使用IP6

  -#/--progress-bar 用進度條顯示當前的傳送狀態

 

curl命令整理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.