Linux 命令-curl 常用命令

Linux 命令-curl 常用命令

下載單個(gè)文件

cur http://www.demo.com 默認(rèn)將輸出打印到標(biāo)準(zhǔn)輸出中(STDOUT)中

通過-o/-O 選項(xiàng)保存下載的文件到指定的文件中

  1. -o:將文件保存為命令行中指定的文件名的文件中
    curl -o test.html http://www.demo.com/index.html 將文件保存到本地并命名為 test.html
  2. -O:使用 URL 中默認(rèn)的文件名保存文件到本地
    curl -O http://www.demo.com/index.html 將文件下載到本地并命名為 index.html
  3. curl -O URL1 -O URL2 同時(shí)獲取多個(gè)文件
    若同時(shí)從同一站點(diǎn)下載多個(gè)文件時(shí),curl 會(huì)嘗試重用鏈接

補(bǔ)充

  1. curl http://www.demo.com/index.html > test.html 可以使用 > 符號(hào)將輸出重定向到本地文件中
  2. 有時(shí)候下載圖片可以能是前面的部分名稱是一樣的,就最后的尾椎名不一樣 curl -O http://www.linux.com/dodo[1-5].JPG 這樣就會(huì)把 dodo1,dodo2,dodo3,dodo4,dodo5 全部保存下來
  3. 有時(shí)候下載的東西會(huì)比較大,這個(gè)時(shí)候我們可以分段下載。使用內(nèi)置 option:-r
# curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
# curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
# curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG
# cat dodo1_part* > dodo1.JPG

這樣就可以查看 dodo1.JPG 的內(nèi)容了

通過-L 選項(xiàng)進(jìn)行重定向

curl -L http://www.baidu.com 有時(shí)候我們想要 curl 做的,就是像瀏覽器一樣跟隨鏈接的跳轉(zhuǎn),獲取最終的網(wǎng)頁內(nèi)容。我們可以在命令中添加 -L 選項(xiàng)來跟隨鏈接重定向

通過使用-C 選項(xiàng)可對(duì)大文件使用斷點(diǎn)續(xù)傳功能

curl -C - -O http://www.demo.com/index.html 通過添加-C 選項(xiàng)繼續(xù)對(duì)該文件進(jìn)行下載,已經(jīng)下載過的文件不會(huì)被重新下載, 突然掉線了,也可以使用以下的方式續(xù)傳

通過--limit-rate 選項(xiàng)對(duì) CURL 的最大網(wǎng)絡(luò)使用進(jìn)行限制

curl --limit-rate 1000B -O http://www.demo.com/index.html 下載速度最大不會(huì)超過 1000B/second

通過使用-z 選項(xiàng)來實(shí)現(xiàn)下載指定時(shí)間內(nèi)修改過的文件

  • 當(dāng)下載一個(gè)文件時(shí),可對(duì)該文件的最后修改日期進(jìn)行判斷,如果該文件在指定日期內(nèi)修改過,就進(jìn)行下載,否則不下載。
  • curl -z 21-Dec-11 http://www.demo.com/index.html 若 index.html 文件在 2011/12/21 之后有過更新才會(huì)進(jìn)行下載

通過-u 選項(xiàng)提供用戶名和密碼進(jìn)行授權(quán)

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

從 FTP 服務(wù)器下載文件

  • CURL 同樣支持 FTP 下載,若在 url 中指定的是某個(gè)文件路徑而非具體的某個(gè)要下載的文件名,CURL 則會(huì)列出該目錄下的所有文件名而并非下載該目錄下的所有文件
  • curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/ 列出 public_html 下的所有文件夾和文件
  • curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php 下載 xss.php 文件

補(bǔ)充

  1. curl -O -u 用戶名:密碼 ftp://www.linux.com/dodo1.JPG
  2. curl -O ftp://用戶名:密碼@www.linux.com/dodo1.JPG
  3. 顯示下載進(jìn)度條 curl -# -O http://www.linux.com/dodo1.JPG
  4. 不會(huì)顯示下載進(jìn)度信息 curl -s -O http://www.linux.com/dodo1.JPG

通過 -T 選項(xiàng)可將指定的本地文件上傳到 FTP 服務(wù)器上

  1. curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com 將 myfile.txt 文件上傳到服務(wù)器
  2. curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com 同時(shí)上傳多個(gè)文件
  3. curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt 從標(biāo)準(zhǔn)輸入獲取內(nèi)容保存到服務(wù)器指定的文件中

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

-x 選項(xiàng)可以為 CURL 添加代理功能

curl -x proxysever.test.com:3128 http://google.co.in 指定代理主機(jī)和端口
指定 proxy 服務(wù)器以及其端口

補(bǔ)充

很多時(shí)候上網(wǎng)需要用到代理服務(wù)器(比如是使用代理服務(wù)器上網(wǎng)或者因?yàn)槭褂?curl 別人網(wǎng)站而被別人屏蔽 IP 地址的時(shí)候),幸運(yùn)的是 curl 通過使用內(nèi)置 option:-x 來支持設(shè)置代理
curl -x 192.168.100.100:1080 http://www.linux.com

保存與使用網(wǎng)站 cookie 信息

  1. curl -D sugarcookies http://localhost/sugarcrm/index.php 將網(wǎng)站的 cookies 信息保存到 sugarcookies 文件中
  2. curl -b sugarcookies http://localhost/sugarcrm/index.php 使用上次保存的 cookie 信息

