欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

curl.exe安裝使用的最全參數(shù)詳解以及常用命令匯總

 更新時(shí)間:2024年04月20日 09:49:36   投稿:yin  
Curl是一個(gè)功能強(qiáng)大的命令行工具,可以看做是命令行瀏覽器,用于與服務(wù)器進(jìn)行數(shù)據(jù)交互,支持多種數(shù)據(jù)傳輸協(xié)議,如HTTP、HTTPS、FTP等,它支持文件的上傳和下載,它是一款開源軟件,在多個(gè)操作系統(tǒng)上均可運(yùn)行,包括Windows、Linux、macOS等

Curl是一個(gè)功能強(qiáng)大的命令行工具,可以看做是命令行瀏覽器。用于與服務(wù)器進(jìn)行數(shù)據(jù)交互,支持多種數(shù)據(jù)傳輸協(xié)議,如HTTP、HTTPS、FTP等。它支持文件的上傳和下載,所以是綜合傳輸工具,但習(xí)慣稱curl為下載工具。它是一款開源軟件,在多個(gè)操作系統(tǒng)上均可運(yùn)行,包括Windows、Linux、macOS等。Linux系統(tǒng)自帶curl,Windows下需要自行安裝才能使用。

一、如何安裝Curl.exe?

一般來說,Linux系統(tǒng)自帶curl,Windows下需要自行安裝才能使用。如果沒有,我們需要首先安裝 curl 。

1.下載安裝包

下載直通車:https://curl.se/windows   curl官網(wǎng)下載地址: https://curl.se/download.html

2.安裝

mac:可通過命令直接安裝 brew install curl。

windows:通過上面的資源下載地址,找到windows版本下載解壓得到.exe文件,全局使用需配置環(huán)境變量。

linux具體版本快捷安裝方式:

centos: yum -y install curl

ubuntu: sudo apt-get install curl

其他發(fā)行版,建議通過上面的資源下載地址,下載Linux版本解壓tar -xzvf xxx.tar.gz,然后安裝。

二、curl命令語法與curl命令參數(shù)詳解

1、curl命令語法

curl [options] [URL...]

2、curl命令參數(shù)詳解

由于linux curl功能十分強(qiáng)大,所以命令參數(shù)十分多,下表只是帥選出來的部分參數(shù),更多參數(shù)請運(yùn)行“man curl”命令查看。

參數(shù)組參數(shù)描述
urlurl需要抓取的一到多個(gè)URLs;
多個(gè)下面通配符的方式:
  1、http://{www,ftp,mail}.aiezu.com;
  2、http://aiezu.com/images/[001-999].jpg;
  3、http://aiezu.com/images/[1-999].html;
  4、ftp://aiezu.com/file[a-z].txt


-H "name: value"
--header "name: value"
(HTTP)添加一個(gè)http header(http請求頭);
-H "name:"
--header "name:"
(HTTP)移除一個(gè)http header(http請求頭);
-A "string"
--user-agent "string"
(HTTP)設(shè)置Http請求頭“User-Agent”,服務(wù)器通過“User-Agent”可以判斷客戶端使用的瀏覽器名稱和操作系統(tǒng)類型,偽造此參數(shù)能導(dǎo)致服務(wù)器做出錯(cuò)誤判斷。
也可以使用“-H”, “--header option”設(shè)置此選項(xiàng);
-e <URL>
--referer <URL>
(HTTP)設(shè)置訪問時(shí)的來源頁面,告訴http服務(wù)從哪個(gè)頁面進(jìn)入到此頁面;
-e "aiezu.com"相當(dāng)于“-H "Referer: www.qq.com"”;

