curl命令詳解

可以看作命令行瀏覽器

1、開啓gzip請求
curl -I http://www.sina.com.cn/ -H Accept-Encoding:gzip,defalte

2、監控網頁的響應時間
curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "http://www.kklinux.com"

3. 監控站點可用性
curl -o /dev/null -s -w %{http_code} "http://www.kklinux.com"

4、以http1.0協議請求(默認爲http1.1) 
curl -0 .............. 
      1)讀取網頁 
  $ curl linuxidc.com">http://www.linuxidc.com 
  2)保存網頁 
  $ curl http://www.linuxidc.com > page.html $ curl -o page.html http://www.linuxidc.com 
  3)使用的proxy服務器及其端口:-x 
  $ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com 
  4)使用cookie來記錄session信息 
  $ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com 
option: -D 是把http的response裏面的cookie信息存到一個特別的文件中去,這樣,當頁面被存到page.html的同時,cookie信息也被存到了cookie0001.txt裏面了 
    5)那麼,下一次訪問的時候,如何繼續使用上次留下的cookie信息呢? 
  使用option來把上次的cookie信息追加到http request裏面去:-b 
  $ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.linuxidc.com 

6)瀏覽器信息~~~~ 
隨意指定自己這次訪問所宣稱的自己的瀏覽器信息: -A
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.yahoo.com 
這樣,服務器端接到訪問的要求,會認爲你是一個運行在Windows 2000上的IE6.0,嘿嘿嘿,其實也許你用的是蘋果機呢! 
而"Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686"則可以告訴對方你是一臺PC上跑着的Linux,用的是Netscape 4.73,呵呵呵 

7)
另外一個服務器端常用的限制方法,就是檢查http訪問的referer。比如你先訪問首頁,再訪問裏面所指定的下載頁,這第二次訪問的referer地址就是第一次訪問成功後的頁面地 
址。這樣,服務器端只要發現對下載頁面某次訪問的referer地址不 是首頁的地址,就可以斷定那是個盜連了~~~~~ 
討厭討厭~~~我就是要盜連~~~~~!!
幸好curl給我們提供了設定referer的option: -e
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -e "mail.yahoo.com" -o page.html -D cookie0001.txt http://www.yahoo.com 
這樣,就可以騙對方的服務器,你是從mail.yahoo.com點擊某個鏈接過來的了,呵呵呵 

8)curl 下載文件 
剛纔講過了,下載頁面到一個文件裏,可以使用 -o ,下載文件也是一樣。
比如, curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
這裏教大家一個新的option: -O
大寫的O,這麼用: curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
這樣,就可以按照服務器上的文件名,自動存在本地了! 
再來一個更好用的。
如果screen1.JPG以外還有screen2.JPG、screen3.JPG、....、screen10.JPG需要下載,難不成還要讓我們寫一個script來完成這些操作?
不幹!
在curl裏面,這麼寫就可以了:
curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG 
呵呵呵,厲害吧?!~~~ 
9)
再來,我們繼續講解下載!
curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG 
這樣產生的下載,就是
~zzh/001.JPG
~zzh/002.JPG
...
~zzh/201.JPG
~nick/001.JPG
~nick/002.JPG
...
~nick/201.JPG 
夠方便的了吧?哈哈哈 
咦?高興得太早了。
由於zzh/nick下的文件名都是001,002...,201,下載下來的文件重名,後面的把前面的文件都給覆蓋掉了~~~ 
沒關係,我們還有更狠的!
curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG 
--這是.....自定義文件名的下載?
--對頭,呵呵! 
#1是變量,指的是{zzh,nick}這部分,第一次取值zzh,第二次取值nick
#2代表的變量,則是第二段可變部分---[001-201],取值從001逐一加到201
這樣,自定義出來下載下來的文件名,就變成了這樣:
原來: ~zzh/001.JPG ---> 下載後: 001-zzh.JPG
原來: ~nick/001.JPG ---> 下載後: 001-nick.JPG 
這樣一來,就不怕文件重名啦,呵呵 

