日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

命令概要

該命令設(shè)計(jì)用于在沒有用戶交互的情況下工作。

curl 是一個(gè)工具,用于傳輸來自服務(wù)器或者到服務(wù)器的數(shù)據(jù)。「向服務(wù)器傳輸數(shù)據(jù)或者獲取來自服務(wù)器的數(shù)據(jù)」

可支持的協(xié)議有(DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、TELNET和TFTP)。

curl提供了大量有用的技巧,比如代理支持、用戶身份驗(yàn)證、FTP上傳、HTTP post、SSL連接、cookie、文件斷點(diǎn)續(xù)傳、Metalink等等。正如你將在下面看到的,這些特性的數(shù)量會讓您頭暈?zāi)垦#?/p>

 

訪問的URL

你可以在命令行上指定任意數(shù)量的url。它們將按指定的順序依次獲取。

你可以指定多個(gè)url,或url的部分通過在花括號內(nèi)編寫部分集,如:

1 http://site.{one,two,three}.com
2 # 參見
3 curl http://www.zhangblog.com/2019/06/16/hexo{04,05,06}/ -I  # 查看信息

 

或者可以使用[]得到字母數(shù)字序列的序列,如:

1 ftp://ftp.numericals.com/file[1-100].txt
2 ftp://ftp.numericals.com/file[001-100].txt   # 前導(dǎo)用零
3 ftp://ftp.letters.com/file[a-z].txt 
4 # 參見
5 curl http://www.zhangblog.com/2019/06/16/hexo[04-06]/ -I     # 查看信息

 

不支持嵌套序列,但可以使用幾個(gè)相鄰的序列:

http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html

 

你可以指定一個(gè)步長計(jì)數(shù)器的范圍,以獲得每第n個(gè)數(shù)字或字母:

http://www.numericals.com/file[1-100:10].txt 
http://www.letters.com/file[a-z:2].txt

 

如果指定URL而沒有protocol:// prefix,默認(rèn)為HTTP。

 

常用選項(xiàng)一

curl通常在操作過程中顯示一個(gè)進(jìn)度表,顯示傳輸?shù)臄?shù)據(jù)量、傳輸速度和估計(jì)的剩余時(shí)間等。

-#, --progress-bar

將curl進(jìn)度顯示為一個(gè)簡單的進(jìn)度條;而不是標(biāo)準(zhǔn)的、具有更多信息的進(jìn)度表。

1 [root@iZ28xbsfvc4Z 20190702]# curl -O http://www.zhangblog.com/2019/06/16/hexo04/index.html  # 默認(rèn)的進(jìn)度表
2   %  Total    %  Received  % Xferd  Average  Speed   Time    Time     Time  Current
3                                     Dload   Upload   Total   Spent    Left  Speed
4 100  97299  100  97299     0     0   186k       0 --:--:-- --:--:-- --:--:--  186k
5 [root@iZ28xbsfvc4Z 20190702]# 
6 [root@iZ28xbsfvc4Z 20190702]# curl -# -O http://www.zhangblog.com/2019/06/16/hexo04/index.html  #簡單的進(jìn)度條
7 ######################################################################## 100.0%

 

-0, --http1.0

(HTTP)強(qiáng)制curl使用HTTP 1.0發(fā)出請求,而不是使用其內(nèi)部首選的HTTP 1.1。

-1, --tlsv1

(SSL)強(qiáng)制curl使用TLS 1.x 版本,當(dāng)與遠(yuǎn)程TLS服務(wù)進(jìn)行協(xié)商時(shí)。可以使用選項(xiàng) --tlsv1.0、--tlsv1.1和 --tlsv1.2來更精確地控制TLS版本(如果使用的SSL后端支持這種級別的控制)。

-2, --sslv2

(SSL)強(qiáng)制curl使用TLS 2 版本,當(dāng)與遠(yuǎn)程TLS服務(wù)進(jìn)行協(xié)商時(shí)。

-3, --sslv3

(SSL)強(qiáng)制curl使用TLS 3 版本,當(dāng)與遠(yuǎn)程TLS服務(wù)進(jìn)行協(xié)商時(shí)。

-4, --ipv4

如果curl能夠?qū)⒁粋€(gè)地址解析為多個(gè)IP版本(比如它支持ipv4和ipv6),那么這個(gè)選項(xiàng)告訴curl只將名稱解析為IPv4地址。

-6, --ipv6

如果curl能夠?qū)⒁粋€(gè)地址解析為多個(gè)IP版本(比如它支持ipv4和ipv6),那么這個(gè)選項(xiàng)告訴curl只將名稱解析為IPv6地址。

-a, --Append

(FTP/SFTP)當(dāng)在上傳中使用時(shí),這將告訴curl追加到目標(biāo)文件而不是覆蓋它。如果文件不存在,將創(chuàng)建它。注意,一些SSH服務(wù)器(包括OpenSSH)會忽略此標(biāo)志。

-A, --user-agent <agent string>

(HTTP)指定要發(fā)送到HTTP服務(wù)端的User-Agent字符串。當(dāng)然也可以使用 -H, --header 選項(xiàng)來設(shè)置。用于模擬客戶端,如:谷歌瀏覽器、火狐瀏覽器、IE 瀏覽器等等。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

模仿瀏覽器訪問

curl -A "Mozilla/5.0 (windows NT 10.0; Win64; x64) Chrome/75.0.3770.999" http://www.zhangblog.com/2019/06/24/domainexpire/

 

--basic

(HTTP)告訴curl使用HTTP基本身份驗(yàn)證。這是默認(rèn)的。

 

常用選項(xiàng)二

-b, --cookie <name=data>

(HTTP)將數(shù)據(jù)作為cookie傳遞給HTTP服務(wù)器。它應(yīng)該是之前從服務(wù)端接收到的“Set-Cookie:”行中的數(shù)據(jù)。數(shù)據(jù)格式為“NAME1=VALUE1;NAME2 = VALUE2”。

