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数据库应用1-数据导入导出csv
一.前言 在经历过大大小小十几个甚至几十个纯QtWidget项目后,涉及到数据库相关的项目,几乎都有一个需求,将少量的信息数据比如设备信息.防区信息等,导出到文件保存好,然后用户可以打开该表格进行编辑 ...
- Qt编写安防视频监控系统19-日志查询
一.前言 日志查询功能是基础功能,主要分两块,一个是本地日志查询,包括运行日志.报警日志.操作日志:一个是设备日志查询,就是通过SDK去拉去NVR设备的日志信息,包括系统操作.配置操作.报警操作.录像 ...
- 即时通讯技术文集(第35期):IM群聊技术合集(Part2) [共12篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第35 期. [- 1 -] 直播系统聊天技术(一):百万在线的美拍直播弹幕系统的实时推送技术 ...
- 从BIOS+MBR迁移到UEFI+GPT 并修复Ubuntu Grub2 UEFI引导
之前在虚拟机里使用了默认配置安装了Ubuntu16.04,由于需要扩充磁盘空间不得不将磁盘从MBR分区表转换到GPT分区表. 简单介绍一下思路:首先通过Windows下的DiskGenius软件备份U ...
- Python连接远程设备
import paramiko def content_ssh(): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(parami ...
- 控制反转(Inversion of Control,IoC)
依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IoC)是软件工程中两个相关但不同的概念.它们都旨在提高代码的模块化.可维护性和可测试性 ...
- 一个适用于 .NET 的开源整洁架构项目模板
前言 项目架构模式在软件开发中扮演着至关重要的角色,它们为开发者提供了一套组织和管理代码的指导原则,以提高软件的可维护性.可扩展性.可重用性和可测试性.今天大姚给大家分享一个适用于 .NET 的开源整 ...
- Golang-语言简介1
http://c.biancheng.net/golang/intro/ Go语言的特性 Go语言也称为 Golang,是由 Google 公司开发的一种静态强类型.编译型.并发型.并具有垃圾回收功能 ...
- jQuery详解
目录 jQueryJS中创建对象jQuery选择器jQuery 操作 DOMjQuery 事件jQuery 动画JSON :Python工具 - pipPython工具 - VirtualEnvWEB ...
- C#/.NET/.NET Core技术前沿周刊 | 第 22 期(2025年1.13-1.19)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