9)
繼續講下載
我們平時在windows平臺上,flashget這樣的工具可以幫我們分塊並行下載,還可以斷線續傳。
curl在這些方面也不輸給誰,嘿嘿 
比如我們下載screen1.JPG中,突然掉線了,我們就可以這樣開始續傳
curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG 
當然,你不要拿個flashget下載了一半的文件來糊弄我~~~~別的下載軟件的半截文件可不一定能用哦~~~ 
分塊下載,我們使用這個option就可以了: -r
舉例說明
比如我們有一個http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 要下載(趙老師的電話朗誦 :D )
我們就可以用這樣的命令:
curl -r 0-10240 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
curl -r 10241-20480 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
curl -r 20481-40960 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
curl -r 40961- -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 
這樣就可以分塊下載啦。
不過你需要自己把這些破碎的文件合併起來
如果你用UNIX或蘋果,用 cat zhao.part* > zhao.mp3就可以
如果用的是Windows,用copy /b 來解決吧,呵呵 
上面講的都是http協議的下載,其實ftp也一樣可以用。
用法嘛,
curl -u name:passwd ftp://ip:port/path/file
或者大家熟悉的
curl ftp://name:passwd@ip:port/path/file 
  
10)上傳的option是 -T 
比如我們向ftp傳一個文件: curl -T localfile -u name:passwd ftp://upload_site:port/path/ 
當然,向http服務器上傳文件也可以
比如 curl -T localfile http://cgi2.tky.3web.ne.jp/~zzh/abc.cgi
注意,這時候,使用的協議是HTTP的PUT method 
剛纔說到PUT,嘿嘿,自然讓老服想起來了其他幾種methos還沒講呢!
GET和POST都不能忘哦。 
http提交一個表單,比較常用的是POST模式和GET模式 
GET模式什麼option都不用,只需要把變量寫在url裏面就可以了
比如:
curl http://www.yahoo.com/login.cgi?user=nickwolfe&password=12345 
而POST模式的option則是 -d 
比如,curl -d "user=nickwolfe&password=12345" http://www.yahoo.com/login.cgi

就相當於向這個站點發出一次登陸申請~~~~~ 
到底該用GET模式還是POST模式,要看對面服務器的程序設定。 
一點需要注意的是,POST模式下的文件上的文件上傳,比如





這樣一個HTTP表單,我們要用curl進行模擬,就該是這樣的語法:
curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi 
羅羅嗦嗦講了這麼多,其實curl還有很多很多技巧和用法
比如 https的時候使用本地證書,就可以這樣
curl -E localcert.pem https://remote_server 
再比如,你還可以用curl通過dict協議去查字典~~~~~
curl dict://dict.org/d:computer 

今天爲了檢查所有刺蝟主機上所有域名是否有備案.在使用wget不爽的情況下,找到了curl這個命令行流量器命令.發現其對post的調用還是蠻好的.特別有利於對提交信息及變 
更參數進行較驗.對於我想將幾十萬域名到miibeian.gov.cn進行驗證是否有備案信息非常有用.發現這篇文章很不錯,特爲轉貼. 
我的目標:
curl -d "cxfs=1&ym=xieyy.cn" http://www.miibeian.gov.cn/baxx_cx_servlet 
在出來的信息中進行過濾,提取備案號信息,並設置一個標識位.將域名,備案號及標識位入庫 

用curl命令,post提交帶空格的數據 
今天偶然遇到一個情況,我想用curl登入一個網頁,無意間發現要post的數據裏帶空格。比如用戶名爲"abcdef",密碼爲"abc def",其中有一個空格,按照我以前的方式提交: 
curl -D cookie -d "username=abcdef&password=abc def" http://login.xxx.com/提示登入失敗。 