如果行中沒有使用 ‘=’ 符號,則將其視為一個(gè)文件名,用于讀取先前存儲的cookie行,如果它們匹配,則應(yīng)在此會話中使用。要讀取cookie文件的文件格式應(yīng)該是純HTTP頭文件或Netscape/Mozilla cookie文件格式。

注意:使用 -b, --cookie 指定的文件僅用作輸入。文件中不會存儲cookies。要存儲cookies,可以使用 -c, --cookie-jar 選項(xiàng),或者您甚至可以使用 -D, --dump-header 將HTTP頭保存到文件中。

-c, --cookie-jar <file name>

(HTTP)指定希望curl在完成操作后將所有cookie寫入哪個(gè)文件。Curl寫之前從指定文件讀取的所有cookie,以及從遠(yuǎn)程服務(wù)端接收的所有cookie。如果沒有已知的cookie,則不會寫入任何文件。該文件將使用Netscape cookie文件格式編寫。如果你將文件名設(shè)置為單個(gè)破折號 “-” ,cookie將被標(biāo)準(zhǔn)輸出。

該命令行選項(xiàng)將激活cookie引擎,使curl記錄并使用cookies。激活它的另一種方法是使用 -b, --cookie 選項(xiàng)。

如果不能創(chuàng)建或?qū)懭隿ookie jar,那么整個(gè)curl操作就不會失敗,甚至不能清楚地報(bào)告錯誤。使用 -v 會得到一個(gè)警告,但這是你得到的關(guān)于這種可能致命的情況的唯一可見反饋。

如果多次使用此選項(xiàng),將使用最后指定的文件名。

--connect-timeout <seconds>

連接服務(wù)端的超時(shí)時(shí)間。這只限制了連接階段,一旦curl連接了此選項(xiàng)就不再使用了。

也可參見:-m, --max-time 選項(xiàng)。

1 # 當(dāng)前 https://www.zhangXX.com 是國外服務(wù)器,訪問受限
2 [root@iZ28xbsfvc4Z ~]# curl --connect-timeout 10 https://www.zhangXX.com | head
3   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
4                                  Dload  Upload   Total   Spent    Left  Speed
5   0     0    0     0    0     0      0      0 --:--:--  0:00:10 --:--:--     0
6 curl: (28) Connection timed out after 10001 milliseconds

 

--create-dirs

當(dāng)與 -o 選項(xiàng)一起使用時(shí),curl將根據(jù)需要創(chuàng)建必要的本地目錄層次結(jié)構(gòu)。

這個(gè)選項(xiàng)只創(chuàng)建與 -o 選項(xiàng)相關(guān)的dirs,沒有其他內(nèi)容。如果 -o 文件名沒有使用dir,或者其中提到的dir已經(jīng)存在,則不會創(chuàng)建dir。

示例

curl -o ./hexo04/index.html --create-dirs http://www.zhangblog.com/2019/06/16/hexo04

 

-C, --continue-at <offset>

按給定偏移量繼續(xù)/恢復(fù)以前的文件傳輸。給定的偏移量是將被跳過的確切字節(jié)數(shù),從源文件的開頭開始計(jì)算,然后再將其傳輸?shù)侥繕?biāo)文件。

使用 “-C -“「注意有空格和無空格的情況」,告訴curl自動找出在哪里/如何恢復(fù)傳輸。然后,它使用給定的輸出/輸入文件來解決這個(gè)問題。

1 # 下載一個(gè) 2G 的文件,可以反復(fù)測試,查看結(jié)果
2 curl -C - -o tmp.data http://www.zhangblog.com/uploads/tmp/tmp.data

 

-d, --data <data>

使用該選項(xiàng),那么默認(rèn)請求方式為 POST。(HTTP)在POST請求中向HTTP服務(wù)器發(fā)送指定的數(shù)據(jù),與瀏覽器在用戶填寫HTML表單并按下submit按鈕時(shí)所做的相同。這將導(dǎo)致curl使用content-type application/x-www-form-urlencoded將數(shù)據(jù)傳遞給服務(wù)器。也可參見:-F,-form 。

如果這些命令在同一個(gè)命令行使用多次,這些數(shù)據(jù)片段將使用指定的分隔符 & 合并。因此,使用 ‘-d name=daniel -d skill=lousy’ 將生成一個(gè)類似 ‘name=daniel&skill=lousy’ 的post塊,也可以直接這樣合并使用。

-d, --data 與 --data-ascii 相同。post數(shù)據(jù)為純粹的二進(jìn)制數(shù)據(jù)時(shí),那么使用 --data-binary 選項(xiàng)。要對表單字段的值進(jìn)行url編碼,可以使用 --data-urlencode。

如果您以字母@開始數(shù)據(jù),那么其余的應(yīng)該是一個(gè)文件名,以便從其中讀取數(shù)據(jù)。或者 - 如果您希望curl從stdin【標(biāo)準(zhǔn)輸入】讀取數(shù)據(jù)。文件的內(nèi)容必須已經(jīng)是url編碼的。還可以指定多個(gè)文件。因此,Posting數(shù)據(jù)名為 “foobar” 的文件將使用 --data @foobar 完成。

示例

