首页 > 技术文章 > wincurl:一款基于HTTP协议的轻量级web资源抓取和上传工具

softlee 2022-03-04 15:46 原文

编写web程序经常要进行接口调测,通常我们会使用curl或者postman等工具,通过这些工具可以方便的发送GET或POST请求来验证接口的正确与否。
对于复杂的接口业务,我们可以通过这些工具构造post data、query string、以及request header来完成这些接口的验证,从而大大提升我们的工作效率。
有时我们也需要抓取和分析web服务器返回的原始数据,比如按照chunked(Transfer-Encoding)方式分块传输的数据,或者
Content-Encoding为gzip的数据,或者是两者结合的chunked+gzip数据
。因此我在工作之余编写一个在windows平台下基于命令行的高仿curl工具。

【下载地址】

wincurlhttp://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数据中的&或文件路径中的空格。

最后,感谢您的使用。

推荐阅读