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

最后,感谢您的使用。

wincurl:一款基于HTTP协议的轻量级web资源抓取和上传工具的更多相关文章

  1. Reactjs-generator-cli 一款基于Ink构建用于快速搭建React应用的CLI scaffolding工具

    Reactjs-generator-cli 一款基于Ink构建用于快速搭建React应用的CLI scaffolding工具 A simple CLI for scaffolding React.js ...

  2. 转:基于HTTP协议的轻量级开源简单队列服务:HTTPSQS

    [文章作者:张宴 本文版本:v1.7.1 最后修改:2011.11.04 转载请注明原文链接:http://blog.zyan.cc/httpsqs/] HTTPSQS(HTTP Simple Que ...

  3. 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS[转]

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...

  4. 基于 electron 实现简单易用的抓包、mock 工具

    背景 经常我们要去看一些页面所发出的请求时,经常会用到 Charles 做为抓包工具来进行接口抓取,但一方面市面是很多抓包工具都是收费或者无法二次开发的.当前我们团队大多数用的也都是 Charles, ...

  5. [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)

    转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...

  6. 使用 某款基于Socks5协议的代理软件 一段时间后 被封锁掉IP的一些技术思考

    由于关键词比较敏感为了不被删除帖子所以文中某软件(上图所示软件)不用全称表示. 去年9月末在 在某国外网站 上弄了一个vpn,在上面安装了某软件,使用起来还是蛮不错的,平时查查英文论文,看看美剧还是比 ...

  7. 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS 笔记

    队列服务就是为了提高相应速度,把耗时或者不需要即时处理的流程放到异步处理过程中,HTTPSQS就是这样一个服务. 更详细的可以参考 http://blog.s135.com/httpsqs/,这里记录 ...

  8. 【原创】基于UDP广播的局域网Web Window Service日志跟踪小工具

           一直感觉Web开发或者windows服务的日志跟踪调试不是很方便          特别是在生产环境服务器上面          目前一般的解决方案是通过各种日志工具把错误信息和调试信息 ...

  9. robots.txt协议如何设置禁止搜索引擎抓取?

    什么情况下要设置禁止搜索引擎抓取自己的网站呢? 公司内部测试的网站,或者内部网,或者后台登录的页面,肯定不希望被外面的人搜索到,所以要禁止搜索引擎抓取.还有在我们的网站还未正式上线之前,我们需要做大量 ...

  10. 基于XMPP协议的手机多方多端即时通讯方案

    一.开发背景 1.国际背景 随着Internet技术的高速发展,即时通信已经成为一种广泛使用的通信方式.1996年Mirabilis公司推出了世界上第一个即时通信系统ICQ,不到10年间,即时通信(I ...

随机推荐

  1. Qt编写地图综合应用39-覆盖物圆形

    一.前言 圆形的应用场景和多边形.矩形基本一致,支持的属性也是一致,比如可以设置线条的颜色.线条的粗细.线条透明度等.也是用来框起一块区域,然后根据坐标点集合,找到该区域内的标注点集合,比如指定某个县 ...

  2. Qt编写的项目作品21-网络请求客户端/服务器

    一.实现原理 http请求就是tcp通信,所以第一步实例化QTcpServer类监听端口,并绑定newConnection信号槽. 一旦有新的连接,交给专门的解包类处理,将对应的数据解包,http请求 ...

  3. Qt编写的项目作品13-机房安全作业预警系统

    一.功能特点 显示维修间所有图像: 门外1号红外,门内2号红外: 1号先报警,紧接2号报警,人员进入计时: 图标显示:人员图标和报警等级图标,人员进入了,人员图标闪烁,等级图标对应不同时间: 功能要求 ...

  4. Qt编写地图综合应用23-标注点交互

    一.前言 地图项目应用中,标注点的交互使用频率非常高,这应该是最常用的场景,比如从数据库中读取出来设备的信息包括经纬度坐标,然后需要在地图上显示对应的设备,这就需要用addMarker函数来动态添加标 ...

  5. [转]C#的二进制文件操作及关于Encoding类与汉字编码转换的问题

    1.数值应保存在二进制文件 首先列举文本.二进制文件的操作(读写)方法: 方式1: //文本文件操作:创建/读取/拷贝/删除 using System; using System.IO; class ...

  6. 即时通讯技术文集(第23期):IM安全相关文章(Part12) [共15篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第23 期. [- 1 -] 理论联系实际:一套典型的IM通信协议设计详解(含安全层设计) [链 ...

  7. 【饮食与健康】【AIGC创作】表观生理年龄逆转指北

    一.引言 我们都知道,岁月不饶人,但是谁又不想在岁月的长河中留下青春的容颜呢?在这个人人都追求健康和美丽的时代,我们的生活节奏却愈发紧张,高压的工作和不规律的作息让我们的身体时刻处于亚健康状态.这时候 ...

  8. Android增加USB Camera摄像头驱动支持

    一般情况下kernel需要添加以下宏 ================================= CONFIG_VIDEO_DEV=yCONFIG_VIDEOBUF2_CORE=yCONFIG ...

  9. vue基础4

    Q:1.动画的使用方法以及动画库的使用方式 2.vue中的指令有哪些? 3.vue中生命周期钩子函数有哪些?分别代表什么含义? 4.filter的语法是什么? 5.computed的特点是什么? 6. ...

  10. Springboot集成-ClickHouse

    1.clickhouse应⽤场景 1.绝大多数请求都是用于读访问的 2.数据需要以大批次(大于1000行)进行更新,而不是单行更新:或者根本没有更新操作 3.数据只是添加到数据库,没有必要修改 4.读 ...