請求信息:

 1 [root@iZ28xbsfvc4Z 20190712]# curl -sv --local-port 9000 -d 'user=zhang&pwd=123456' http://www.zhangblog.com/2019/06/24/domainexpire/ | head -n1 
 2 * About to connect() to www.zhangblog.com port 80 (#0)
 3 *   Trying 120.27.48.179...
 4 * Local port: 9000
 5 * Connected to www.zhangblog.com (120.27.48.179) port 80 (#0)
 6 > POST /2019/06/24/domainexpire/ HTTP/1.1   # 可見請求方式為POST
 7 > User-Agent: curl/7.29.0
 8 > Host: www.zhangblog.com
 9 > Accept: */*
10 > Content-Length: 21
11 > Content-Type: application/x-www-form-urlencoded
12 > 
13 } [data not shown]
14 * upload completely sent off: 21 out of 21 bytes
15 < HTTP/1.1 405 Not Allowed
16 < Server: Nginx/1.14.2
17 < Date: Fri, 12 Jul 2019 13:34:20 GMT
18 < Content-Type: text/html
19 < Content-Length: 173
20 < Connection: keep-alive
21 < 
22 { [data not shown]
23 * Connection #0 to host www.zhangblog.com left intact
24 <html>

 

抓包信息

[root@iZ28xbsfvc4Z tcpdump]# tcpdump -i any port 9000 -A -s 0
Linux curl 命令詳解

 

 

--data-ascii <data>

參見 -d, --data

--data-binary <data>

(HTTP) POST數(shù)據(jù)完全按照指定的方式,沒有任何額外的處理。

如果您以字母@開始數(shù)據(jù),其余的應(yīng)該是文件名。數(shù)據(jù)是以類似于 --data-ascii 的方式發(fā)布的,只不過保留了換行,而且永遠(yuǎn)不會進(jìn)行轉(zhuǎn)換【數(shù)據(jù)不轉(zhuǎn)換】。

如果多次使用此選項(xiàng),第一個(gè)選項(xiàng)后面的選項(xiàng)將按照 -d, --data 中的描述追加數(shù)據(jù)。

--data-urlencode <data>

(HTTP)這個(gè)Post 數(shù)據(jù),與另一個(gè) --data 選項(xiàng)類似,除執(zhí)行url編碼以外。

-D, --dump-header <file>

將響應(yīng)協(xié)議頭寫入指定的文件。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

當(dāng)你想要存儲HTTP站點(diǎn)發(fā)送給你的頭文件時(shí),使用此選項(xiàng)非常方便。

1 [root@iZ28xbsfvc4Z 20190703]# curl -D baidu_header.info www.baidu.com 
2 ………………
3 [root@iZ28xbsfvc4Z 20190703]# ll
4 total 4
5 -rw-r--r-- 1 root root 400 Jul  3 10:11 baidu_header.info  # 生成的頭文件

之后第二次curl調(diào)用通過 -b, --cookie 選項(xiàng),可以從頭部讀取 cookies 。然而 -c, --cookie-jar 選項(xiàng)是存儲 cookies 更好的方法。

常用選項(xiàng)三

--digest

(HTTP)啟用HTTP摘要身份驗(yàn)證。這是一種身份驗(yàn)證方案,可以防止密碼以明文通過網(wǎng)絡(luò)發(fā)送。將此選項(xiàng)與普通的 -u, --user 選項(xiàng)組合使用,以設(shè)置用戶名和密碼。相關(guān)選項(xiàng)請參見 --ntlm, --negotiate 和 --anyauth。

如果多次使用此選項(xiàng),則只使用第一個(gè)選項(xiàng)。

-e, --referer <URL>

(HTTP)將 “Referer Page” 【從哪個(gè)頁面跳轉(zhuǎn)過來的】信息發(fā)送到HTTP服務(wù)器。當(dāng)然也可以使用 -H, --header 標(biāo)志來設(shè)置。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

curl -e 'https:www.baidu.com' http://www.zhangblog.com/2019/06/24/domainexpire/

-f, --fail

(HTTP)在服務(wù)器錯誤上靜默失敗(完全沒有輸出)。這主要是為了使腳本等更好地處理失敗的嘗試。

在通常情況下,當(dāng)HTTP服務(wù)器無法交付文檔時(shí),它會返回一個(gè)HTML文檔,說明原因(通常還會描述原因)。此標(biāo)志將阻止curl輸出該值并返回錯誤22。

 1 [root@iZ28xbsfvc4Z 20190713]# curl http://www.zhangblog.com/201912312
 2 <html>
 3 <head><title>404 Not Found</title></head>
 4 <body bgcolor="white">
 5 <center><h1>404 Not Found</h1></center>
 6 <hr><center>nginx/1.14.2</center>
 7 </body>
 8 </html>
 9 [root@iZ28xbsfvc4Z 20190713]# curl -f http://www.zhangblog.com/201912312
10 curl: (22) The requested URL returned error: 404 Not Found

-F, --form <name=content>

(HTTP)這允許curl模擬用戶按下submit按鈕后填充的表單。

該情況讓curl 可使用Content-Type multipart/form-data POST數(shù)據(jù)。也可以上傳二進(jìn)制文件等。

@文件名:使一個(gè)文件作為文件上傳附加在post中。<文件名:從文件中獲取該文本字段的內(nèi)容。

例如,要將密碼文件發(fā)送到服務(wù)器,其中“password”是表單字段的名稱,/etc/passwd將作為輸入:

curl -F password=@/etc/passwd www.mypasswords.com

 

您還可以使用 ‘type=’ 告訴curl使用什么 Content-Type ,方法類似于:

curl -F "web=@index.html;type=text/html" url.com
或
curl -F "name=daniel;type=text/foo" url.com

 

可以通過設(shè)置 filename= 更改本地上傳的文件名,如下:

curl -F "file=@localfile;filename=nameinpost" url.com

上傳的文件名從改為了 nameinpost

如果文件名/路徑包括 ‘,’ 或 ‘;’ ,必須用雙引號括起來:

curl -F "file=@"localfile";filename="nameinpost"" url.com
或
curl -F 'file=@"localfile";filename="nameinpost"' url.com

最外層可用單引號或雙引號。

這個(gè)選項(xiàng)可以多次使用。

 

請勿如下使用

curl -F 'user=zhang&password=pwd' url.com   # 這種用法是錯誤的

 

--form-string <name=string>

(HTTP)類似于 --form,只是命名參數(shù)的value字符串按字面意思使用。在值中以 ‘@’ 和 ‘<’ 開頭的字符,以及 ‘;type=’ 字符串沒有特殊的含義。

如果字符串值有可能意外觸發(fā) --form 的 “@” 或 “<” 特性,請優(yōu)先使用此選項(xiàng)。

-g, --globoff

這個(gè)選項(xiàng)關(guān)閉了“URL全局解析器”。當(dāng)您設(shè)置這個(gè)選項(xiàng)時(shí),您可以指定包含字母 {}[] 的url,而不需要curl本身來解釋它們。

注意,這些字母不是正常的合法URL內(nèi)容,但是它們應(yīng)該按照URI標(biāo)準(zhǔn)進(jìn)行編碼。

-G, --get

使用此選項(xiàng)時(shí),將使所有使用 -d, --data 或 --data-binary 指定的數(shù)據(jù)在HTTP GET請求中使用,而不是在POST請求中使用。數(shù)據(jù)將被追加到URL的一個(gè) ‘?’ 的分隔符后。

如果與 -I 結(jié)合使用,POST數(shù)據(jù)將被替換追加到帶有HEAD請求的URL中。

如果多次使用此選項(xiàng),則只使用第一個(gè)選項(xiàng)。

示例

 1 [root@iZ28xbsfvc4Z 20190712]# curl -sv -G --local-port 9000 -d 'user=zhang&pwd=123456' http://www.zhangblog.com/2019/06/24/domainexpire/ | head -n1 
 2 或則
 3 [root@iZ28xbsfvc4Z 20190713]# curl -sv --local-port 9000 "http://www.zhangblog.com/2019/06/24/domainexpire/?user=zhang&pwd=123456" | head -n1
 4 * About to connect() to www.zhangblog.com port 80 (#0)
 5 *   Trying 120.27.48.179...
 6 * Local port: 9000
 7 * Connected to www.zhangblog.com (120.27.48.179) port 80 (#0)
 8 > GET /2019/06/24/domainexpire/?user=zhang&pwd=123456 HTTP/1.1  # 可見請求方式為 GET,且參數(shù)追加到了URI后
 9 > User-Agent: curl/7.29.0
10 > Host: www.zhangblog.com
11 > Accept: */*
12 > 
13 < HTTP/1.1 200 OK
14 < Server: nginx/1.14.2
15 < Date: Fri, 12 Jul 2019 14:04:19 GMT
16 < Content-Type: text/html
17 < Content-Length: 51385
18 < Last-Modified: Tue, 09 Jul 2019 13:55:19 GMT
19 < Connection: keep-alive
20 < ETag: "5d249cc7-c8b9"
21 < Accept-Ranges: bytes
22 < 
23 { [data not shown]
24 * Connection #0 to host www.zhangblog.com left intact
25 <!DOCTYPE html>

 

抓包信息

[root@iZ28xbsfvc4Z tcpdump]# tcpdump -i any port 9000 -A -s 0
Linux curl 命令詳解

 

 

-H, --header <header>

(HTTP) 要發(fā)送到服務(wù)端的自定義請求頭。

此選項(xiàng)可多次用于添加/替換/刪除多個(gè)headers。

1 curl -H 'Connection: keep-alive' -H 'Referer: https://sina.com.cn' -H 'User-Agent: Mozilla/1.0' http://www.zhangblog.com/2019/06/24/domainexpire/

 

--ignore-content-length

(HTTP)忽略Content-Length 頭信息。

-i, --include

(HTTP)在輸出的內(nèi)容中包含HTTP 頭信息。

curl -i https://www.baidu.com

 

-I, --head

(HTTP/FTP/FILE)只獲取HTTP頭文件。在FTP或FILE 文件上使用時(shí),curl只顯示文件大小和最后修改時(shí)間。

curl -I https://www.baidu.com

 

-k, --insecure

(SSL)允許curl執(zhí)行不安全的SSL連接和傳輸。所有SSL連接都嘗試使用默認(rèn)安裝的CA證書包來確保安全。

示例

 1 [root@iZ28xbsfvc4Z ~]# curl https://140.205.16.113/  # 被拒絕
 2 curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
 3 [root@iZ28xbsfvc4Z ~]# 
 4 [root@iZ28xbsfvc4Z ~]# curl -k https://140.205.16.113/  # 允許執(zhí)行不安全的證書連接
 5 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 6 <html>
 7 <head><title>403 Forbidden</title></head>
 8 <body bgcolor="white">
 9 <h1>403 Forbidden</h1>
10 <p>You don't have permission to access the URL on this server.<hr/>Powered by Tengine</body>
11 </html>

 

常用選項(xiàng)四

--keepalive-time <seconds>

keepalive 時(shí)長。如果使用no-keepalive,則此選項(xiàng)無效。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。如果未指定,該選項(xiàng)默認(rèn)為60秒。

--key <key>

(SSL/SSH)私鑰文件名。允許你在這個(gè)單獨(dú)的文件中提供你的私鑰。

對于SSH,如果沒有指定,curl嘗試如下順序:’~/.ssh/id_rsa’,’~/.ssh/id_dsa’,’./id_rsa’,’./id_dsa’。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

--key-type <type>

(SSL)私鑰文件類型。指定 --key 提供的私鑰的類型。支持DER、PEM和ENG。如果沒有指定,則定為PEM。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

-L, --location

(HTTP/HTTPS) 跟蹤重定向如果服務(wù)器報(bào)告請求頁面已移動到另一個(gè)位置(用location: header和3XX響應(yīng)代碼表示),此選項(xiàng)將使curl在新位置上重做請求。

如果與 -i, --include 或 -I, --head 一起使用,將顯示所有請求頁面的標(biāo)題。

 1 [root@iZ28xbsfvc4Z ~]# curl -I -L https://baidu.com/ 
 2 HTTP/1.1 302 Moved Temporarily  # 302 重定向
 3 Server: bfe/1.0.8.18
 4 Date: Thu, 04 Jul 2019 03:07:15 GMT
 5 Content-Type: text/html
 6 Content-Length: 161
 7 Connection: keep-alive
 8 Location: http://www.baidu.com/
 9 
10 HTTP/1.1 200 OK
11 Accept-Ranges: bytes
12 Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
13 Connection: Keep-Alive
14 Content-Length: 277
15 Content-Type: text/html
16 Date: Thu, 04 Jul 2019 03:07:15 GMT
17 Etag: "575e1f60-115"
18 Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
19 Pragma: no-cache
20 Server: bfe/1.0.8.18

 

--limit-rate <speed>

指定要使用curl的最大傳輸速率。

如果有一個(gè)有限的管道,并且希望傳輸不要使用您的全部帶寬,那么這個(gè)特性是非常有用的。

curl --limit-rate 500 http://www.baidu.com/
curl --limit-rate 2k http://www.baidu.com/

單位:默認(rèn)字節(jié),除非添加后綴。附加 “k” 或 “K” 表示千字節(jié), “m” 或 “M” 表示兆字節(jié),而 “g” 或 “G” 表示千兆字節(jié)。例如:200K, 3m和1G。

給定的速率是整個(gè)傳輸過程中計(jì)算的平均速度。這意味著curl可能在短時(shí)間內(nèi)使用更高的傳輸速度,但是隨著時(shí)間的推移,它只使用給定的速率。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

--local-port <num>[-num]

指定本地的一個(gè)端口或端口范圍去連接。

請注意,端口號本質(zhì)上是一種稀缺資源,有時(shí)會很忙,因此將此范圍設(shè)置為太窄可能會導(dǎo)致不必要的連接失敗。

curl --local-port 9000 http://www.baidu.com/
curl --local-port 9000-9999 http://www.baidu.com/

 

-m, --max-time <seconds>

允許整個(gè)操作花費(fèi)的最大時(shí)間(以秒為單位)。

這對于防止由于網(wǎng)絡(luò)或鏈接變慢而導(dǎo)致批處理作業(yè)掛起數(shù)小時(shí)非常有用。

也可參見:--connect-timeout 選項(xiàng)

 1 [root@iZ28xbsfvc4Z ~]# curl -m 10 --limit-rate 5 http://www.baidu.com/ | head  # 超過10秒后,斷開連接
 2   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 3                                  Dload  Upload   Total   Spent    Left  Speed
 4   2  2381    2    50    0     0      4      0  0:09:55  0:00:10  0:09:45     4
 5 curl: (28) Operation timed out after 10103 milliseconds with 50 out of 2381 bytes received
 6 <!DOCTYPE html>
 7 <!--STATUS OK--><html> <head><met
 8 ### 或
 9 [root@iZ28xbsfvc4Z ~]# curl -m 10 https://www.zhangXX.com | head   # 超過10秒后,斷開連接
10   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
11                                  Dload  Upload   Total   Spent    Left  Speed
12   0     0    0     0    0     0      0      0 --:--:--  0:00:10 --:--:--     0
13 curl: (28) Connection timed out after 10001 milliseconds

 

--max-filesize <bytes>

指定要下載的文件的最大大小(以字節(jié)為單位)。如果請求的文件大于這個(gè)值,那么傳輸將不會啟動,curl將返回退出代碼63。

示例

 1 [root@iZ28xbsfvc4Z ~]# curl -I http://www.zhangblog.com/uploads/hexo/00.jpg # 正常
 2 HTTP/1.1 200 OK
 3 Server: nginx/1.14.2
 4 Date: Thu, 04 Jul 2019 07:24:24 GMT
 5 Content-Type: image/jpeg
 6 Content-Length: 18196
 7 Last-Modified: Mon, 24 Jun 2019 01:43:02 GMT
 8 Connection: keep-alive
 9 ETag: "5d102aa6-4714"
10 Accept-Ranges: bytes
11 
12 [root@iZ28xbsfvc4Z ~]# echo $?
13 0
14 [root@iZ28xbsfvc4Z ~]# 
15 [root@iZ28xbsfvc4Z ~]# 
16 [root@iZ28xbsfvc4Z ~]# curl --max-filesize 1000 -I http://www.zhangblog.com/uploads/hexo/00.jpg # 受限異常
17 HTTP/1.1 200 OK
18 Server: nginx/1.14.2
19 Date: Thu, 04 Jul 2019 07:24:54 GMT
20 Content-Type: image/jpeg
21 curl: (63) Maximum file size exceeded
22 [root@iZ28xbsfvc4Z ~]# 
23 [root@iZ28xbsfvc4Z ~]# echo $?
24 63

 

--max-redirs <num>

設(shè)置允許的最大重定向跟蹤數(shù)。

如果也使用了 -L, --location,則此選項(xiàng)可用于防止curl在悖論中無限重定向。默認(rèn)情況下,限制為50重定向。將此選項(xiàng)設(shè)置為-1,使其無限。

--no-keepalive

禁用在TCP連接上使用keepalive消息,因?yàn)槟J(rèn)情況下curl啟用了它們。

注意,這是文檔中已否定的選項(xiàng)名。因此,您可以使用 --keepalive 來強(qiáng)制keepalive。

常用選項(xiàng)五

-o, --output <file>

輸出到一個(gè)文件,而不是標(biāo)準(zhǔn)輸出。

如果使用 {} 或 [] 來獲取多個(gè)documents。可以使用 ‘#’ 后跟說明符中的一個(gè)數(shù)字。該變量將替換為正在獲取URL的當(dāng)前字符串。就像:

curl http://{one,two}.site.com -o "file_#1.txt"
curl http://{site,host}.host[1-5].com -o "#1_#2"

 

示例1

 1 [root@iZ28xbsfvc4Z 20190703]# curl "http://www.zhangblog.com/2019/06/16/hexo{04,05,06}/" -o "file_#1.info"   # 注意curl 的地址需要用引號括起來
 2 或
 3 [root@iZ28xbsfvc4Z 20190703]# curl "http://www.zhangblog.com/2019/06/16/hexo[04-06]/" -o "file_#1.info"   # 注意curl 的地址需要用引號括起來
 4 [1/3]: http://www.zhangblog.com/2019/06/16/hexo04/ --> file_04.info
 5   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 6                                  Dload  Upload   Total   Spent    Left  Speed
 7 100 97299  100 97299    0     0  1551k      0 --:--:-- --:--:-- --:--:-- 1557k
 8 
 9 [2/3]: http://www.zhangblog.com/2019/06/16/hexo05/ --> file_05.info
10 100 54409  100 54409    0     0   172M      0 --:--:-- --:--:-- --:--:--  172M
11 
12 [3/3]: http://www.zhangblog.com/2019/06/16/hexo06/ --> file_06.info
13 100 56608  100 56608    0     0   230M      0 --:--:-- --:--:-- --:--:--  230M
14 [root@iZ28xbsfvc4Z 20190703]# 
15 [root@iZ28xbsfvc4Z 20190703]# ll
16 total 212
17 -rw-r--r-- 1 root root 97299 Jul  4 16:51 file_04.info
18 -rw-r--r-- 1 root root 54409 Jul  4 16:51 file_05.info
19 -rw-r--r-- 1 root root 56608 Jul  4 16:51 file_06.info

 

示例2

 1 [root@iZ28xbsfvc4Z 20190703]# curl "http://www.{baidu,douban}.com" -o "site_#1.txt"  # 注意curl 的地址需要用引號括起來
 2 [1/2]: http://www.baidu.com --> site_baidu.txt
 3   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 4                                  Dload  Upload   Total   Spent    Left  Speed
 5 100  2381  100  2381    0     0  46045      0 --:--:-- --:--:-- --:--:-- 46686
 6 
 7 [2/2]: http://www.douban.com --> site_douban.txt
 8 100   162  100   162    0     0   3173      0 --:--:-- --:--:-- --:--:--  3173
 9 [root@iZ28xbsfvc4Z 20190703]# 
10 [root@iZ28xbsfvc4Z 20190703]# ll
11 total 220
12 -rw-r--r-- 1 root root  2381 Jul  4 16:53 site_baidu.txt
13 -rw-r--r-- 1 root root   162 Jul  4 16:53 site_douban.txt

 

-O, --remote-name

寫入到本地文件,名稱與遠(yuǎn)程文件的名稱相同。(只使用遠(yuǎn)程文件的文件部分,路徑被切斷。)

用于保存的遠(yuǎn)程文件名是從給定的URL中提取的,沒有其他內(nèi)容。因此,文件將保存在當(dāng)前工作目錄中。如果希望將文件保存在另一個(gè)目錄中,請確保在curl調(diào)用 -O, --remote-name之前更改當(dāng)前工作目錄!

1 [root@iZ28xbsfvc4Z 20190712]# curl -O https://www.baidu.com   # 使用了 -O 選項(xiàng),必須指定到具體的文件  錯誤使用
2 curl: Remote file name has no length!
3 curl: try 'curl --help' or 'curl --manual' for more information
4 [root@iZ28xbsfvc4Z 20190712]# curl -O https://www.baidu.com/index.html   # 使用了 -O 選項(xiàng),必須指定到具體的文件  正確使用
5   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
6                                  Dload  Upload   Total   Spent    Left  Speed
7 100  2443  100  2443    0     0  13289      0 --:--:-- --:--:-- --:--:-- 13349

 

--pass <phrase>

(SSL/SSH)私鑰密碼

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

--post301

告訴curl當(dāng)301重定向時(shí),不要將POST請求轉(zhuǎn)換為GET請求。

非rfc行為在web瀏覽器中無處不在,因此curl在缺省情況下進(jìn)行轉(zhuǎn)換以保持一致性。但是,服務(wù)器可能需要在重定向之后將POST保留為POST。

這個(gè)選項(xiàng)只有在使用 -L, --location 時(shí)才有意義

--post302

告訴curl當(dāng)302重定向時(shí),不要將POST請求轉(zhuǎn)換為GET請求。

非rfc行為在web瀏覽器中無處不在,因此curl在缺省情況下進(jìn)行轉(zhuǎn)換以保持一致性。但是,服務(wù)器可能需要在重定向之后將POST保留為POST。

這個(gè)選項(xiàng)只有在使用 -L, --location 時(shí)才有意義

--post303

告訴curl當(dāng)303重定向時(shí),不要將POST請求轉(zhuǎn)換為GET請求。

非rfc行為在web瀏覽器中無處不在,因此curl在缺省情況下進(jìn)行轉(zhuǎn)換以保持一致性。但是,服務(wù)器可能需要在重定向之后將POST保留為POST。

這個(gè)選項(xiàng)只有在使用 -L, --location 時(shí)才有意義

說明:上述三個(gè)選項(xiàng)都是為了防止在重定向過程中,原來的 POST 請求,變?yōu)?GET請求。為了防止該情況,有兩種處理方式。1、使用上述選項(xiàng)可避免;2、使用 -X POST 選項(xiàng)和命令。

示例

[root@iZ28xbsfvc4Z ~]# curl -Lsv -d 'user=zhang' https://baidu.com | head -n1

 

開始是POST請求,302 重定向后變?yōu)榱?GET請求。