應(yīng)
-I
--head
(HTTP)只輸出HTTP-header,不獲取內(nèi)容(HTTP/FTP/FILE)。
用于HTTP服務(wù)時(shí),獲取頁面的http頭;
  (如:curl -I http://aiezu.com)
用于FTP/FILE時(shí),將會獲取文件大小、最后修改時(shí)間;
  (如:curl -I file://test.txt)
-i
--include
(HTTP)輸出HTTP頭和返回內(nèi)容;
-D <file>
--dump-header <file>
(HTTP)轉(zhuǎn)儲http響應(yīng)頭到指定文件;
cookie-b name=data
--cookie name=data
(HTTP)發(fā)送cookie數(shù)據(jù)到HTTP服務(wù)器,數(shù)據(jù)格式為:"NAME1=VALUE1; NAME2=VALUE2";

如果行中沒有“=”,將把參數(shù)值當(dāng)作cookie文件名;

這個(gè)cookie數(shù)據(jù)可以是由服務(wù)器的http響應(yīng)頭“Set-Cookie:”行發(fā)送過來的;
-c filename
--cookie-jar file name
(HTTP)完成操作后將服務(wù)器返回的cookies保存到指定的文件;
指定參數(shù)值為“-”將定向到標(biāo)準(zhǔn)輸出“如控制臺”;
-j
--junk-session-cookies
(HTTP)告訴curl放棄所有的"session cookies";
相當(dāng)于重啟瀏覽器;
代理-x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port]
使用HTTP代理訪問;如果未指定端口,默認(rèn)使用8080端口;
protocol默認(rèn)為http_proxy,其他可能的值包括:
http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
如:
--proxy 8.8.8.8:8080;
-x "http_proxy://aiezu:123@aiezu.com:80"
-p
--proxytunnel
將“-x”參數(shù)的代理,作為通道的方式去代理非HTTP協(xié)議,如ftp;
--socks4 <host[:port]>
--socks4a <host[:port]>
--socks5 <host[:port]>
使用SOCKS4代理;
使用SOCKS4A代理;
使用SOCKS5代理;
此參數(shù)會覆蓋“-x”參數(shù);
--proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-negotiate
--proxy-ntlm
http代理認(rèn)證方式,參考:
--anyauth
--basic
--diges
--negotiate
--ntlm
-U <user:password>
--proxy-user <user:password>
設(shè)置代理的用戶名和密碼;
數(shù)據(jù)
傳輸
-G
--get
如果使用了此參數(shù),“-d/”、“--data”、“--data-binary”參數(shù)設(shè)置的數(shù)據(jù),講附加在url上,以GET的方式請求; 
-d @file
-d "string"
--data "string"
--data-ascii "string"
--data-binary "string"
--data-urlencode "string"
(HTTP)使用HTTP POST方式發(fā)送“key/value對”數(shù)據(jù),相當(dāng)于瀏覽器表單屬性(method="POST",enctype="application/x-www-form-urlencoded")
  -d,--data:HTTP方式POST數(shù)據(jù);
  --data-ascii:HTTP方式POST ascii數(shù)據(jù);
  --data-binary:HTTP方式POST二進(jìn)制數(shù)據(jù);
  --data-urlencode:HTTP方式POST數(shù)據(jù)(進(jìn)行urlencode);
如果數(shù)據(jù)以“@”開頭,后緊跟一個(gè)文件,將post文件內(nèi)的內(nèi)容;
-F name=@file
-F name=<file
-F name=content
--form name=content
(HTTP)使用HTTP POST方式發(fā)送類似“表單字段”的多類型數(shù)據(jù),相當(dāng)于同時(shí)設(shè)置瀏覽器表單屬性(method="POST",enctype="multipart/form-data"),可以使用此參數(shù)上傳二進(jìn)制文件。

如果字段內(nèi)容以“@”開頭,剩下的部分應(yīng)該是文件名,curl將會上傳此文件,如:
curl -F "pic=@pic.jpg" http://aiezu.com;
curl -F "page=@a.html;type=text/html" http://aiezu.com
curl -F "page=@/tmp/a;filename=a.txt" http://aiezu.com

如果字段內(nèi)容以“<”開頭,剩下的部分應(yīng)該是文件名,curl將從文件中獲取作為此字段的值,如:curl -F "text=<text.txt" http://aiezu.com;
--form-string <key=value>(HTTP)類似于“--form”,但是“@”、“<”無特殊含義;
-T file
--upload-file file
通過“put”的方式將文件傳輸?shù)竭h(yuǎn)程網(wǎng)址;

選項(xiàng)參數(shù)只使用字符"-",將通過stdin讀入文件內(nèi)容;
如:
cat test.txt|curl "http://aiezu.com/a.php" -T - 
curl "http://aiezu.com/a.php" -T - <test.txt

