curl.exe安裝使用的最全參數(shù)詳解以及常用命令匯總
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ù) | 描述 |
---|---|---|
url | url | 需要抓取的一到多個(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)文章
django項(xiàng)目、vue項(xiàng)目部署云服務(wù)器的詳細(xì)過程
這篇文章主要介紹了django項(xiàng)目、vue項(xiàng)目部署云服務(wù)器的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07Web壓力測試工具:http_load、webbench、ab、Siege使用方法
這篇文章主要介紹了Web壓力測試工具:http_load、webbench、ab、Siege使用教程,需要的朋友可以參考下2015-09-09服務(wù)發(fā)現(xiàn)與負(fù)載均衡機(jī)制Service實(shí)例創(chuàng)建
這篇文章主要為大家介紹了服務(wù)發(fā)現(xiàn)與負(fù)載均衡機(jī)制Service實(shí)例創(chuàng)建有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03Mac OSX下使用MAMP安裝配置PHP開發(fā)環(huán)境
本部分描述如何在 Mac 上安裝 MAMP。將通過一個(gè)操作安裝 Apache Web 服務(wù)器、MySQL 和phpMyAdmin,需要的朋友可以參考下2017-09-09Apache Hudi數(shù)據(jù)布局黑科技降低一半查詢時(shí)間
這篇文章主要介紹了Apache Hudi數(shù)據(jù)布局黑科技幫你降低一半查詢時(shí)間,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-03-03aws服務(wù)器更換實(shí)例規(guī)格后ssh無法登陸的解決方案
這篇文章主要介紹了aws服務(wù)器更換實(shí)例規(guī)格后ssh無法登陸,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07