Linux curl 命令詳解

 

 

[root@iZ28xbsfvc4Z ~]# curl -Lsv -d 'user=zhang' --post301 --post302 --post303 https://baidu.com | head -n1

前后都是 POST 請求。但是選項(xiàng)較多。

Linux curl 命令詳解

 

 

[root@iZ28xbsfvc4Z ~]# curl -Lsv -d 'user=zhang' -X POST https://baidu.com | head -n1

前后都是 POST 請求。推薦使用此命令。

Linux curl 命令詳解

 

 

--pubkey <key>

(SSH)公鑰文件名。允許在這個(gè)單獨(dú)的文件中提供公鑰。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

-r, --range <range>

(HTTP/FTP/SFTP/FILE)從HTTP/1.1、FTP或SFTP服務(wù)器或本地文件檢索字節(jié)范圍。范圍可以通過多種方式指定。用于分段下載。

有時(shí)文件比較大,或者難以迅速傳輸,而利用分段傳輸,可以實(shí)現(xiàn)穩(wěn)定、高效并且有保障的傳輸,更具有實(shí)用性,同時(shí)容易對差錯文件進(jìn)行更正。

0-499:指定前500個(gè)字節(jié)500-999:指定第二個(gè)500字節(jié)-500:指定最后500個(gè)字節(jié)9500-:指定9500字節(jié)及之后的字節(jié)0-0,-1:指定第一個(gè)和最后一個(gè)字節(jié)500-700,600-799:從偏移量500開始指定300字節(jié)100-199,500-599:指定兩個(gè)單獨(dú)100字節(jié)的范圍