於是查看curl手冊man curl。找到: 
d/--data (HTTP) Sends the speci?ed data in a POST request to the HTTP server, in a way that can emulate as if a user has ?lled in a HTML form and pressed the 
submit button. Note that the data is sent exactly as speci?ed with no extra processing (with all newlines cut off). The data is expected to be "url-encoded". 
This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded. Compare to -F/--form. If this option is used 
more than once on the same command line, the data pieces speci?ed will be merged together with a separating &-letter. Thus, using ’-d name=daniel -d 
skill=lousy’ would generate a post chunk that looks like ’name=daniel&skill=lousy’. 
於是改用: 
curl -D cookie -d "username=abcdef" -d "password=abc efg" http://login.xxx.com/這樣就能成功登入了。 


(責任編輯:飄飛的夜)

 

Curl是Linux下一個很強大的http命令行工具,其功能十分強大。

1) 二話不說,先從這裏開始吧!

$ curl http://www.linuxidc.com

回車之後,www.linuxidc.com 的html就稀里嘩啦地顯示在屏幕上了    ~

2) 嗯,要想把讀過來頁面存下來,是不是要這樣呢?

$ curl http://www.linuxidc.com > page.html

當然可以,但不用這麼麻煩的!

用curl的內置option就好,存下http的結果,用這個option: -o

$ curl -o page.html http://www.linuxidc.com

這樣,你就可以看到屏幕上出現一個下載頁面進度指示。等進展到100%,自然就 OK咯

3) 什麼什麼?!訪問不到?肯定是你的proxy沒有設定了。

使用curl的時候,用這個option可以指定http訪問所使用的proxy服務器及其端口: -x

$ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com

4) 訪問有些網站的時候比較討厭,他使用cookie來記錄session信息。

像IE/NN這樣的瀏覽器,當然可以輕易處理cookie信息,但我們的curl呢?.....

我們來學習這個option: -D <— 這個是把http的response裏面的cookie信息存到一個特別的文件中去

$ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com

這樣,當頁面被存到page.html的同時,cookie信息也被存到了cookie0001.txt裏面了

5)那麼,下一次訪問的時候,如何繼續使用上次留下的cookie信息呢?要知道,很多網站都是靠監視你的cookie信息,來判斷你是不是不按規矩訪問他們的網站的。

這次我們使用這個option來把上次的cookie信息追加到http request裏面去: -b

$ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.linuxidc.com

這樣,我們就可以幾乎模擬所有的IE操作,去訪問網頁了!

6)稍微等等    ~我好像忘記什麼了    ~

對了!是瀏覽器信息

有些討厭的網站總要我們使用某些特定的瀏覽器去訪問他們,有時候更過分的是,還要使用某些特定的版本    NND,哪裏有時間爲了它去找這些怪異的瀏覽器呢!?

好在curl給我們提供了一個有用的option,可以讓我們隨意指定自己這次訪問所宣稱的自己的瀏覽器信息: -A

$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com

這樣,服務器端接到訪問的要求,會認爲你是一個運行在Windows 2000上的 IE6.0,嘿嘿嘿,其實也許你用的是蘋果機呢!

而"Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686"則可以告訴對方你是一臺 PC上跑着的Linux,用的是Netscape 4.73,呵呵呵

7)另外一個服務器端常用的限制方法,就是檢查http訪問的referer。比如你先訪問首頁,再訪問裏面所指定的下載頁,這第二次訪問的 referer地址就是第一次訪問成功後的頁面地址。這樣,服務器端只要發現對下載頁面某次訪問的referer地址不是首頁的地址,就可以斷定那是個盜 連了    ~

討厭討厭 ~我就是要盜連    ~!!

幸好curl給我們提供了設定referer的option: -e

$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -e "mail.linuxidc.com" -o page.html -D cookie0001.txt http://www.linuxidc.com

這樣,就可以騙對方的服務器,你是從mail.linuxidc.com點擊某個鏈接過來的了,呵呵呵

8)寫着寫着發現漏掉什麼重要的東西了!——- 利用curl 下載文件

剛纔講過了,下載頁面到一個文件裏,可以使用 -o ,下載文件也是一樣。比如,

$ curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG

這裏教大家一個新的option: -O 大寫的O,這麼用:

$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG

這樣,就可以按照服務器上的文件名,自動存在本地了!

再來一個更好用的。

如果screen1.JPG以外還有screen2.JPG、screen3.JPG、....、screen10.JPG需要下載,難不成還要讓我們寫一個script來完成這些操作?

不幹!

在curl裏面,這麼寫就可以了:

$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG

呵呵呵,厲害吧?! ~

9)再來,我們繼續講解下載!

$ curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG

這樣產生的下載,就是

~zzh/001.JPG

~zzh/002.JPG

...

~zzh/201.JPG

~nick/001.JPG

~nick/002.JPG

...

~nick/201.JPG

夠方便的了吧?哈哈哈

咦?高興得太早了。

由於zzh/nick下的文件名都是001,002...,201,下載下來的文件重名,後面的把前面的文件都給覆蓋掉了 ~

沒關係,我們還有更狠的!

$ curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG

—這是.....自定義文件名的下載? —對頭,呵呵!

這樣,自定義出來下載下來的文件名,就變成了這樣:原來: ~zzh/001.JPG —-> 下載後: 001-zzh.JPG 原來: ~nick/001.JPG —-> 下載後: 001-nick.JPG

這樣一來,就不怕文件重名啦,呵呵


 對於windows用戶如果用Cygwin模擬unix環境的話,裏面沒有帶curl命令,要自己裝,所以建議用Gow來模擬,它已經自帶了curl工具,安裝後直接在cmd環境中用curl命令就可,因爲路徑已經自動給你配置好了。

    linux curl是一個利用URL規則在命令行下工作的文件傳輸工具。它支持文件的上傳和下載,所以是綜合傳輸工具,但按傳統,習慣稱url爲下載工具。

  一,curl命令參數,有好多我沒有用過,也不知道翻譯的對不對,如果有誤的地方,還請指正。

  -a/--append 上傳文件時,附加到目標文件

  -A/--user-agent   設置用戶代理髮送給服務器

  - anyauth   可以使用“任何”身份驗證方法

  -b/--cookie cookie字符串或文件讀取位置

  - basic 使用HTTP基本驗證

  -B/--use-ascii 使用ASCII /文本傳輸

  -c/--cookie-jar 操作結束後把cookie寫入到這個文件中

  -C/--continue-at   斷點續轉

  -d/--data    HTTP POST方式傳送數據

  --data-ascii   以ascii的方式post數據

  --data-binary 以二進制的方式post數據

  --negotiate     使用HTTP身份驗證

  --digest        使用數字身份驗證

  --disable-eprt  禁止使用EPRT或LPRT

  --disable-epsv  禁止使用EPSV

  -D/--dump-header 把header信息寫入到該文件中

  --egd-file 爲隨機數據(SSL)設置EGD socket路徑

  --tcp-nodelay   使用TCP_NODELAY選項

  -e/--referer 來源網址

  -E/--cert 客戶端證書文件和密碼 (SSL)

  --cert-type 證書文件類型 (DER/PEM/ENG) (SSL)

  --key      私鑰文件名 (SSL)

  --key-type 私鑰文件類型 (DER/PEM/ENG) (SSL)

  --pass    私鑰密碼 (SSL)

  --engine   加密引擎使用 (SSL). "--engine list" for list

  --cacert CA證書 (SSL)

  --capath CA目錄 (made using c_rehash) to verify peer against (SSL)

  --ciphers   SSL密碼

  --compressed    要求返回是壓縮的形勢 (using deflate or gzip)

  --connect-timeout 設置最大請求時間

  --create-dirs   建立本地目錄的目錄層次結構

  --crlf          上傳是把LF轉變成CRLF

  -f/--fail          連接失敗時不顯示http錯誤

  --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 模擬http表單提交數據

  -form-string 模擬http表單提交數據

  -g/--globoff 禁用網址序列和範圍使用{}和[]

  -G/--get 以get的方式來發送數據

  -h/--help 幫助

  -H/--header 自定義頭信息傳遞給服務器

  --ignore-content-length  忽略的HTTP頭信息的長度

  -i/--include 輸出時包括protocol頭信息

  -I/--head  只顯示文檔信息

  從文件中讀取-j/--junk-session-cookies忽略會話Cookie

  - 界面指定網絡接口/地址使用

  - krb4 <級別>啓用與指定的安全級別krb4

  -j/--junk-session-cookies 讀取文件進忽略session cookie

  --interface 使用指定網絡接口/地址

  --krb4   使用指定安全級別的krb4

  -k/--insecure 允許不使用證書到SSL站點

  -K/--config  指定的配置文件讀取

  -l/--list-only 列出ftp目錄下的文件名稱

  --limit-rate 設置傳輸速度

  --local-port 強制使用本地端口號

  -m/--max-time 設置最大傳輸時間

  --max-redirs 設置最大讀取的目錄數

  --max-filesize 設置最大下載的文件總量

  -M/--manual  顯示全手動

  -n/--netrc 從netrc文件中讀取用戶名和密碼

  --netrc-optional 使用 .netrc 或者 URL來覆蓋-n

  --ntlm          使用 HTTP NTLM 身份驗證

  -N/--no-buffer 禁用緩衝輸出

  -o/--output 把輸出寫到該文件中

  -O/--remote-name 把輸出寫到該文件中,保留遠程文件的文件名

  -p/--proxytunnel   使用HTTP代理

  --proxy-anyauth 選擇任一代理身份驗證方法

  --proxy-basic   在代理上使用基本身份驗證

  --proxy-digest  在代理上使用數字身份驗證

  --proxy-ntlm    在代理上使用ntlm身份驗證

  -P/--ftp-port=string>=content>[:passwd]>=string>

