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编写4K/8K大分辨率播放器(8K占用1%CPU)
一.前言 在经过多种内核的洗礼以后,逐渐对不同内核的不同音视频文件和视频流进行大量的对比测试,比如测试对各种格式的支持性,对各种网络流的支持程度,在同一个地址下占用的CPU/GPU资源比对,最终发现播 ...
- eclipse中汉字横着的问题解决
最近在eclipse中加上中午注释,出现那种汉字是横着的情况,解决方案如下: 方法一: 同一种字体有两种显示方式,比如Fixedsys Excelsior 3.01和@Fixedsys Excelsi ...
- wix tool 打包官方例子
wixtoolset 和VS 插件:https://wixtoolset.org/releases/ 教学:https://www.firegiant.com/wix/tutorial/getting ...
- 060_面向过程和面向对象区别 061_对象是什么_对象和数据管理 062_对象和类的关系_属性_成员变量_方法 063_一个典型类的写法和调用_类的UML图入门 064_内存分析详解_栈_堆_方法区_栈帧_程序执行的内存变化过程
060_面向过程和面向对象区别 061_对象是什么_对象和数据管理 062_对象和类的关系_属性_成员变量_方法 public class SxtStu {//定义了一个类,包含的成员变量,属性,方法 ...
- Educational Codeforces Round 172 (Rated for Div. 2)(C-D)
题目链接:Dashboard - Educational Codeforces Round 172 (Rated for Div. 2) - Codeforces C. Competitive Fis ...
- Ubuntu20.04配置CuckooSandbox环境
Ubuntu20.04配置CuckooSandbox环境 因为最近要做恶意软件分析,阅读论文发现动态分析的效果普遍比静态分析的效果要好一些,所以需要搭建一个动态分析的环境,查阅资料发现Cuckoo S ...
- moectf2023 web wp
gas!gas!gas! 直接跑脚本 import requests session=requests.Session() url="http://127.0.0.1:14447" ...
- 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
在本地部署DeepSeek大模型实现联网增强的AI应用 一.前言 在本地部署大语言模型(LLM)并赋予其联网能力,是当前AI应用开发的重要方向.本文将基于Microsoft Semantic Kern ...
- 10GSFP+系列光模块
10GSFP+双纤系列光模块包括SR.LRM.LR.ER.ZR模块,它们的接口类型都是LC双工,且符合IEEE802.3ae.SFF-8472和SFF-8431标准,以下是这几种光模块的具体详情. 1 ...
- Flink窗口
一.窗口介绍 1.1 Window:时间窗口 滚动窗口(Tumbling Window)将事件拆分成固定长度,窗口之间不重叠,窗口长度固定 例:每10s统计过去10s订单数据 滑动窗口(Sliding ...