分段下載

 1 [root@iZ28xbsfvc4Z 20190715]# curl -I http://www.zhangblog.com/uploads/hexo/00.jpg   # 查看文件大小
 2 HTTP/1.1 200 OK
 3 Server: nginx/1.14.2
 4 Date: Mon, 15 Jul 2019 03:23:44 GMT
 5 Content-Type: image/jpeg
 6 Content-Length: 18196   # 文件大小
 7 Last-Modified: Fri, 05 Jul 2019 08:04:58 GMT
 8 Connection: keep-alive
 9 ETag: "5d1f04aa-4714"
10 Accept-Ranges: bytes
11 [root@iZ28xbsfvc4Z 20190715]# curl -r 0-499   -o 00-jpg.part1 http://www.zhangblog.com/uploads/hexo/00.jpg
12 [root@iZ28xbsfvc4Z 20190715]# curl -r 500-999 -o 00-jpg.part2 http://www.zhangblog.com/uploads/hexo/00.jpg
13 [root@iZ28xbsfvc4Z 20190715]# curl -r 1000-   -o 00-jpg.part3 http://www.zhangblog.com/uploads/hexo/00.jpg

 

查看下載文件

1 [root@iZ28xbsfvc4Z 20190715]# ll
2 total 36
3 -rw-r--r-- 1 root root   500 Jul 15 11:25 00-jpg.part1
4 -rw-r--r-- 1 root root   500 Jul 15 11:25 00-jpg.part2
5 -rw-r--r-- 1 root root 17196 Jul 15 11:26 00-jpg.part3

 

