歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Unix下Curl的使用方法及常用功能記錄分享

Unix下Curl的使用方法及常用功能記錄分享

日期:2017/2/28 15:42:19   编辑:Linux教程

curl是利用URL語法在命令行方式下工作的文件傳輸工具。鑒於curl在Linux及Unix命令符下的廣泛使用,所以想和大家分享一下如何使用這個具有傳奇性的好工具。

它支持很多協議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。 當然curl同樣支持HTTPS認證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認證,HTTP上傳, 代理服務器, cookies, 用戶名/密碼認證, 下載文件斷點續傳,上載文件斷點續傳,,http代理服務器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務器,,通過http代理服務器上傳文件到FTP服務器等等,功能十分強大。

到此大家可能會問我到底我們使用它可以干什麼呢?我想告訴大家的是在字符界面下它的用處就顯示出來了,比如模擬用戶訪問、下載、登陸web系統、使用該函數自動化檢測你的服務是否正常、繞過服務器盜鏈設置下載想要得數據、自動上傳或下載你想要得數據到你想存儲的位置等等。

現在我們大家一起來看看curl工具強大的功能吧!

一、http協議下的使用方法

一、訪問某站點驗證該站點是否提供正常的服務當然如果非80端口你在後端還要加上相應端口哦。
1)curl http://www.linuxidc.com

服務正常情況下返回1否則返回0
2)要想把讀過來頁面存下來可以這樣做
curl http://www.linuxidc.com > page.html

我們也可以用curl的內置option選項,存下http的結果,用這個option: -o
curl -o page.html http://www.linuxidc.com
這樣,你就可以看到屏幕上出現一個下載頁面進度指示。等進展到100%,自然就OK啦。
3)使用curl的時候,用這個option可以指定http訪問所使用的proxy服務器及其端口: -x
curl -x 123.45.67.8Array:1080 -o page.html http://www.linuxidc.com
4)訪問有些網站的時候比較討厭,在設計時他們使用cookie來記錄session信息。
像IE這樣的浏覽器可以輕易處理cookie信息,但我們的curl呢?我們來學習這個option: -D這個是把http的response裡面的cookie信息存到一個特別的文件中去.
curl -D cookieme.txt http://www.linuxidc.com
5)那麼,下一次訪問的時候,如何繼續使用上次留下的cookie信息呢?要知道,很多網站都是靠監視你的cookie信息,來判斷你是不是不按規矩訪問他們的網站的。這次我們使用這個option來把上次的cookie信息追加到http request裡面去: -b
curl -D cookie0002.txt -b cookieme.txt http://www.linuxidc.com這樣,我們就可以幾乎模擬所有的IE操作,去訪問網頁了!
6)有些網站總要我們使用某些特定的浏覽器去訪問他們,有時候更過分的是,還要使用某些特定的版本,怎麼辦呢?好在curl給我們提供了一個有用的option,可以讓我們隨意指定自己這次訪問所宣稱的自己的浏覽器信息: 那就是-A選項的功能
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.8Array:1080 -o page.html -D cookieme.txt http://www.linuxidc.com
7)欺騙服務器的安全設置盜取相關資源
curl給我們提供了設定referer的option: -e
curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.8Array:1080 -e "mail.linuxidc.com" -o page.html -D cookieme.txt http://www.linuxidc.com
這樣,就可以騙對方的服務器,你是從mail.linuxidc.com點擊某個鏈接過來的了,呵呵呵
8)利用curl 下載文件
剛才講過了,下載頁面到一個文件裡,可以使用 -o ,下載文件也是一樣。
比如, curl -o 1.jpg http://www.linuxidc.com/xx/c1.JPG
也可以用大寫的O,這麼用: curl -o 1.jpg http://www.linuxidc.com/xx/c1.JPG
這樣,就可以按照服務器上的文件名,自動存在本地了!
再來一個更好用的如果screen1.JPG以外還有screen2.JPG、screen3.JPG、....、screen10.JPG需要下載,難不成還要讓我們寫一個script來完成這些操作?
在curl裡面,這麼寫就可以了:
curl -O curl -o 1.jpg http://www.linuxidc.com/xx/c[1-10].JPG
由於zzh/nick下的文件名都是001,002...,201,下載下來的文件重名,後面的把前面的文件都給覆蓋掉了。沒關系,我們可以使用如下命令規避
curl -o #2_#1.jpg http://www.linuxidc.com/xx//[001-201].JPG
這是自定義文件名的下載。
#1是變量,指的是這部分,第一次取值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 curl -o 1.jpg http://www.linuxidc.com/xx/c1.JPG
二、上面講的都是http協議的下載,下面講一下ftp用法。
1)用法如下所示
curl -u name:passwd ftp://ip:port/path/file
或者大家熟悉的
curl ftp://name:passwd@ip:port/path/file
2)上傳的用法
上傳的option是 -T
比如我們向ftp傳一個文件: curl -T localfile -u name:passwd ftp://uploadsite:port/path/
當然,向http服務器上傳文件也可以
比如 curl -T localfile http://www.linuxidc.com/xx/1.jpg

三、GET和POST用法
1)http提交一個表單,比較常用的是POST模式和GET模式

GET模式什麼option都不用,只需要把變量寫在url裡面就可以了
比如:curl http://www.linuxidc.com/login.cgi?user=*****&password=****
而POST模式的option則是 -d
比如,curl -d "user=nickwolfe&password=12345" http://www.linuxidc.com/login.cgi
就相當於向這個站點發出一次登陸申請
四、curl還有很多技巧和用法
比如 https的時候使用本地證書,就可以這樣
curl -E localcert.pem https://look.cn.*,大家不需要記住這些參數在今後需要使用的時候man curl 一下就好了。

Copyright © Linux教程網 All Rights Reserved