編寫web程序經常要進行接口調測,通常我們會使用curl或者postman等工具,通過這些工具可以方便的發送GET或POST請求來驗證接口的正確與否。
對於復雜的接口業務,我們可以通過這些工具構造post data、query string、以及request header來完成這些接口的驗證,從而大大提升我們的工作效率。
有時我們也需要抓取和分析web服務器返回的原始數據,比如按照chunked(Transfer-Encoding)方式分塊傳輸的數據,或者
Content-Encoding為gzip的數據,或者是兩者結合的chunked+gzip數據。因此我在工作之余編寫一個在windows平台下基於命令行的高仿curl工具。
【下載地址】
wincurl:http://softlee.cn/wincurl.zip
【wincurl特點】
1、小巧簡潔只有一個可執行文件;
2、支持SSL協議,內部集成openssl庫;
3、具有豐富且靈活的配置參數;
4、具備curl在HTTP協議上的大部分功能;
5、可輸出原始響應數據,比如chunked或壓縮數據(gzip、deflate);
【wincurl的使用】
wincurl是一個命令行工具,使用比較簡單,下面以www.163.com網站為例進行介紹。
1、抓取網頁
wincurl http://www.163.com
如果URL中沒有指定http或https,則默認是http協議。如果是https網站,則輸入:
wincurl https://www.163.com
或者
wincurl www.163.com -ssl
或者
wincurl -ssl www.163.com
2、下載網頁到指定文件中
wincurl https://www.163.com -o 163.html
此時,163網站的主頁會保存到163.html中,“-o”參數會指明下載的文件名稱,如果不是全路徑,則會默認下載到當前目錄。
或者更加簡潔的使用大寫“-O”,該參數不用指明文件名稱,使用“-O”時會使用url中的資源名稱作為文件名。
3、上傳文件
wincurl -u c:/1.jpg https://www.xxx.com/upload.do
這里假設upload.do接口支持上傳文件命令。
“-u”參數會指定本地上傳文件的路徑。
4、POST數據
wincurl http://www.xxx.com/command.do -d "user=name&pwd=123456"
“-d”參數會指定需要POST的數據。
如果POST數據很大,或者是二進制數據,可以將數據放入文件中並用“-file”參數來指定,如下:
wincurl http://www.xxx.com/command.do -d "c:/post.data" -file
此時,post數據在文件post.data中。
5、自定義請求頭
wincurl https://www.xxx.com/xxx.do -h "User-Agent: wincurl"
“-h”參數會添加指定的請求頭。
請求頭也可放入配置好的文件中,通過“-file”參數指定來添加,如下:
wincurl http://www.xxx.com/command.do -d "c:/head.txt" -file
此時,請求頭數據在head.txt文件中。
6、批量下載資源
如果URL資源的名稱有數字編號,可通過[]來指定下載的區間,如下:
wincurl http://softlee.cn:8888/batch/[1-5].jpg -O
此時會把web服務器上的1.jpg、2.jpg...5.jpg下載到當前目錄下。
“-p”參數可指定批量下載的保存路徑,如下:
wincurl http://softlee.cn:8888/batch/[1-5].jpg -O -p "c:/temp"
此時文件將下載到c盤的temp目錄下。
7、顯示下載或上傳進度
wincurl https://www.163.com -O -progress
“-progress”會顯示下載進度,只有“-o”、“-O”或“-u”存在時,該值有效。
因為此時HTTP響應數據是輸出到文件(或上傳到服務器)中,屏幕上看不到進度,如果是輸出到控制台,則無需顯示進度。
默認Web響應數據是輸出到控制台(沒有“-o”或“-O”時)。
8、按照指定步長在控制台顯示數據
wincurl https://www.163.com -step 1024
“-step”參數會指定響應數據每次顯示多少,缺省為1024字節,用戶按任意鍵后可繼續顯示。
9、輸出原始響應數據到文件中
wincurl https://www.163.com -O -origin
“-origin”參數會將web服務器返回的原始數據輸出到文件中,這些數據可能是chunked或被壓縮的,或者是chunked+壓縮的
10、輸出壓縮數據到文件中
wincurl https://www.163.com -O -compress
如果響應數據的Conent-Encoding是壓縮數據,通過“-compress”可將其輸出。
11、顯示幫助信息
如果wincurl命令不帶任何參數,則顯示幫助信息,或者使用參數“-help”或“-?”
wincurl -help
wincurl -?
wincurl配置參數分為兩大類,一類是帶值參數,比如-o,-d等,一類是不帶值參數比如-ssl、-O等,如下所示。
注意:如果命令行參數值中有空格或&,請使用雙引號將參數包起來使用,比如post數據中的&或文件路徑中的空格。
最后,感謝您的使用。