文件合并

1 [root@iZ28xbsfvc4Z 20190715]# cat 00-jpg.part1 00-jpg.part2 00-jpg.part3 > 00.jpg
2 [root@iZ28xbsfvc4Z 20190715]# ll
3 total 56
4 -rw-r--r-- 1 root root 18196 Jul 15 11:29 00.jpg

 

-R, --remote-time

使curl嘗試獲取遠(yuǎn)程文件的時(shí)間戳,如果可用,則使本地文件獲得相同的時(shí)間戳【針對修改時(shí)間戳Modify】。

curl -o nfs1.info -R http://www.zhangblog.com/2019/07/05/nfs1/

 

--retry <num>

傳輸出現(xiàn)問題時(shí),重試的次數(shù)。數(shù)字設(shè)置為0將使curl不重試(這是缺省值)。

出現(xiàn)的瞬時(shí)錯誤如:timeout、FTP 4xx響應(yīng)狀代碼或HTTP 5xx響應(yīng)狀代碼。

當(dāng)curl準(zhǔn)備重試傳輸時(shí),它將首先等待一秒鐘,之后對于所有即將到來的重試,它將把等待時(shí)間延長一倍,直到達(dá)到10分鐘,這將是其余重試之間的延遲。

--retry-delay <seconds>

傳輸出現(xiàn)問題時(shí),設(shè)置重試間隔時(shí)間。將此延遲設(shè)置為零將使curl使用默認(rèn)的延遲時(shí)間。