此參數(shù)也可以使用通配符:
curl -T "{file1,file2}" http://aiezu.com
curl -T "img[1-1000].png" http://aiezu.com
斷點(diǎn)
續(xù)傳
-C <offset>
--continue-at <offset>
斷點(diǎn)續(xù)轉(zhuǎn),從文件頭的指定位置開始繼續(xù)下載/上傳;
offset續(xù)傳開始的位置,如果offset值為“-”,curl會自動從文件中識別起始位置開始傳輸;
-r <range>
--range <range>
(HTTP/FTP/SFTP/FILE) 只傳輸內(nèi)容的指定部分:
0-499:最前面500字節(jié);
-500:最后面500字節(jié);
9500-:最前面9500字節(jié);
0-0,-1:最前面和最后面的1字節(jié);
100-199,500-599:兩個(gè)100字節(jié);



認(rèn)證
--basic(HTTP)告訴curl使用HTTP Basic authentication(HTTP協(xié)議時(shí)),這是默認(rèn)認(rèn)證方式;
--ntlm(HTTP)使用NTLM身份驗(yàn)證方式,用于HTTP協(xié)議;
一般用于IIS使用NTLM的網(wǎng)站;
--digest(HTTP)使用HTTP Digest authentication加密,用于HTTP協(xié)議;
配合“-u/--user”選項(xiàng),防止密碼使用明文方式發(fā)送;
--negotiate(HTTP)使用GSS-Negotiate authentication方式,用于HTTP協(xié)議;
它主要目的是為它的主要目的是為kerberos5認(rèn)證提供支持支持;
--anyauth(HTTP)告訴curl自動選擇合適的身份認(rèn)證方法,并選用最安全的方式;
-u user:password
--user user:password
使用用戶名、密碼認(rèn)證,此參數(shù)會覆蓋“-n”、“--netrc”和“--netrc-optional”選項(xiàng);

如果你只提供用戶名,curl將要求你輸入密碼;

如果你使用“SSPI”開啟的curl庫做“NTLM”認(rèn)證,可以使用不含用戶名密碼的“-u:”選項(xiàng),強(qiáng)制curl使用當(dāng)前登錄的用戶名密碼進(jìn)行認(rèn)證;

