日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux命令学习之:curl

發布時間:2025/3/15 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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選項。

curl http://www.centos.org

  通過-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上。

curl http://www.google.com <HTML> <HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"><TITLE>302 Moved</TITLE> </HEAD> <BODY><H1>302 Moved</H1>The document has moved<A HREF="http://www.google.com.hk/url?sa=p&amp;hl=zh-CN&amp;pref=hkredirect&amp;pval=yes&amp;q=http://www.google.com.hk/&amp;ust=1379402837567135amp;usg=AFQjCNF3o7umf3jyJpNDPuF7KTibavE4aA">here</A>. </BODY> </HTML>

  上述輸出說明所請求的檔案被轉移到了http://www.google.com.hk。

  這是可以通過使用-L選項進行強制重定向

# 讓curl使用地址重定向,此時會查詢google.com.hk站點 curl -L http://www.google.com

2、斷點續傳

  通過使用-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的最大網絡使用進行限制

# 下載速度最大不會超過1000B/second curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

  使用--max-filesize指定可下載的最大文件大小,?如果文件大小超出限制,命令則返回一個非0退出碼,如果命令正常則返回0:

curl URL --max-filesize bytes

4、下載指定時間內修改過的文件

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

# 若yy.html文件在2011/12/21之后有過更新才會進行下載 curl -z 21-Dec-11 http://www.example.com/yy.html

5、CURL授權

  在訪問需要授權的頁面時,可通過-u選項提供用戶名和密碼進行授權。

curl -u username:password URL # 通常的做法是在命令行只輸入用戶名,之后會提示輸入密碼,這樣可以保證在查看歷史記錄時不會將密碼泄露 curl -u username URL

6、從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

7、上傳文件到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

8、獲取更多信息

  通過使用 -v 和 -trace獲取更多的鏈接信息。

9、通過字典查詢單詞

# 查詢bash單詞的含義 curl dict://dict.org/d:bash # 列出所有可用詞典 curl dict://dict.org/show:db # 在foldoc詞典中查詢bash單詞的含義 curl dict://dict.org/d:bash:foldoc

10、為CURL設置代理

  -x 選項可以為CURL添加代理功能:

# 指定代理主機和端口 curl -x proxysever.test.com:3128 http://google.co.in

11、保存與使用網站cookie信息

# 將網站的cookies信息保存到sugarcookies文件中 curl -D sugarcookies http://localhost/sugarcrm/index.php # 使用上次保存的cookie信息 curl -b sugarcookies http://localhost/sugarcrm/index.php

12、傳遞請求數據

  默認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&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

13、上傳文件

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/log

14、只打印響應頭部信息

  通過-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-8
Connection: 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" URL

16、使用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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。