--retry-max-time <seconds>

傳輸出現(xiàn)問題時(shí),設(shè)置最大重試時(shí)間。將此選項(xiàng)設(shè)置為0則不超時(shí)重試。

 

常用選項(xiàng)六

-s, --silent

靜默或靜音模式。不顯示進(jìn)度表/條或錯誤消息。

示例

1 [root@iZ28xbsfvc4Z 20190713]# curl https://www.baidu.com | head -n1  # 默認(rèn)有進(jìn)度表
2   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
3                                  Dload  Upload   Total   Spent    Left  Speed
4 100  2443  100  2443    0     0  13346      0 --:--:-- --:--:-- --:--:-- 13349
5 <!DOCTYPE html>
6 [root@iZ28xbsfvc4Z 20190713]# curl -s https://www.baidu.com | head -n1
7 <!DOCTYPE html>

 

-S, --show-error

當(dāng)與 -s 一起使用時(shí),如果curl失敗,curl將顯示一條錯誤消息。

1 [root@iZ28xbsfvc4Z 20190713]# curl -s https://140.205.16.113/ 
2 [root@iZ28xbsfvc4Z 20190713]# 
3 [root@iZ28xbsfvc4Z 20190713]# curl -sS https://140.205.16.113/ 
4 curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.

 

--stderr <file>

