wincurl:一款基于HTTP协议的轻量级web资源抓取和上传工具
编写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数据中的&或文件路径中的空格。
最后,感谢您的使用。
wincurl:一款基于HTTP协议的轻量级web资源抓取和上传工具的更多相关文章
- Reactjs-generator-cli 一款基于Ink构建用于快速搭建React应用的CLI scaffolding工具
Reactjs-generator-cli 一款基于Ink构建用于快速搭建React应用的CLI scaffolding工具 A simple CLI for scaffolding React.js ...
- 转:基于HTTP协议的轻量级开源简单队列服务:HTTPSQS
[文章作者:张宴 本文版本:v1.7.1 最后修改:2011.11.04 转载请注明原文链接:http://blog.zyan.cc/httpsqs/] HTTPSQS(HTTP Simple Que ...
- 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS[转]
HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...
- 基于 electron 实现简单易用的抓包、mock 工具
背景 经常我们要去看一些页面所发出的请求时,经常会用到 Charles 做为抓包工具来进行接口抓取,但一方面市面是很多抓包工具都是收费或者无法二次开发的.当前我们团队大多数用的也都是 Charles, ...
- [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)
转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...
- 使用 某款基于Socks5协议的代理软件 一段时间后 被封锁掉IP的一些技术思考
由于关键词比较敏感为了不被删除帖子所以文中某软件(上图所示软件)不用全称表示. 去年9月末在 在某国外网站 上弄了一个vpn,在上面安装了某软件,使用起来还是蛮不错的,平时查查英文论文,看看美剧还是比 ...
- 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS 笔记
队列服务就是为了提高相应速度,把耗时或者不需要即时处理的流程放到异步处理过程中,HTTPSQS就是这样一个服务. 更详细的可以参考 http://blog.s135.com/httpsqs/,这里记录 ...
- 【原创】基于UDP广播的局域网Web Window Service日志跟踪小工具
一直感觉Web开发或者windows服务的日志跟踪调试不是很方便 特别是在生产环境服务器上面 目前一般的解决方案是通过各种日志工具把错误信息和调试信息 ...
- robots.txt协议如何设置禁止搜索引擎抓取?
什么情况下要设置禁止搜索引擎抓取自己的网站呢? 公司内部测试的网站,或者内部网,或者后台登录的页面,肯定不希望被外面的人搜索到,所以要禁止搜索引擎抓取.还有在我们的网站还未正式上线之前,我们需要做大量 ...
- 基于XMPP协议的手机多方多端即时通讯方案
一.开发背景 1.国际背景 随着Internet技术的高速发展,即时通信已经成为一种广泛使用的通信方式.1996年Mirabilis公司推出了世界上第一个即时通信系统ICQ,不到10年间,即时通信(I ...
随机推荐
- Qt编写地图综合应用39-覆盖物圆形
一.前言 圆形的应用场景和多边形.矩形基本一致,支持的属性也是一致,比如可以设置线条的颜色.线条的粗细.线条透明度等.也是用来框起一块区域,然后根据坐标点集合,找到该区域内的标注点集合,比如指定某个县 ...
- Qt编写的项目作品21-网络请求客户端/服务器
一.实现原理 http请求就是tcp通信,所以第一步实例化QTcpServer类监听端口,并绑定newConnection信号槽. 一旦有新的连接,交给专门的解包类处理,将对应的数据解包,http请求 ...
- Qt编写的项目作品13-机房安全作业预警系统
一.功能特点 显示维修间所有图像: 门外1号红外,门内2号红外: 1号先报警,紧接2号报警,人员进入计时: 图标显示:人员图标和报警等级图标,人员进入了,人员图标闪烁,等级图标对应不同时间: 功能要求 ...
- Qt编写地图综合应用23-标注点交互
一.前言 地图项目应用中,标注点的交互使用频率非常高,这应该是最常用的场景,比如从数据库中读取出来设备的信息包括经纬度坐标,然后需要在地图上显示对应的设备,这就需要用addMarker函数来动态添加标 ...
- [转]C#的二进制文件操作及关于Encoding类与汉字编码转换的问题
1.数值应保存在二进制文件 首先列举文本.二进制文件的操作(读写)方法: 方式1: //文本文件操作:创建/读取/拷贝/删除 using System; using System.IO; class ...
- 即时通讯技术文集(第23期):IM安全相关文章(Part12) [共15篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第23 期. [- 1 -] 理论联系实际:一套典型的IM通信协议设计详解(含安全层设计) [链 ...
- 【饮食与健康】【AIGC创作】表观生理年龄逆转指北
一.引言 我们都知道,岁月不饶人,但是谁又不想在岁月的长河中留下青春的容颜呢?在这个人人都追求健康和美丽的时代,我们的生活节奏却愈发紧张,高压的工作和不规律的作息让我们的身体时刻处于亚健康状态.这时候 ...
- Android增加USB Camera摄像头驱动支持
一般情况下kernel需要添加以下宏 ================================= CONFIG_VIDEO_DEV=yCONFIG_VIDEOBUF2_CORE=yCONFIG ...
- vue基础4
Q:1.动画的使用方法以及动画库的使用方式 2.vue中的指令有哪些? 3.vue中生命周期钩子函数有哪些?分别代表什么含义? 4.filter的语法是什么? 5.computed的特点是什么? 6. ...
- Springboot集成-ClickHouse
1.clickhouse应⽤场景 1.绝大多数请求都是用于读访问的 2.数据需要以大批次(大于1000行)进行更新,而不是单行更新:或者根本没有更新操作 3.数据只是添加到数据库,没有必要修改 4.读 ...

