编写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编写安防视频监控系统34-onvif事件订阅

    一.前言 事件订阅是近期增加的功能,主要是因为遇到越来越多的一个应用场景,能够接收摄像机的报警事件,比如几乎所有的摄像机后面会增加报警输入输出接口,如果用户外接了报警输入,则当触发报警以后,对应的事件 ...

  2. C# .Net FrameWork3.5中异步HTTP请求时,由于安全协议的问题System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)方法抛出“基础连接已经关闭: 发送时发生错误”的解决办法

    现象描述: C# .Net FrameWork3.5中异步HTTP请求时,由于安全协议的问题System.Net.HttpWebRequest.EndGetResponse(IAsyncResult ...

  3. FormData接口调用

    JAVA调用方式 JAVA原生实现 package com.hisense.demo.utils; import java.io.*; import java.net.HttpURLConnectio ...

  4. JSON和XML的对比及应用领域

    JSON和XML的对比 对比表格 对比维度 JSON XML 可读性 通常更简洁,易于阅读和编写12 结构清晰,但可能因标签和属性而显得冗长1 解析难度 解析通常比XML简单,多数现代编程语言内置解析 ...

  5. Linux安全加固(一)

    1.Linux关键用户文件/etc/password文件 Root:x:0:0:root:/bin/bash ●用户名:代表用户账号的字符串.通常长度不超过8个字符,并且由大小写字母和/或数字组成.登 ...

  6. 第七章 LinkedBlockingQueue源码解析

    1.对于LinkedBlockingQueue需要掌握以下几点 创建 入队(添加元素) 出队(删除元素) 2.创建 Node节点内部类与LinkedBlockingQueue的一些属性 static ...

  7. biancheng-Spring MVC

    MVC设计模式简介 http://c.biancheng.net/spring_mvc/ MVC 设计模式一般指 MVC 框架,M(Model)指数据模型层,V(View)指视图层,C(Control ...

  8. 分布式多级缓存(本地缓存,redis缓存)

    结构包: 使用案例: 实现效果: 1.基本并发的本地缓存,基于分布式轻量级锁的redis缓存 2.热缓存(高频访问持续缓存)+快速过期(本地缓存2秒,redis缓存10秒) 3.方法级别缓存清理 (@ ...

  9. a链接被点击后,在跳转之前的处理事件

    在HTML中,<a> 标签通常用于创建链接,使用户能够点击并跳转到另一个页面或网址.如果你想在跳转前处理一些事件,你可以使用JavaScript来实现这一功能. 以下是一个简单的示例,展示 ...

  10. K8S故障处理:临时设置节点为不可调度(cordon与drain区别)

    在Kubernetes中,节点驱逐是一种管理和维护集群的重要操作,允许节点在维护.升级或者发生故障时从集群中移除,等到节点修复后,再重新承担pod调度功能. 1.K8s节点驱逐 节点驱逐是指将节点上运 ...