此參數(shù)相當(dāng)于設(shè)置http頭“Authorization:”;
證書-E <證書[:密碼]>
--cert <證書[:密碼]>
(SSL)指定“PEM”格式的證書文件和證書密碼;
--cert-type <type>(SSL)告訴curl所提供證書的類型:PEM、DER、ENG等;
默認(rèn)為“PEM”;
--cacert <CA證書>(SSL)告訴curl所以指定的CA證書文件,必須是“PEM”格式;
--capath <CA證書路徑>(SSL)告訴curl所以指定目錄下的CA證書用來驗(yàn)證;
這些證書必須是“PEM”格式;
--crlfile <file>(HTTPS/FTPS)提供一個(gè)PEM格式的文件,用于指定被吊銷的證書列表;
-k
--insecure
(SSL)設(shè)置此選項(xiàng)將允許使用無證書的不安全SSL進(jìn)行連接和傳輸。
SSL
其他
--ciphers <list of ciphers>(SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”;
--engine <name>設(shè)置一個(gè)OpenSSL加密引擎用于加密操作;
使用“curl --engine list”查看支持的加密引擎列表;
--random-file(SSL)指定包含隨機(jī)數(shù)據(jù)的文件路徑名;數(shù)據(jù)是用來為SSL連接產(chǎn)生隨機(jī)種子為;
--egd-file <file>(SSL)為隨機(jī)種子生成器EGD(Entropy Gathering Daemon socket)指定的路徑名;
-1/--tlsv1
--tlsv1.0
--tlsv1.1
--tlsv1.2
-2/--sslv2
-3/--sslv3
(SSL)使用TLS版本2與遠(yuǎn)程服務(wù)器通訊;
(SSL)使用TLS 1.0版本與遠(yuǎn)程服務(wù)器通訊;
(SSL)使用TLS 1.1版本與遠(yuǎn)程服務(wù)器通訊;
(SSL)使用TLS 1.2版本與遠(yuǎn)程服務(wù)器通訊;
(SSL)使用SSL版本2與遠(yuǎn)程服務(wù)器通訊;
(SSL)使用SSL版本3與遠(yuǎn)程服務(wù)器通訊;
私鑰
公鑰
--key <key>(SSL/SSH)指定一個(gè)私鑰文件名;為指定時(shí)自動嘗試使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、 “./id_dsa”;
--key-type <type>(SSL)指定私鑰文件類型,支持:DER、PEM、ENG,默認(rèn)是PEM;
--pass <phrase>(SSL/SSH)指定私鑰文件的密碼;
--pubkey <key>(SSH)使用指定文件提供的您公鑰;
FTP-P
--ftp-port <接口>
(FTP)FTP主動模式時(shí),設(shè)置一個(gè)地址等待服務(wù)器的連接,如:
網(wǎng)卡:eth1
IP:8.8.8.8
主機(jī)名:aiezu.com
可以加端口號:eth1:20000-21000;
--crlf(FTP)上傳時(shí)將換行符(LF)轉(zhuǎn)換為回車換行(CRLF);
--ftp-account [data](FTP)ftp帳號信息;
--ftp-method [method](FTP)可選值:multicwd/nocwd/singlecwd;
--ftp-pasv(FTP)使用使用PASV(被動)/EPSV模式;
--ftp-skip-pasv-ip(FTP)使用PASV的時(shí),跳過指定IP;
--ftp-create-dirs(FTP)上傳時(shí)自動創(chuàng)建遠(yuǎn)程目錄;
-l
--list-only
(FTP)列出ftp文件列表;
-B
--use-ascii
(FTP/LDAP)使用Ascii傳輸模式,用于FTP、LDAP;在ftp中相當(dāng)與使用了“type=A;”模式。
--disable-epsv(FTP)告訴curl在PASV(被動模式)時(shí)不要使用EPSV;
--disable-eprt(FTP)告訴curl在主動模式時(shí)禁用EPRT和LPRT;
限速--limit-rate <speed>限制curl使用的最大帶寬;如果未指定單位,默認(rèn)單位為“bytes/秒”,你也可以指定單位為“K”、“M”、“G”等單位,如:“--limit-rate 1m”為限制最大使用帶寬為“1m字節(jié)/秒”;
-y
--speed-time <time>
If a download is slower than speed-limit bytes per second during a speed-time period, the download gets aborted. If speed-time is used, the default speed-limit will be 1 unless set with -Y.
This option controls transfers and thus will not affect slow connects etc. If this is a concern for you, try the --connect-timeout option.
-Y
--speed-limit <speed>
If a download is slower than this given speed (in bytes per second) for speed-time seconds it gets aborted. speed-time is set with -y and is 30 if not set.
其他
選項(xiàng)
-0/--http1.0(HTTP) 強(qiáng)制curl使用HTTP 1.0而不是使用默認(rèn)的HTTP 1.1;
--interface <name>使用指定的網(wǎng)卡接口訪問;
curl --interface eth0 http://aiezu.com
curl --interface 10.0.0.101 http://aiezu.com
-X <command>
--request <command>
(HTTP)指定與服務(wù)器通信使用的請求方法,如:GET、PUT、POST、DELETE等,默認(rèn)GET;
--keepalive-time <seconds>設(shè)置keepalive時(shí)間
--no-keepalive關(guān)閉keepalive功能;
--no-buffer禁用對輸出流緩沖;
--buffer啟用輸出流緩沖;
-L
--location
(HTTP/HTTPS)追隨http響應(yīng)頭“Location:”定向到跳轉(zhuǎn)后的頁面;
(在http響應(yīng)碼為3XX時(shí)使用,如301跳轉(zhuǎn)、302跳轉(zhuǎn))
--location-trusted(HTTP/HTTPS)同“--location”,但跳轉(zhuǎn)后會發(fā)送跳轉(zhuǎn)前的用戶名和密碼;
--compressed(HTTP)請求對返回內(nèi)容使用壓縮算法進(jìn)行壓縮;curl支持對gzip壓縮進(jìn)行解壓;
--connect-timeout <seconds>指定最大連接超時(shí),單位“秒”;
-m seconds
--max-time seconds
限制整個(gè)curl操作的最長時(shí)間,單位為秒;
-s
--silent
安靜模式。不要顯示進(jìn)度表或錯(cuò)誤消息;
-#
--progress-bar
顯示進(jìn)度條;
錯(cuò)誤
選項(xiàng)
-f
--fail
(HTTP)連接失敗時(shí)(400以上錯(cuò)誤)不返回默認(rèn)錯(cuò)誤頁面,而是返回一個(gè)curl錯(cuò)誤碼“22”;
--retry <num>
--retry-delay <seconds>
--retry-max-time <seconds>
失敗重試次數(shù);
重試間隔時(shí)間;
最大重試時(shí)間;
-S
--show-error
安靜模式下顯示錯(cuò)誤信息;
--stderr <file>錯(cuò)誤信息保存文件;
輸出-o file
--output file
將返回內(nèi)容輸出到文件。
如果是用過通配符獲取多個(gè)url,可以使用“#”后跟“數(shù)字序號”,curl會自動將它替換對應(yīng)的關(guān)鍵詞,如:
  curl "http://aiezu.com/{a,b}.txt" -o "#1.txt";
  將保存為:“a.txt”,“b.txt”;

  curl "http://aiezu.com/{a,b}_[1-3].txt" -o "#1#2.txt";
  將保存為:a1.txt、a2.txt、a3.txt、b1.txt、b2.txt、b3.txt

  如果要根據(jù)規(guī)則創(chuàng)建保存目錄,參考:“--create-dirs”

指定“-”將定向到標(biāo)準(zhǔn)輸出“如控制臺”; 
-O
--remote-name
將返回內(nèi)容輸出到當(dāng)前目錄下,和url中文件名相同的文件中(不含目錄);
--create-dirs與“-o”參數(shù)配合使用,創(chuàng)建必要的本地目錄層次結(jié)構(gòu)
-w
--write-out format
操作完成后在返回信息尾部追加指定的內(nèi)容;要追加的內(nèi)容可以是一個(gè)字符串“string”、從文件中獲取“@filename”、從標(biāo)準(zhǔn)輸入中獲取“@-”

格式參數(shù)中可以用%{variable_name} 方式使用響應(yīng)信息的相關(guān)變量,如:%{content_type}、%{http_code}、%{local_ip}...,更多變量參考“man curl”獲取;

格式參數(shù)可以使用“\n”、“\r”、“\t”等轉(zhuǎn)義字符;
調(diào)試--trace <file>轉(zhuǎn)儲所有傳入和傳出的數(shù)據(jù)到文件,包括描述信息;
使用“-”作為文件名將輸出發(fā)送到標(biāo)準(zhǔn)輸出。
--trace-ascii file轉(zhuǎn)儲所有傳入和傳出的數(shù)據(jù)到文件,包括描述信息,只轉(zhuǎn)儲ASCII部分,更容易閱讀;
使用“-”作為文件名將輸出發(fā)送到標(biāo)準(zhǔn)輸出。
這個(gè)選項(xiàng)會覆蓋之前使用的-v、 --verbose、 --trace-ascii選項(xiàng);
--trace-time轉(zhuǎn)儲文件中添加時(shí)間信息;
-K
--config <config file>
從配置文件中讀取參數(shù),參考:http://curl.haxx.se/docs/
-v
--verbose
顯示更詳細(xì)的信息,調(diào)試時(shí)使用;
幫助-M
--manual
顯示完整的幫助手冊;
-h
--help
linux curl用法幫助;

四、curl使用的常用命令

1、下載(option:-o或者option:-O)

1.1、下載頁面:

curl -o dodo1.jpg http:www.linux.com/dodo1.JPG
#要注意-O這里后面的url要具體到某個(gè)文件,不然抓不下來
curl -O http://www.linux.com/dodo1.JPG

1.2、循環(huán)下載

有時(shí)候下載圖片可以能是前面的部分名稱是一樣的,就最后的尾椎名不一樣。這樣就會把dodo1,dodo2,dodo3,dodo4,dodo5全部保存下來
curl -O http://www.linux.com/dodo[1-5].JPG

1.3、下載重命名

在hello/dodo1.JPG的文件下載下來就會變成hello_dodo1.JPG,其他文件依此類推,從而有效的避免了文件被覆蓋
curl -o #1_#2.JPG http://www.linux.com/{hello,bb}/dodo[1-5].JPG
由于下載的hello與bb中的文件名都是dodo1,dodo2,dodo3,dodo4,dodo5。因此第二次下載的會把第一次下載的覆蓋,這樣就需要對文件進(jìn)行重命名。
curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG

1.4、分塊下載(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)容了

1.5、通過ftp下載文件(option:-u)

curl可以通過ftp下載文件,curl提供兩種從ftp中下載的語法
curl -O -u 用戶名:密碼 ftp://www.linux.com/dodo1.JPG
curl -O ftp://用戶名:密碼@www.linux.com/dodo1.JPG

1.6、下載,顯示進(jìn)度條(option:-#)或不顯示進(jìn)度條(option:-s)

curl -# -O http://www.linux.com/dodo1.JPG  
curl -s -O http://www.linux.com/dodo1.JPG

1.7、下載,斷點(diǎn)續(xù)傳(-C <offset>)

斷點(diǎn)續(xù)轉(zhuǎn),從文件頭的指定位置開始繼續(xù)下載/上傳;offset續(xù)傳開始的位置,如果offset值為“-”,curl會自動從文件中識別起始位置開始傳輸;
curl -# -o centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso
curl -C -O http://www.linux.com/dodo1.JPG

2、上傳文件(option:-T)

curl -T dodo1.JPG -u 用戶名:密碼 ftp://www.linux.com/img/

3、偽造來源頁面|偽造referer|盜鏈 (option:-e)

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

4、偽造代理設(shè)備(模仿瀏覽器)

有些網(wǎng)站需要使用特定的瀏覽器去訪問他們,有些還需要使用某些特定的版本。curl內(nèi)置option:-A可以讓我們指定瀏覽器去訪問網(wǎng)站
curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com
#告訴愛E族,我是GOOGLE爬蟲蜘蛛(其實(shí)我是curl命令)
curl -A " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://aiezu.com
#告訴愛E族,我用的是微信內(nèi)置瀏覽器
curl -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0" http://aiezu.com

5、設(shè)置http請求

5.1、設(shè)置http請求頭(或option:-H或option:--head)

curl -H "Cache-Control:no-cache"  http://aiezu.com

5.2、指定proxy服務(wù)器以及其端口(option::-x)

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

6、http響應(yīng)頭

6.1、查看http響應(yīng)頭(option:-I)

# 看看本站的http頭是怎么樣的
curl -I  http://aiezu.com
輸出:
HTTP/1.1 200 OK
Date: Fri, 25 Nov 2016 16:45:49 GMT
Server: Apache
Set-Cookie: rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8

6.2、保存http的response里面的header信息(option:-D)

curl -D cookied.txt http://www.linux.com
執(zhí)行后cookie信息就被存到了cookied.txt里面了
注意:-c(小寫)產(chǎn)生的cookie和-D里面的cookie是不一樣的。

7、發(fā)送表單數(shù)據(jù)

curl -F "pic=@logo.png" -F "site=aiezu"  http://aiezu.com/

8、cookie

8.1、發(fā)送cookie(option:-b)

#有些網(wǎng)站是使用cookie來記錄session信息。對于chrome這樣的瀏覽器,可以輕易處理cookie信息,但在curl中只要增加相關(guān)參數(shù)也是可以很容易的處理cookie
curl -b "domain=aiezu.com"  http://aiezu.com
#很多網(wǎng)站都是通過監(jiān)視你的cookie信息來判斷你是否按規(guī)矩訪問他們的網(wǎng)站的,因此我們需要使用保存的cookie信息。內(nèi)置option: -b
curl -b cookiec.txt http://www.linux.com

8.2、保存http的response里面的cookie信息(option:-c)

執(zhí)行后http的response里面的cookie信息就被存到了cookiec.txt里面了
curl -c cookiec.txt  http://www.linux.com

9、測試一個(gè)網(wǎng)址

9.1、測試一個(gè)網(wǎng)址是否可達(dá)
curl -v http://www.linux.com

9.2、測試網(wǎng)頁返回值(option:-w [format])
curl -o /dev/null -s -w %{http_code} www.linux.com

10、保存訪問的網(wǎng)頁(>>)

使用linux的重定向功能保存
curl http://www.linux.com >> linux.html

11、請求方式

curl -i -v -H '' -X POST -d '' http:www.test.com/a/b
其中,-X POST -d, -X GET -d, -X PUT -d 分別等價(jià)于-F, -G -d, -P

以post請求為例:

11.1、 -X POST -d

(11.1.1)、POST application/x-www-form-urlencoded

application/x-www-form-urlencoded是默認(rèn)的
curl -X POST -d "param1=value1¶m2=value2" http://localhost:3000/data
等價(jià)于
curl -H "Content-Type:application/x-www-form-urlencoded" -X POST -d "param1=value1¶m2=value2" http://localhost:3000/data
使用數(shù)據(jù)文件
curl -X POST -d "@data.txt" http://localhost:3000/data
其中data.txt內(nèi)容如下:param1=value1¶m2=value2

(11.1.2)、POST application/json

curl -H "Content-Type:application/json" -X POST -d '{"key1":"value1","key2":"value2"}' http://localhost:3000/data
使用數(shù)據(jù)文件的話:
curl -X POST -d "@data.json" http://localhost:3000/data
其中data.json內(nèi)容如下:{"key1":"value1","key2":"value2"}
再舉個(gè)例子:
curl -H "Content-type:application/json" -X POST -d "{\"app_key\":\"$appKey\",\"time_stamp\":\"$time\"}" http://www.test.com.cn/a/b

11.2、-F

curl  -v -H "token: 222" -F "file=@/Users/fungleo/Downloads/401.png" localhost:8000/api/v1/upimg 

curl -f http://www.linux.com/error

11.3、其它舉例

(11.3.1)、

curl  -X POST "http://www.test.com/e/f" -H "Content-Type:application/x-www-form-urlencoded;charset=UTF-8" \
-d "a=b" \
-d "c=d" \
-d "e=f" \
-d "g=h"

(11.3.2)、錯(cuò)誤:curl -i -G -d "a=b#1&c=d" http://www.test.com/e/f
正確:要把參數(shù)值是特殊符號的用urlencode轉(zhuǎn)換過來
curl -i -G -d "a=b%231&c=d" http://www.test.com/e/f

12、調(diào)試

curl -v可以顯示一次http通信的整個(gè)過程,包括端口連接和http request頭信息。
如果覺得還不夠,那么下面的命令可以查看更詳細(xì)的通信過程:
curl --trace output.txt www.baidu.com 或者 curl --trace-ascii output.txt www.baidu.com 
運(yùn)行后,請打開output.txt文件查看。
curl --trace output.txt  http://www.baidu.com
curl --trace-ascii output2.txt  http://www.baidu.com
curl --trace output3.txt --trace-time http://www.baidu.com
curl --trace-ascii output4.txt --trace-time http://www.baidu.com

舉例:有需求每5分鐘請求一次http://www.test.com/a/b生成一個(gè)日志文件。希望一月的日志(正確的和錯(cuò)誤的)能寫入一個(gè)日志文件
day=`date +%F`
logfile='/var/logs/www.test.com_'`date +%Y%m`'.log'
/usr/bin/echo -e "\n\n[${day}] Start request \n " >> ${logfile}
/bin/curl -v "http://www.test.com/a/b" -d "ccccc" 1>> ${logfile} 2>> ${logfile} --trace-time
/usr/bin/echo -e "\n\n[${day}] End request\n" >> ${logfile}

13、顯示抓取錯(cuò)誤

curl -f http://www.linux.com/error

四、總結(jié)

本篇文章介紹了Curl.exe的基本使用、進(jìn)階使用和高級用法,包括發(fā)送HTTP請求、上傳文件、模擬登錄、設(shè)置請求頭、進(jìn)行文件下載、并發(fā)測試、API測試、數(shù)據(jù)分析和數(shù)據(jù)傳輸控制等方面。Curl.exe是一個(gè)非常實(shí)用的命令行工具,可以幫助開發(fā)者更好地進(jìn)行接口測試和數(shù)據(jù)分析。

到此這篇關(guān)于curl.exe安裝使用的最全參數(shù)詳解以及常用命令匯總的文章就介紹到這了,更多相關(guān)curl安裝使用的常用命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論