使用端口地址,而不是使用PASV

  -Q/--quote 文件傳輸前,發送命令到服務器

  -r/--range 檢索來自HTTP/1.1或FTP服務器字節範圍

  --range-file 讀取(SSL)的隨機文件

  -R/--remote-time   在本地生成文件時,保留遠程文件時間

  --retry    傳輸出現問題時,重試的次數

  --retry-delay   傳輸出現問題時,設置重試間隔時間

  --retry-max-time 傳輸出現問題時,設置最大重試時間

  -s/--silent靜音模式。不輸出任何東西

  -S/--show-error   顯示錯誤

  --socks4 用socks4代理給定主機和端口

  --socks5 用socks5代理給定主機和端口

  --stderr 
-t/--telnet-option Telnet選項設置

  --trace   對指定文件進行debug

  --trace-ascii Like --跟蹤但沒有hex輸出

  --trace-time    跟蹤/詳細輸出時,添加時間戳

  -T/--upload-file 上傳文件

  --url      Spet URL to work with

  -u/--user 設置服務器的用戶和密碼

  -U/--proxy-user 設置代理用戶名和密碼

  -v/--verbose

  -V/--version 顯示版本信息

  -w/--write-out [format]什麼輸出完成後

  -x/--proxy 在給定的端口上使用HTTP代理

  -X/--request 指定什麼命令

  -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 用進度條顯示當前的傳送狀態

  -a/--append 上傳文件時,附加到目標文件

  -A/--user-agent   設置用戶代理髮送給服務器

  - anyauth   可以使用“任何”身份驗證方法

  -b/--cookie cookie字符串或文件讀取位置

  - basic 使用HTTP基本驗證

  -B/--use-ascii 使用ASCII /文本傳輸

  -c/--cookie-jar 操作結束後把cookie寫入到這個文件中

  -C/--continue-at   斷點續轉

  -d/--data    HTTP POST方式傳送數據

  --data-ascii   以ascii的方式post數據

  --data-binary 以二進制的方式post數據

  --negotiate     使用HTTP身份驗證

  --digest        使用數字身份驗證

  --disable-eprt  禁止使用EPRT或LPRT

  --disable-epsv  禁止使用EPSV

  -D/--dump-header 把header信息寫入到該文件中

  --egd-file 爲隨機數據(SSL)設置EGD socket路徑

  --tcp-nodelay   使用TCP_NODELAY選項

  -e/--referer 來源網址

  -E/--cert 客戶端證書文件和密碼 (SSL)

  --cert-type 證書文件類型 (DER/PEM/ENG) (SSL)

  --key      私鑰文件名 (SSL)

  --key-type 私鑰文件類型 (DER/PEM/ENG) (SSL)

  --pass    私鑰密碼 (SSL)

  --engine   加密引擎使用 (SSL). "--engine list" for list

  --cacert CA證書 (SSL)

  --capath CA目錄 (made using c_rehash) to verify peer against (SSL)

  --ciphers   SSL密碼

  --compressed    要求返回是壓縮的形勢 (using deflate or gzip)

  --connect-timeout 設置最大請求時間

  --create-dirs   建立本地目錄的目錄層次結構

  --crlf          上傳是把LF轉變成CRLF

  -f/--fail          連接失敗時不顯示http錯誤

  --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 模擬http表單提交數據

  -form-string 模擬http表單提交數據

  -g/--globoff 禁用網址序列和範圍使用{}和[]

  -G/--get 以get的方式來發送數據

  -h/--help 幫助

  -H/--header 自定義頭信息傳遞給服務器

  --ignore-content-length  忽略的HTTP頭信息的長度

  -i/--include 輸出時包括protocol頭信息

  -I/--head  只顯示文檔信息

  從文件中讀取-j/--junk-session-cookies忽略會話Cookie

  - 界面指定網絡接口/地址使用

  - krb4 <級別>啓用與指定的安全級別krb4

  -j/--junk-session-cookies 讀取文件進忽略session cookie

  --interface 使用指定網絡接口/地址

  --krb4   使用指定安全級別的krb4

  -k/--insecure 允許不使用證書到SSL站點

  -K/--config  指定的配置文件讀取

  -l/--list-only 列出ftp目錄下的文件名稱

  --limit-rate 設置傳輸速度

  --local-port 強制使用本地端口號

  -m/--max-time 設置最大傳輸時間

  --max-redirs 設置最大讀取的目錄數

  --max-filesize 設置最大下載的文件總量
