curl基本用法
curl 是一種命令行工具,作用是發(fā)出網(wǎng)絡(luò)請求,然后獲取數(shù)據(jù),顯示在"標準輸出"(stdout)上面。
以下是博主整理的一些關(guān)于curl命令的基本用法。
|
-A/--user-agent <string> |
設(shè)置用戶代理發(fā)送給服務(wù)器 |
|
-b/--cookie <name=string/file> |
cookie字符串或文件讀取位置 |
|
-c/--cookie-jar <file> |
操作結(jié)束后把cookie寫入到這個文件中 |
|
-C/--continue-at <offset> |
斷點續(xù)轉(zhuǎn) |
|
-D/--dump-header <file> |
把header信息寫入到該文件中 |
|
-e/--referer |
來源網(wǎng)址 |
|
-f/--fail |
連接失敗時不顯示http錯誤 |
|
-o/--output |
把輸出寫到該文件中 |
|
-O/--remote-name |
把輸出寫到該文件中,保留遠程文件的文件名 |
|
-r/--range <range> |
檢索來自HTTP/1.1或FTP服務(wù)器字節(jié)范圍 |
|
-s/--silent |
靜音模式。不輸出任何東西 |
|
-T/--upload-file <file> |
上傳文件 |
|
-u/--user <user[:password]> |
設(shè)置服務(wù)器的用戶和密碼 |
|
-w/--write-out [format] |
完成后輸出什么 |
|
-x/--proxy <host[:port]> |
在給定的端口上使用HTTP代理 |
|
-#/--progress-bar |
進度條顯示當(dāng)前的傳送狀態(tài) |
示例:
基本用法
# curl http://www.baidu.com
保存訪問的網(wǎng)頁
重定向:
# curl http://www.baidu.com >> linux.html
使用 -o 參數(shù):
# curl -o linux.html http://www.baidu.com
當(dāng)然也可以使用 -O 參數(shù)保存網(wǎng)頁中的文件(注意:一定要指定具體的文件)
# curl -O http://www.baidu.com/hello.sh
測試網(wǎng)頁返回值
# curl -o /dev/null -s -w %{http_code} www.baidu.com
顯示網(wǎng)頁返回狀態(tài)碼,200表示成功。
詳細可見博主另外一篇:https://www.cnblogs.com/liuxia912/p/10960116.html
指定proxy服務(wù)器以及其端口
curl支持通過內(nèi)置option:-x支持設(shè)置代理
# curl -x 192.168.0.1:10086 http://www.baidu.com
cookie
很多網(wǎng)站可以通過cookie來記錄session信息,curl可以通過內(nèi)置命令來保存和使用cookie信息。
保存http的response里面的cookie信息。內(nèi)置option:-c(小寫)
# curl -c cookie.txt http://www.baidu.com
執(zhí)行之后,cookie信息就被保存到
cookie.txt
文件里面了。
保存http的response里面的header信息。內(nèi)置option:-D
# curl -D cookied.txt http://www.baidu.com
同上。(注:-c與-D產(chǎn)生的cookie文件并不一致)
cookie使用
很多網(wǎng)站使用cookie去鑒定用戶訪問權(quán)限,curl通過內(nèi)置option:-b
# curl -b cookiec.txt http://www.baidu.com
模擬瀏覽器訪問
在某些特定情況下,我們需要模擬訪問的瀏覽器以及版本,使用內(nèi)置option:-A進行訪問
# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.baidu.com
這樣服務(wù)器端就會認為是使用IE8.0去訪問的。
偽造referer(盜鏈)
很多服務(wù)器在收到請求的時候,會去check referer(源網(wǎng)頁)。curl使用內(nèi)置option:-e可以指定referer
# curl -e "www.baidu.com" http://mail.linux.com
這樣就會讓服務(wù)器其以為你是從www.baidu.com點擊某個鏈接過來的
下載文件
使用內(nèi)置option:-o下載
# curl -o tieba1.jpg http:www.baidu.com/tieba1.JPG
使用內(nèi)置option:-O下載
# curl -O http://www.baidu.com/tieba1.JPG
循環(huán)下載
# curl -O http://www.baidu.com/tieba[1-5].JPG
下載重命名
# curl -O http://www.baidu.com/{hello,bb}/tieba[1-5].JPG
由于下載的時候有名字重合的地方,會產(chǎn)生覆蓋。
# curl -o #1_#2.JPG http://www.baidu.com/{hello,bb}/tieba[1-5].JPG
這樣在hello/tieba1.JPG的文件下載下來就會變成hello_tieba1.JPG,其他文件依此類推,從而有效的避免了文件被覆蓋
分塊下載
有時候下載的東西會比較大,這個時候我們可以分段下載。使用內(nèi)置option:-r
# curl -r 0-100 -o
tieba1_part1.JPG http://www.baidu.com/tieba1.JPG
# curl -r 100-200 -o
tieba1_part2.JPG http://www.baidu.com/tieba1.JPG
# curl -r 200- -o
tieba1_part3.JPG http://www.baidu.com/tieba1.JPG
# cat tieba1_part* > tieba1.JPG</pre>
通過ftp下載
curl可以通過ftp下載文件,curl提供兩種從ftp中下載的語法
# curl -O -u 用戶名:密碼 ftp://www.baidu.com/tieba1.JPG
# curl -O ftp://用戶名:密碼@www.baidu.com/tieba1.JPG
顯示下載進度條
# curl -# -O http://www.baidu.com/tieba1.JPG
斷點續(xù)傳
如果在下載tieba1.JPG的過程中突然掉線了,可以使用以下的方式續(xù)傳
# curl -C -O http://www.baidu.com/tieba1.JPG
上傳文件
curl不僅僅可以下載文件,還可以上傳文件。通過內(nèi)置option:-T來實現(xiàn)
# curl -T tieba1.JPG -u 用戶名:密碼 ftp://www.baidu.com/img/
顯示抓取錯誤
# curl -f http://www.baidu.com/error
其他
|
-a/--append |
上傳文件時,附加到目標文件 |
|
--anyauth |
可以使用"任何"身份驗證方法 |
|
--basic |
使用HTTP基本驗證 |
|
-B/--use-ascii |
使用ASCII文本傳輸 |
|
-d/--data <data> |
HTTP POST方式傳送數(shù)據(jù) |
|
--data-ascii <data> |
以ascii的方式post數(shù)據(jù) |
|
--data-binary <data> |
以二進制的方式post數(shù)據(jù) |
|
--negotiate |
使用HTTP身份驗證 |
|
--digest |
使用數(shù)字身份驗證 |
|
--disable-eprt |
禁止使用EPRT或LPRT |
|
--disable-epsv |
禁止使用EPSV |
|
--egd-file <file> |
為隨機數(shù)據(jù)(SSL)設(shè)置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 |
要求返回是壓縮的形式 |
|
--connect-timeout <seconds> |
設(shè)置最大請求時間 |
|
--create-dirs |
建立本地目錄的目錄層次結(jié)構(gòu) |
|
--crlf |
上傳是把LF轉(zhuǎn)變成CRLF |
|
--ftp-create-dirs |
如果遠程目錄不存在,創(chuàng)建遠程目錄 |
|
--ftp-method [multicwd/nocwd/singlecwd] |
控制CWD的使用 |
|
--ftp-pasv |
使用 PASV/EPSV 代替端口 |
|
--ftp-skip-pasv-ip |
使用PASV的時候,忽略該IP地址 |
|
--ftp-ssl |
嘗試用 SSL/TLS 來進行ftp數(shù)據(jù)傳輸 |
|
--ftp-ssl-reqd |
要求用 SSL/TLS 來進行ftp數(shù)據(jù)傳輸 |
|
-F/--form <name=content> |
模擬http表單提交數(shù)據(jù) |
|
-form-string <name=string> |
模擬http表單提交數(shù)據(jù) |
|
-g/--globoff |
禁用網(wǎng)址序列和范圍使用{}和[] |
|
-G/--get |
以get的方式來發(fā)送數(shù)據(jù) |
|
-h/--help |
幫助 |
|
-H/--header <line> |
自定義頭信息傳遞給服務(wù)器 |
|
--ignore-content-length |
忽略的HTTP頭信息的長度 |
|
-i/--include |
輸出時包括protocol頭信息 |
|
-I/--head |
只顯示文檔信息 |
|
-j/--junk-session-cookies |
讀取文件時忽略session cookie |
|
--interface <interface> |
使用指定網(wǎng)絡(luò)接口/地址 |
|
--krb4 <level> |
使用指定安全級別的krb4 |
|
-k/--insecure |
允許不使用證書到SSL站點 |
|
-K/--config |
指定的配置文件讀取 |
|
-l/--list-only |
列出ftp目錄下的文件名稱 |
|
--limit-rate <rate> |
設(shè)置傳輸速度 |
|
--local-port<NUM> |
強制使用本地端口號 |
|
-m/--max-time <seconds> |
設(shè)置最大傳輸時間 |
|
--max-redirs <num> |
設(shè)置最大讀取的目錄數(shù) |
|
--max-filesize <bytes> |
設(shè)置最大下載的文件總量 |
|
-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 |
在代理上使用數(shù)字身份驗證 |
|
--proxy-ntlm |
在代理上使用ntlm身份驗證 |
|
-P/--ftp-port <address> |
使用端口地址,而不是使用PASV |
|
-Q/--quote <cmd> |
文件傳輸前,發(fā)送命令到服務(wù)器 |
|
--range-file |
讀取(SSL)的隨機文件 |
|
-R/--remote-time |
在本地生成文件時,保留遠程文件時間 |
|
--retry <num> |
傳輸出現(xiàn)問題時,重試的次數(shù) |
|
--retry-delay <seconds> |
傳輸出現(xiàn)問題時,設(shè)置重試間隔時間 |
|
--retry-max-time <seconds> |
傳輸出現(xiàn)問題時,設(shè)置最大重試時間 |
|
-S/--show-error |
顯示錯誤 |
|
--socks4 <host[:port]> |
用socks4代理給定主機和端口 |
|
--socks5 <host[:port]> |
用socks5代理給定主機和端口 |
|
-t/--telnet-option <OPT=val> |
Telnet選項設(shè)置 |
|
--trace <file> |
對指定文件進行debug |
|
--trace-ascii <file> |
Like --跟蹤但沒有hex輸出 |
|
--trace-time |
跟蹤/詳細輸出時,添加時間戳 |
|
--url <URL> |
Spet URL to work with |
|
-U/--proxy-user <user[:password]> |
設(shè)置代理用戶名和密碼 |
|
-V/--version |
顯示版本信息 |
|
-X/--request <command> |
指定什么命令 |
|
-y/--speed-time |
放棄限速所要的時間。默認為30 |
|
-Y/--speed-limit |
停止傳輸速度的限制,速度時間'秒 |
|
-z/--time-cond |
傳送時間設(shè)置 |
|
-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 |
總結(jié)
- 上一篇: 「newbee-mall新蜂商城开源啦」
- 下一篇: netcat