補(bǔ)充

  1. 使用 -c 保存 Cookie curl -c "cookie-example" http://www.example.com
  2. 使用 -b 讀取 Cookie,-b 后面既可以是 Cookie 字符串,也可以是保存了 Cookie 的文件名
    • curl -b "JSESSIONID=D0112A5063D938586B659EF8F939BE24" http://www.example.com
    • curl -b "cookie-example" http://www.example.com
  3. 保存 http 的 response 里面的 header 信息。內(nèi)置 option: -D

傳遞請(qǐng)求數(shù)據(jù)

默認(rèn) curl 使用 GET 方式請(qǐng)求數(shù)據(jù),這種方式下直接通過 URL 傳遞數(shù)據(jù),可以通過 --data/-d 方式指定使用 POST 方式傳遞數(shù)據(jù)

  1. curl -u username https://api.github.com/user?access_token=XXXXXXXXXX GET 請(qǐng)求
  2. curl -u username --data "param1=value1&param2=value" https://api.github.com POST 請(qǐng)求
  3. curl --data @filename https://github.api.com/authorizations 也可以指定一個(gè)文件,將該文件中的內(nèi)容當(dāng)作數(shù)據(jù)傳遞給服務(wù)器端
  4. 默認(rèn)情況下,通過 POST 方式傳遞過去的數(shù)據(jù)中若有特殊字符,首先需要將特殊字符轉(zhuǎn)義在傳遞給服務(wù)器端,如 value 值中包含有空格,則需要先將空格轉(zhuǎn)換成%20,如:
    curl -d "value%201" http://hostname.com
  5. 在新版本的 CURL 中,提供了新的選項(xiàng) --data-urlencode,通過該選項(xiàng)提供的參數(shù)會(huì)自動(dòng)轉(zhuǎn)義特殊字符。
    curl --data-urlencode "value 1" http://hostname.com
  6. 除了使用 GET 和 POST 協(xié)議外,還可以通過 -X 選項(xiàng)指定其它協(xié)議,如:
    curl -I -X DELETE https://api.github.cim
  7. 上傳文件
    curl --form "fileupload=@filename.txt" http://hostname/resource

補(bǔ)充

  1. 使用 -G 選項(xiàng)可指定 GET 方式
  2. 帶 Cookie 登錄
    curl -c "cookie-login" -d "userName=tom&passwd=123456" http://www.example.com/login
    再次訪問該網(wǎng)站時(shí),使用以下命令:
    curl -b "cookie-login" http://www.example.com/login
    這樣,就能保持訪問的是登錄后的頁面了。

可以使用 -I 選項(xiàng)顯示 HTTP 頭,而不顯示文件內(nèi)容,也可以使用 -i 選項(xiàng)同時(shí)顯示 HTTP 頭和文件內(nèi)容

  1. curl -I http://www.codebelief.com
  2. curl -i http://www.codebelief.com

使用 -A 自定義 User-Agent

可以使用 -A 來自定義用戶代理,例如下面的命令將偽裝成安卓火狐瀏覽器對(duì)網(wǎng)頁進(jìn)行請(qǐng)求:
curl -A "Mozilla/5.0 (Android; Mobile; rv:35.0) Gecko/35.0 Firefox/35.0" http://www.baidu.com

使用 -H 自定義 header

當(dāng)我們需要傳遞特定的 header 的時(shí)候,可以仿照以下命令來寫:
curl -H "Referer: www.example.com" -H "User-Agent: Custom-User-Agent" http://www.baidu.com
可以看到,當(dāng)我們使用 -H 來自定義 User-Agent 時(shí),需要使用 "User-Agent: xxx" 的格式。
我們能夠直接在 header 中傳遞 Cookie,格式與上面的例子一樣:
curl -H "Cookie: JSESSIONID=D0112A5063D938586B659EF8F939BE24" http://www.example.com

偽造 referer(盜鏈)

很多服務(wù)器會(huì)檢查 http 訪問的 referer 從而來控制訪問。比如:你是先訪問首頁,然后再訪問首頁中的郵箱頁面,這里訪問郵箱的 referer 地址就是訪問首頁成功后的頁面地址,如果服務(wù)器發(fā)現(xiàn)對(duì)郵箱頁面訪問的 referer 地址不是首頁的地址,就斷定那是個(gè)盜連了
curl 中內(nèi)置 option:-e 可以讓我們?cè)O(shè)定 referer
curl -e "www.linux.com" http://mail.linux.com 這樣就會(huì)讓服務(wù)器其以為你是從 www.linux.com 點(diǎn)擊某個(gè)鏈接過來的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評(píng)論 19 139
  • 轉(zhuǎn)載自:http://www.cnblogs.com/txw1958/archive/2013/01/19/286...
    php_bruce閱讀 2,469評(píng)論 1 5
  • CURLOPT_RETURNTRANSFER 選項(xiàng):curl_setopt($ch, CURLOPT_RETURN...
    Talentisan閱讀 17,151評(píng)論 0 2
  • curl命令 網(wǎng)絡(luò)應(yīng)用 curl命令是一個(gè)利用URL規(guī)則在命令行下工作的文件傳輸工具。它支持文件的上傳和下載,所以...
    呵呵噠1991閱讀 1,405評(píng)論 0 2
  • 一、什么是CURL? cURL 是一個(gè)利用URL語法規(guī)定來傳輸文件和數(shù)據(jù)的工具,支持很多協(xié)議,如HTTP、FTP、...
    伊Summer閱讀 1,401評(píng)論 0 4

友情鏈接更多精彩內(nèi)容