关于抓包,那是测试人员必备技能之一了,通常我们会通过一些抓包工具来辅助我们测试、定位bug。

我最早接触并使用的就是 fiddler ,不过目前最新版本已经要开始付费了,以前很老的那版我也不爱用了,这可咋整?

还好找到了另一款开源抓包神器whistle,目前 GitHub 上 1W+ 的 star,不可谓不强。不敢独自享用,赶紧拿来分享。

一、whistle 简介

whistle(读音[ˈwɪsəl],拼音[wēisǒu]),是基于Node实现的跨平台web调试代理工具。主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用。

不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式。

目前我主要使用它来抓包手机APP,可以查看接口请求,以及做一些接口响应的替换等。

二、安装

1. 安装 node

whistle基于node,所以要先安装node环境。直接进入node官网,安装最新版即可(我的是win10系统)。
https://nodejs.org/

安装成功后,在cmd窗口执行node -v就可以看到安装好的node版本。

2. 安装 whistle

有了node环境,就可以直接使用npm来安装whistle

npm install -g whistle

因为npm默认镜像是在国外,这里推荐大家使用taobao的镜像安装:

npm install whistle -g --registry=https://registry.npm.taobao.org

等待安装完成即可。接着可以执行w2 help,就可以看到whistle的帮助信息。

3. 安装根证书

点击工具栏中的 https ,再点击图片就可以下载证书了。

根据图示进行证书安装即可。

三、使用

1. 启动

执行命令w2 start即可启动。

默认的端口是8899,我们也可以加上-p指定端口来启动。

启动完成,就可以通过控制台输出的地址打开web界面了,就是文首图示里的界面。

总体来说界面还是很友好的,有过抓包工具使用的童鞋基本上可以很快上手。

在真正使用之前,别忘记打开对应的代理,比如我现在抓电脑浏览器里网页的请求,就要打开电脑的代理设置。

可能会存在8899端口访问不了的情况,可以去检查下防火墙设置,添加个白名单或者关闭防火墙(刚踩完的坑o(╥﹏╥)o)。

2. 停止

执行命令w2 stop

3. 重启

执行命令w2 restart

4. 查看 whistle 状态

执行命令w2 status可以查看 whistle 实例的状态。

三、手机抓包

1. 配置代理

手机端配置代理,需要与 whistle 端处于一个WiFi下,对WiFi进行对应的配置即可。

2. 安装证书

手机可以扫码安装,或者直接浏览器输入rootca.pro即可以下载证书。iOS安装根证书需要到连接远程服务器进行验证,需要暂时把Https拦截功能关掉。

ios安装完证书后记得要打开证书信任设置,路径:设置-通用-关于本机-证书信任设置

四、替换响应

这里提一下替换响应的操作。

有时候我需要模拟接口的异常返回,来测试下APP端上出现的提示是否足够友好,那么我就可以把接口的响应内容替换成我的目标错误码即可。

在 whistle 中操作非常简单,通过简单的配置即可实现。首先在 rules 中配置一个规则,这里有一个默认的规则,我直接在这里配置,当然你也可以新建规则。

前面的url就是我要替换的目标地址,后面的file://{vcode_resp_500}就是我要替换上去的内容,这里的vcode_resp_500是我的文件名。

在 values 中,我新建了一个文件名字叫vcode_resp_500,里面贴上了我要的返回内容就行了。

五、结语

这里只是 whistle 的一个简单分享,具体更多的内容体验操作大家有兴趣可以学习下官方文档:http://wproxy.org/whistle/webui/

也欢迎使用的小伙伴互相交流。