Linux命令CURL用法
Curl是一個命令行方式下傳輸數據的開源傳輸工具,支持多種協議包括:FTP,HTTP,HTTPS,IMAP,POP3,TELNET等。同樣支持HTTP POST方法,PUT方法,FTP上傳,cookie,用戶名/密碼認證,下載文件端點續傳等,功能十分強大。
1. 先來試試
curl http://www.baidu.com ,回車之後,HTML內容就顯示在屏幕上了。
2. 下載
curl –o baidu.html http://www.baidu.com ,執行後還可以看到下載進度提示,完成100%後會自動退出了,把網頁保存到baidu.html中了。
它還有一個大寫O的選項,是按照服務器上的文件名保存到本地,如果執行curl –O http://www.baidu.com ,是會報錯的,提示找不到文件名,如果換成curl –O http://baike.baidu.com/view/1326315.htm , 就自動保存文件為1326315.html。
Windows下像flashget這樣的工具還支持分塊以及斷點續傳,curl也毫不示弱。
-C或--continue-at:斷點續傳,用法如下:
curl -C http://www.example.com
-r或--range:分塊下載,用法:
curl -r 0-10240 -o "example.part1" http://www.example.com/example.zip &
curl -r 10241-20480 -o "example.part2"
http://www.example.com/example.zip
其中加&表示在後臺執行,需要按CTRL+C才能退出。
不過下載完後需要自己把這些破碎的文件合並起來
如果你用UNIX或蘋果,用 cat example.part* > example.zip就可以
如果用的是Windows,用copy /b example.part1+example.part2 example.zip來解決
3. 上傳
-T/--upload-file:往服務器上傳文件,用法:
curl -T "img[1-1000].png" ftp://example.com/upload/
或上傳多個文件
curl -T "{file1,file2}" http://www.example.com
4. POST方法
-d或--data參數:post請求,用法為curl -d “id=1&name=test” http://example.com/example.PHP ,
需把請求的參數和URL分開,同時可以使用curl -d “id=1” -d “name=test” http://example.com/example.php ,相當於提交了兩個參數。當提交的參數值中有特殊字符就需要先轉義。如空格時,就需要轉義成%20。
--data-urlencode參數:就可以自動轉義特殊字符,無需人工事先轉義。
-F或--form:將本地文件上傳到服務器,用法為:curl -F “filename=@/home/test/test.pic” http://example.com/example.php [email protected]
5. 設置referer
有時候我們如果直接請求某個URL不能成功,它需要判斷referer是否正確,那就可以通過-e或--referer參數模擬
curl --referer http://www.example.com http://www.example.com
6. 指定User Agent
-A/--user-agent:偽裝成指定的瀏覽器Chrome訪問,用法:
curl -A “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36” http://www.example.com
7. 偽造cookie
-b或--cookie: 有兩種用法,一是指定參數和值:curl --cookie "name=xxx" http://www.example.com ;二是從文件讀取:curl -b /cookie.txt http://www.example.com
8. 保存cookie
-c/--cookie-jar:curl命令執行後保存操作時生成的cookie到文件:
curl -c ./cookie.txt -d username=aaaa -d pwd=****** http://www.example.com
9. 定義輸出顯示內容
現在為止對它的崇拜已經是猶如滔滔江水連綿不絕了,慢!還有一個powerful的選項.
-w/--write-out: 可以定義輸出的內容,如常用的http碼,tcp連接時間,域名解析的時間,握手時間及第一時間響應時間等,非常強大。
用法如:
curl -o /dev/null -s -w %{http_code} "http://www.baidu.com" 打印出返回的http碼
curl -o /dev/null -s -w “time_total: %{time_total}\n" "http://www.baidu.com" 打印響應時間
如果你對curl還有更大的興趣,其他更多的功能請找無所不能的男人幫忙吧!
摘自:http://blog.csdn.net/zzzmmmkkk/article/details/38569057
Linux命令CURL用法