一、指令簡介
curl指令在linux作業系統中經常來測試網絡和url的聯通性,模拟正常的網絡通路。curl是一個利用URL規則在指令行下工作的檔案傳輸工具,可以說是一款很強大的http指令行工具。它支援檔案的上傳和下載下傳,是綜合傳輸工具,但按傳統,習慣稱url為下載下傳工具。curl還支援包括HTTP、HTTPS、ftp等衆多協定,還支援POST、cookies、認證、從指定偏移處下載下傳部分檔案等功能。
二、使用示例
1、直接通路網站
[[email protected] ~]# curl www.baidu.com
2、僅顯示網站頭檔案
[[email protected] ~]# curl -I www.baidu.com
3、顯示詳細通信過程
[[email protected] ~]# curl -v http://www.baidu.com
4、下載下傳指定檔案
-o和-O的差別在于小寫o是儲存到指令行中指定檔案名,大寫O是使用URL中檔案名作為輸出檔案
[[email protected] opt]# curl -O http://www.linux.com/hello.sh
[[email protected] opt]# curl -o log.png http://www.bigdatayh.com/images/index_fonts.png
5、指定代理下載下傳
[[email protected] opt]# curl -x 192.168.0.1:18080 http://www.baidu.com
6、儲存http的response裡面的cookie資訊
[[email protected] opt]# curl -c cookiec.txt http://www.baidu.com
7、儲存http的response裡面的header資訊
[[email protected] opt]# curl -D cookiec.txt http://www.baidu.com
8、模拟浏覽器通路
模拟IE8通路百度
[[email protected] opt]# curl -A “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)” http://www.baidu.com
9、僞造referer反射器
[[email protected] opt]# curl -e ‘http://www.baidu.com?=新浪體育’ https://sports.sina.com.cn/
10、通過ftp下載下傳檔案
[[email protected] opt]# curl -O -u 使用者名:密碼 ftp://www.linux.com/dodo1.JPG
[[email protected] opt]# curl -O ftp://使用者名:密碼@www.linux.com/dodo1.JPG
11、上傳檔案
[root@test1 opt]#curl -T dodo1.JPG -u 使用者名:密碼 ftp://www.linux.com/img/
三、使用文法及參數說明
1、使用文法
用法:curl [option] [url]
2、參數說明
參數 | 參數說明 |
---|---|
-A,–user-agent <string> | 設定使用者代理發送給伺服器 |
-a,–append | 上傳檔案時,附加到目标檔案 |
–anyauth | 可以使用“任何”身份驗證方法 |
–basic | 使用HTTP基本驗證 |
-b,–cookie <name=string/file> | cookie字元串或檔案讀取位置 |
-c,–cookie-jar | 操作結束後把cookie寫入到這個檔案中 |
-C,–continue-at | 斷點續轉 |
-D,–dump-header | 把header資訊寫入到該檔案中 |
-e,–referer | 來源網址 |
-f,–fail | 連接配接失敗時不顯示http錯誤 |
-o,–output | 把輸出寫到該檔案中 |
-O,–remote-name | 把輸出寫到該檔案中,保留遠端檔案的檔案名 |
-r,–range | 檢索來自HTTP/1.1或FTP伺服器位元組範圍 |
-s,–silent | 靜音模式。不輸出任何東西 |
-T,–upload-file | 上傳檔案 |
-w,–write-out [format] | 什麼輸出完成後 |
-x,–proxy <host[:port]> | 在給定的端口上使用HTTP代理 |
-B,–use-ascii | 使用ASCII文本傳輸 |
-d,–data <data> | HTTP POST方式傳送資料 |
–data-ascii <data> | 以ascii的方式post資料 |
–data-binary <data> | 以二進制的方式post資料 |
–negotiate | 使用HTTP身份驗證 |
–digest | 使用數字身份驗證 |
–disable-eprt | 禁止使用EPRT或LPRT |
–disable-epsv | 禁止使用EPSV |
–egd-file <file> | 為随機資料(SSL)設定EGD socket路徑 |
–tcp-nodelay | 使用TCP_NODELAY選項 |
-E,–cert <cert[:passwd]> | 用戶端證書檔案和密碼 (SSL) |
–cert-type <type> | 證書檔案類型 (DER/PEM/ENG) (SSL) |
–key <key> | 私鑰檔案名 (SSL) |
–key-type <type> | 私鑰檔案類型 (DER/PEM/ENG) (SSL) |
–pass <pass> | 私鑰密碼 (SSL) |
–engine <eng> | 加密引擎使用 (SSL). “–engine list” for list |
–cacert <file> | CA憑證 (SSL) |
–capath <directory> | CA目 (made using c_rehash) to verify peer against (SSL) |
–ciphers <list> | SSL密碼 |
–compressed | 要求傳回是壓縮的形勢 (using deflate or gzip) |
–connect-timeout | 設定最大請求時間 |
–create-dirs | 建立本地目錄的目錄層次結構 |
–crlf | 上傳是把LF轉變成CRLF |
–ftp-create-dirs | 如果遠端目錄不存在,建立遠端目錄 |
–ftp-method [multicwd/nocwd/singlecwd] | 控制CWD的使用 |
–ftp-pasv | 使用 PASV/EPSV 代替端口 |
–ftp-skip-pasv-ip | 使用PASV的時候,忽略該IP位址 |
–ftp-ssl | 嘗試用 SSL/TLS 來進行ftp資料傳輸 |
–ftp-ssl-reqd | 要求用 SSL/TLS 來進行ftp資料傳輸 |
-F,–form <name=content> | 模拟http表單送出資料 |
-form-string <name=string> | 模拟http表單送出資料 |
-g,–globoff | 禁用網址序列和範圍使用{}和[] |
-G,–get | 以get的方式來發送資料 |
-h,–help | 幫助 |
-H,–header | 自定義頭資訊傳遞給伺服器 |
–ignore-content-length | 忽略的HTTP頭資訊的長度 |
-i,–include | 輸出時包括protocol頭資訊 |
-I,–head | 隻顯示文檔資訊 |
-j,–junk-session-cookies | 讀取檔案時忽略session cookie |
–interface <interface> | 使用指定網絡接口/位址 |
–krb4 <level> | 使用指定安全級别的krb4 |
-k,–insecure | 允許不使用證書到SSL站點 |
-K,–config | 指定的配置檔案讀取 |
-l,–list-only | 列出ftp目錄下的檔案名稱 |
–limit-rate <rate> | 設定傳輸速度 |
–local-port <NUM> | 強制使用本地端口号 |
-m,–max-time <seconds> | 設定最大傳輸時間 |
–max-redirs <num> | 設定最大讀取的目錄數 |
–max-filesize <bytes> | 設定最大下載下傳的檔案總量 |
-M,–manual | 顯示全手動 |
-n,–netrc | 從netrc檔案中讀取使用者名和密碼 |
–netrc-optional | 使用 .netrc 或者 URL來覆寫-n |
–ntlm | 使用 HTTP NTLM 身份驗證 |
-N,–no-buffer | 禁用緩沖輸出 |
-p,–proxytunnel | 使用HTTP代理 |
–proxy-anyauth | 選擇任一代理身份驗證方法 |
–proxy-basic | 在代理上使用基本身份驗證 |
–proxy-digest | 在代理上使用數字身份驗證 |
–proxy-ntlm | 在代理上使用ntlm身份驗證 |
-P,–ftp-port <address> | 使用端口位址,而不是使用PASV |
-Q,–quote <cmd> | 檔案傳輸前,發送指令到伺服器 |
–range-file | 讀取(SSL)的随機檔案 |
-R,–remote-time | 在本地生成檔案時,保留遠端檔案時間 |
–retry <num> | 傳輸出現問題時,重試的次數 |
–retry-delay <seconds> | 傳輸出現問題時,設定重試間隔時間 |
–retry-max-time <seconds> | 傳輸出現問題時,設定最大重試時間 |
-S,–show-error | 顯示錯誤 |
–socks4 <host[:port]> | 用socks4代理給定主機和端口 |
–socks5 <host[:port]> | 用socks5代理給定主機和端口 |
-T, --upload-file FILE | 将檔案傳輸到目标 |
-t,–telnet-option <OPT=val> | Telnet選項設定 |
–trace <file> | 對指定檔案進行debug |
–trace-ascii <file> | Like --跟蹤但沒有hex輸出 |
–trace-time | 跟蹤/詳細輸出時,添加時間戳 |
–url <URL> | Spet URL to work with |
-U,–proxy-user <user[:password]> | 設定代理使用者名和密碼 |
-V,–version | 顯示版本資訊 |
-X,–request <command> | 指定什麼指令 |
-y,–speed-time | 放棄限速所要的時間。預設為30 |
-Y,–speed-limit | 停止傳輸速度的限制,速度時間’秒 |
-z,–time-cond | 傳送時間設定 |
-0,–http1.0 | 使用HTTP 1.0 |
-1,–tlsv1 | 使用TLSv1(SSL) |
-2,–sslv2 | 使用SSLv2的(SSL) |
-3,–sslv3 | 使用的SSLv3(SSL) |
–3p-quote | like -Q for the source URL for 3rd party transfer |
–3p-url | 使用url,進行第三方傳送 |
–3p-user | 使用使用者名和密碼,進行第三方傳送 |
-4,–ipv4 | 使用IP4 |
-6,–ipv6 | 使用IP6 |
-#/–progress-bar | 進度條顯示目前的傳送狀态 |