linux命令学习之:curl
curl命令是一個利用URL規則在命令行下工作的開源文件傳輸工具。它支持文件的上傳和下載,所以是綜合傳輸工具,但按傳統,習慣稱curl為下載工具。作為一款強力工具,curl支持包括HTTP、HTTPS、ftp等眾多協議,還支持POST、cookies、認證、從指定偏移處下載部分文件、用戶代理字符串、限速、文件大小、進度條等特征。它被廣泛應用在Unix、多種Linux發行版中,并且有DOS和Win32、Win64下的移植版本。
如果系統沒有curl可以使用yum install curl安裝,也可以下載安裝。
語法
curl(選項)(參數)
選項
常用實例
1、文件下載
下載單個文件,默認將輸出打印到標準輸出中(STDOUT)中。curl是將下載文件輸出到stdout,將進度信息輸出到stderr,不顯示進度信息使用--silent選項。
通過-o/-O選項保存下載的文件到指定的文件中:
-o:將文件保存為命令行中指定的文件名的文件中;
-O:使用URL中默認的文件名保存文件到本地;
--progress:顯示進度條;
# 將文件下載到本地并命名為mygettext.html curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html # 將文件保存到本地并命名為gettext.html curl -O http://www.gnu.org/software/gettext/manual/gettext.html同樣可以使用轉向字符">"對輸出進行轉向輸出。
同時獲取多個文件
curl -O URL1 -O URL2若同時從同一站點下載多個文件時,curl會嘗試重用鏈接(connection)。
通過-L選項進行重定向。
默認情況下CURL不會發送HTTP Location headers(重定向),當一個被請求頁面移動到另一個站點時,會發送一個HTTP Loaction header作為請求,然后將請求重定向到新的地址上。
例如:訪問google.com時,會自動將地址重定向到google.com.hk上。
上述輸出說明所請求的檔案被轉移到了http://www.google.com.hk。
這是可以通過使用-L選項進行強制重定向
# 讓curl使用地址重定向,此時會查詢google.com.hk站點 curl -L http://www.google.com2、斷點續傳
通過使用-C選項可對大文件使用斷點續傳功能
curl URL/File -C
偏移量 #偏移量是以字節為單位的整數,如果讓curl自動推斷出正確的續傳位置使用-C -
# 當文件在下載完成之前結束該進程 $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20.1% # 通過添加-C選項繼續對該文件進行下載,已經下載過的文件不會被重新下載 curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21.1%3、對CURL使用網絡限速
通過--limit-rate選項對CURL的最大網絡使用進行限制
使用--max-filesize指定可下載的最大文件大小,?如果文件大小超出限制,命令則返回一個非0退出碼,如果命令正常則返回0:
curl URL --max-filesize bytes4、下載指定時間內修改過的文件
當下載一個文件時,可對該文件的最后修改日期進行判斷,如果該文件在指定日期內修改過,就進行下載,否則不下載。
該功能可通過使用-z選項來實現:
5、CURL授權
在訪問需要授權的頁面時,可通過-u選項提供用戶名和密碼進行授權。
curl -u username:password URL # 通常的做法是在命令行只輸入用戶名,之后會提示輸入密碼,這樣可以保證在查看歷史記錄時不會將密碼泄露 curl -u username URL6、從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.php7、上傳文件到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.txt8、獲取更多信息
通過使用 -v 和 -trace獲取更多的鏈接信息。
9、通過字典查詢單詞
# 查詢bash單詞的含義 curl dict://dict.org/d:bash # 列出所有可用詞典 curl dict://dict.org/show:db # 在foldoc詞典中查詢bash單詞的含義 curl dict://dict.org/d:bash:foldoc10、為CURL設置代理
-x 選項可以為CURL添加代理功能:
# 指定代理主機和端口 curl -x proxysever.test.com:3128 http://google.co.in11、保存與使用網站cookie信息
# 將網站的cookies信息保存到sugarcookies文件中 curl -D sugarcookies http://localhost/sugarcrm/index.php # 使用上次保存的cookie信息 curl -b sugarcookies http://localhost/sugarcrm/index.php12、傳遞請求數據
默認curl使用GET方式請求數據,這種方式下直接通過URL傳遞數據,可以通過 --data/-d 方式指定使用POST方式傳遞數據。
# GET curl -u username https://api.github.com/user?access_token=XXXXXXXXXX# POST curl -u username --data "param1=value1¶m2=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.cim13、上傳文件
curl --form "fileupload=@filename.txt" http://hostname/resource curl -F "key=value" -F "filename=@file.tar.gz" http://localhost/upload如果使用了-F參數,curl會以multipart/form-data的方式發送POST請求。-F以key=value的形式指定要上傳的參數,如果是文件,則需要使用key=@file的形式。
如果使用-d命令,curl會以application/x-www-url-encoded格式上傳參數。
curl -d "action=del" -d "id=12" http://localhost/test如果要以json格式上傳參數,需要使用-H在命令中指定。
curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' http://localhost/api/log14、只打印響應頭部信息
通過-I或者-head可以只打印出HTTP頭部信息:
[root@localhost text]# curl -I http://man.linuxde.net HTTP/1.1 200 OK Server: nginx/1.2.5 date: Mon, 10 Dec 2012 09:24:34 GMT Content-Type: text/html;charset=UTF-8Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: http://man.linuxde.net/xmlrpc.php
15、用curl設置用戶代理字符串
有些網站訪問會提示只能使用IE瀏覽器來訪問,這是因為這些網站設置了檢查用戶代理,可以使用curl把用戶代理設置為IE,這樣就可以訪問了。
使用--user-agent或者-A選項:
curl URL --user-agent "Mozilla/5.0" curl URL -A "Mozilla/5.0"其他HTTP頭部信息也可以使用curl來發送,使用-H"頭部信息" 傳遞多個頭部信息,例如:?
curl -H "Host:man.linuxde.net" -H "accept-language:zh-cn" URL16、使用curl設置參照頁字符串
參照頁是位于HTTP頭部中的一個字符串,用來表示用戶是從哪個頁面到達當前頁面的,如果用戶點擊網頁A中的某個連接,那么用戶就會跳轉到B網頁,網頁B頭部的參照頁字符串就包含網頁A的URL。
使用--referer選項指定參照頁字符串:
curl --referer http://www.google.com http://man.linuxde.net轉載于:https://www.cnblogs.com/jing99/p/7880285.html
總結
以上是生活随笔為你收集整理的linux命令学习之:curl的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Jmeter自学】badboy使用(三
- 下一篇: linux 其他常用命令