-M/--manual  顯示全手動

  -n/--netrc 從netrc文件中讀取用戶名和密碼

  --netrc-optional 使用 .netrc 或者 URL來覆蓋-n

  --ntlm          使用 HTTP NTLM 身份驗證

  -N/--no-buffer 禁用緩衝輸出

  -o/--output 把輸出寫到該文件中

  -O/--remote-name 把輸出寫到該文件中,保留遠程文件的文件名

  -p/--proxytunnel   使用HTTP代理

  --proxy-anyauth 選擇任一代理身份驗證方法

  --proxy-basic   在代理上使用基本身份驗證

  --proxy-digest  在代理上使用數字身份驗證

  --proxy-ntlm    在代理上使用ntlm身份驗證

  -P/--ftp-port
使用端口地址,而不是使用PASV

  -Q/--quote 文件傳輸前,發送命令到服務器

  -r/--range 檢索來自HTTP/1.1或FTP服務器字節範圍

  --range-file 讀取(SSL)的隨機文件

  -R/--remote-time   在本地生成文件時,保留遠程文件時間

  --retry    傳輸出現問題時,重試的次數

  --retry-delay   傳輸出現問題時,設置重試間隔時間

  --retry-max-time 傳輸出現問題時,設置最大重試時間

  -s/--silent靜音模式。不輸出任何東西

  -S/--show-error   顯示錯誤

  --socks4 用socks4代理給定主機和端口

  --socks5 用socks5代理給定主機和端口

  --stderr 

  -t/--telnet-option Telnet選項設置

  --trace   對指定文件進行debug

  --trace-ascii Like --跟蹤但沒有hex輸出

  --trace-time    跟蹤/詳細輸出時,添加時間戳

  -T/--upload-file 上傳文件

  --url      Spet URL to work with

  -u/--user 設置服務器的用戶和密碼

  -U/--proxy-user 設置代理用戶名和密碼

  -v/--verbose

  -V/--version 顯示版本信息

  -w/--write-out [format]什麼輸出完成後

  -x/--proxy 在給定的端口上使用HTTP代理

  -X/--request 指定什麼命令

  -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 用進度條顯示當前的傳送狀態

  二,常用curl實例

  1,抓取頁面內容到一個文件中

  [root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com

  [root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com

  2,用-O(大寫的),後面的url要具體到某個文件,不然抓不下來。我們還可以用正則來抓取東西

  [root@krlcgcms01 mytest]# curl -O

  [root@krlcgcms01 mytest]# curl -O

  3,模擬表單信息,模擬登錄,保存cookie信息

  [root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

  [root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

  4,模擬表單信息,模擬登錄,保存頭信息

  [root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

  [root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

  -c(小寫)產生的cookie和-D裏面的cookie是不一樣的。

  5,使用cookie文件

  [root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin

  [root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin

  6,斷點續傳,-C(大寫的)

  [root@krlcgcms01 mytest]# curl -C -O

  7,傳送數據,最好用登錄頁面測試,因爲你傳值過去後,curl回抓數據,你可以看到你傳值有沒有成功

  [root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php

  [root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php

  8,顯示抓取錯誤,下面這個例子,很清楚的表明了。

  [root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf

  curl: (22) The requested URL returned error: 404

  [root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf

  

  。。。。。。。。。。。。

  [root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf

  curl: (22) The requested URL returned error: 404

  [root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf

  

  。。。。。。。。。。。。

  9,僞造來源地址,有的網站會判斷,請求來源地址。

  [root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php

  [root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php

  10,當我們經常用curl去搞人家東西的時候,人家會把你的IP給屏蔽掉的,這個時候,我們可以用代理

  [root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com

  [root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com
11,比較大的東西,我們可以分段下載

  [root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0

  [root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0

  [root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961

  [root@krlcgcms01 mytest]# ls |grep part | xargs du -sh

  4.0K    one.part1

  112K    three.part3

  4.0K    two.part2

  [root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0

  [root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0

  [root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961

  [root@krlcgcms01 mytest]# ls |grep part | xargs du -sh

  4.0K    one.part1

  112K    three.part3

  4.0K    two.part2

  用的時候,把他們cat一下就OK了,cat img.part* >img.jpg

  12,不會顯示下載進度信息

  [root@krlcgcms01 mytest]# curl -s -o aaa.jpg 

  13,顯示下載進度條

  [root@krlcgcms01 mytest]# curl -# -O 

  ######################################################################## 100.0%

  14,通過ftp下載文件

  [zhangy@BlackGhost ~]$ curl -u 用戶名:密碼 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136

  [zhangy@BlackGhost ~]$ curl -u 用戶名:密碼 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136

  或者用下面的方式

  [zhangy@BlackGhost ~]$ curl -O ftp://用戶名:密碼@ip:port/demo/curtain/bbstudy_files/style.css

  [zhangy@BlackGhost ~]$ curl -O ftp://用戶名:密碼@ip:port/demo/curtain/bbstudy_files/style.css

  15,通過ftp上傳

  [zhangy@BlackGhost ~]$ curl -T test.sql ftp://用戶名:密碼@ip:port/demo/curtain/bbstudy_files/

  [zhangy@BlackGhost ~]$ curl -T test.sql ftp://用戶名:密碼@ip:port/demo/curtain/bbstudy_files/
原文出處:http://linux.chinaitlab.com/command/830656.html[:port]>[:password]>[:password]>=val>[:port]>[:port]>

=string>=content>[:passwd]>=string>[:port]>[:password]>[:password]>=val>[:port]>[:port]>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章