將錯誤信息重定向到一個(gè)文件。如果文件名是普通的 ‘-‘,則將其寫入stdout。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

1 [root@iZ28xbsfvc4Z 20190713]# curl --stderr err.info https://140.205.16.113/ 
2 [root@iZ28xbsfvc4Z 20190713]# ll
3 total 92
4 -rw-r--r-- 1 root root   116 Jul 13 10:19 err.info
5 [root@iZ28xbsfvc4Z 20190713]# cat err.info 
6 curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.

 

-T, --upload-file <file>

這將指定的本地文件傳輸?shù)竭h(yuǎn)程URL。如果指定的URL中沒有文件部分,Curl將附加本地文件名。

注意:必須在最后一個(gè)目錄上使用尾隨 / 來真正證明Curl沒有文件名,否則Curl會認(rèn)為您的最后一個(gè)目錄名是要使用的遠(yuǎn)程文件名。這很可能導(dǎo)致上傳操作失敗。如果在HTTP(S)服務(wù)器上使用此命令,則將使用PUT命令。

同時(shí)也支持多個(gè)文件上傳,如下:

curl -T "{file1,file2}" http://www.uploadtothissite.com
或則
curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/

 

--trace <file>

對指定文件進(jìn)行debug。包括所有傳入和傳出數(shù)據(jù)。

此選項(xiàng)會覆蓋之前使用的 -v、--verbose或 --trace-ascii。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

curl --trace trace.info https://www.baidu.com

 

--trace-ascii <file>

對指定文件進(jìn)行debug。包括所有傳入和傳出數(shù)據(jù)。

這非常類似于 --trace,但是省略了十六進(jìn)制部分,只顯示轉(zhuǎn)儲的ASCII部分。使它輸出更小,對于我們來說可能更容易閱讀。

此選項(xiàng)會覆蓋之前使用的 -v、--verbose或 --trace。

如果多次使用此選項(xiàng),則將使用最后一個(gè)選項(xiàng)。

curl --trace-ascii trace2.info https://www.baidu.com

 

--trace-time

為curl顯示的每個(gè)跟蹤或冗長的行添加時(shí)間戳。

curl --trace-ascii trace3.info --trace-time https://www.baidu.com

 

-v, --verbose

顯示詳細(xì)操作信息。主要用于調(diào)試。

以 > 開頭的行表示curl發(fā)送的”header data”;< 表示curl接收到的通常情況下隱藏的”header data”;而以 * 開頭的行表示curl提供的附加信息。

 1 [root@iZ28xbsfvc4Z 20190712]# curl -v https://www.baidu.com
 2 * About to connect() to www.baidu.com port 443 (#0)
 3 *   Trying 180.101.49.12...
 4 * Connected to www.baidu.com (180.101.49.12) port 443 (#0)
 5 * Initializing NSS with certpath: sql:/etc/pki/nssdb
 6 *   CAfile: /etc/pki/tls/certs/ca-bundle.crt
 7   CApath: none
 8 * SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
 9 * Server certificate:
10 *     subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
11 *     start date: May 09 01:22:02 2019 GMT
12 *     expire date: Jun 25 05:31:02 2020 GMT
13 *     common name: baidu.com
14 *     issuer: CN=GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE
15 > GET / HTTP/1.1
16 > User-Agent: curl/7.29.0
17 > Host: www.baidu.com
18 > Accept: */*
19 > 
20 < HTTP/1.1 200 OK
21 < Accept-Ranges: bytes
22 < Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
23 < Connection: Keep-Alive
24 < Content-Length: 2443
25 < Content-Type: text/html
26 < Date: Fri, 12 Jul 2019 08:26:23 GMT
27 < Etag: "588603eb-98b"
28 < Last-Modified: Mon, 23 Jan 2017 13:23:55 GMT
29 < Pragma: no-cache
30 < Server: bfe/1.0.8.18
31 < Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
32 < 
33 <!DOCTYPE html>
34 ………………  # curl 網(wǎng)頁的具體信息

 

-w, --write-out <format>

在完成和成功操作后要在stdout上顯示什么。

支持如下變量,具體含義請自行參見curl文檔。

content_type

filename_effective

ftp_entry_path

http_code

http_connect

local_ip

local_port

num_connects

num_redirects

redirect_url

remote_ip

remote_port

size_download

size_header

size_request

size_upload

speed_download

speed_upload

ssl_verify_result

time_appconnect

time_connect

time_namelookup

time_pretransfer

time_redirect

time_starttransfer

time_total

url_effective

  

示例

1 [root@iZ28xbsfvc4Z 20190713]# curl -o /dev/null -s -w %{content_type} www.baidu.com  # 輸出結(jié)果沒有換行
2 text/html[root@iZ28xbsfvc4Z 20190713]# 
3 [root@iZ28xbsfvc4Z 20190713]# curl -o /dev/null -s -w %{http_code} www.baidu.com  # 輸出結(jié)果沒有換行
4 200[root@iZ28xbsfvc4Z 20190713]# 
5 [root@iZ28xbsfvc4Z 20190713]# curl -o /dev/null -s -w %{local_port} www.baidu.com  # 輸出結(jié)果沒有換行
6 37346[root@iZ28xbsfvc4Z 20190713]# 
7 [root@iZ28xbsfvc4Z 20190713]#

 

-x, --proxy <[protocol://][user:password@]proxyhost[:port]>

使用指定的HTTP代理。如果沒有指定端口號,則假定它位于端口1080。

-X, --request <command>

(HTTP)指定與HTTP服務(wù)器通信時(shí)的請求方式。默認(rèn)GET

curl -vs -X POST https://www.baidu.com | head -n1
Linux curl 命令詳解

 

 

curl -vs -X PUT https://www.baidu.com | head -n1
Linux curl 命令詳解

 

分享到:
標(biāo)簽:Linux curl
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定