whistle抓包工具

背景

举个例子,比如我测试了某个需求,记录了一些mock数据。过了很长一段时间,我想要复现那个功能,用Charles一看一堆的记录,也不知道哪个是哪个。

但是whistle命令行的方式就很直观,易读性较好,通过注释的方式就可以启用和关闭

还有另外一个优势就是whistle可以不用安装证书抓需要证书验证的APP,但是这个需要运维同事支持了

安装启动

1、安装NOTE

2、安装Whistle

npm install -g whistle

3、启动/关闭Whistle

启动Whistle(不指定端口默认是8899)

w2 start -p 8899

关闭Whistle

w2 stop

5、安装证书

参考官方文档

常用功能

1、树结构

2、设备隔离

运用场景:当需要多台手机数据相互隔离时

1、浏览器打开多个whistle的页面

2、分别在不同页面network->底部查询条件框->输入i:客户端ip,多个查询条件用空格相隔

i:192.168.32.74

3、模拟弱网

设置延迟请求/响应的时间(单位:毫秒),reqDelay、resDelay

www.ifeng.com resDelay://3000

设置请求/响应速度(单位:kb/s,千比特/每秒),reqSpeed、resSpeed

www.ifeng.com resSpeed://3

4、修改请求参数

替换/新增返回参数(reqMerge)

无论是get请求还是post请求,如果是表单类型的数据均可使用以下方式,其逻辑是存在参数即替换,不存在则新增字段

https://api.test.com/v1/ironman/user_label/gender reqMerge://(gender=1&a=2)

如内容类型为json

https://api.test.com/v3/ad/show reqMerge://{test_resmerge.json}

替换整个请求内容(reqBody)

只有post请求才存在替换Body的说法,这个方法目前试了只能通过读取values或者是本地文件的方式

www.ifeng.com method://post reqBody://{test-reqBody.json}

字符串替换(reqReplace)

利用正则或字符串来匹配替换响应文本内容(响应的content-type必须文本类型:html、json、xml、text等)

举个例子,假设有{“code”:200,"message":"success"},使用reqMerge方法是resMerge://code=500,结果为{“code”:500,"message":"success"}。如果是使用reqReplace方法是resPlace://code=500,结果为{“500”:200,"message":"success"}
例子1:字符串匹配,多个值用&连接

https://api.test.com/v1/ironman/user_label/gender reqReplace://"code":200="code1":500&message=message1

例子2:正则匹配,多个值换行连接

https://api.test.com/v1/ironman/user_label/gender reqReplace://{test2}

{test2}:

/"code":[0-9]+/: "code":400

message: message1

5、修改返回参数

替换/新增返回参数(resMerge)

替换/新增响应类型为application/json或text/javascript的响应内容,其功能是通过resMerge://jsonData指定的JSON对象覆盖响应内容里面的JSON对象,其逻辑是存在参数即替换,不存在则新增字段

例子1:该方式可以直接修改json的属性,并且可以增加属性

https://api.test.com/v1/ironman/user_label/gender resMerge://(code=500&message=成功)

例子2:但上述的方法有两个个问题,一个问题是数字也会变成字符串,另一个问题是json里边的多节点的参数不知道能不能定位到,因此可通过读取本地文件或者valuses的方式进行读取

https://api.test.com/v1/ironman/user_label/gender resMerge://{test_resmerge.json}

替换整个响应内容(resBody)

这个方法目前试了只能通过读取values或者是本地文件的方式

https://api.test.com/v1/ironman/user_label/gender resBody://{test_resmerge.json}

字符串替换(resReplace)

利用正则或字符串来匹配替换响应文本内容(响应的content-type必须文本类型:html、json、xml、text等)。

举个例子,假设有{“code”:200,"message":"success"},使用resMerge方法是resMerge://code=500,结果为{“code”:500,"message":"success"}。如果是使用resReplace方法是resPlace://code=500,结果为{“500”:200,"message":"success"}

例子1:字符串匹配,多个值用&连接

https://api.test.com/v1/ironman/user_label/gender resReplace://"code":200="code1":500&message=message1

例子2:正则匹配,多个值换行连接

https://api.test.com/v1/ironman/user_label/gender resReplace://{test2}

{test2}:

/"code":[0-9]+/: "code":400

message: message1

6、接口测试

可以通过compose功能快速进行接口测试

network中选择接口->右键->点击Actions→点击compose->填写内容→点击发送

7、快速生成mock数据

8、模拟网络请求中断

3秒后中断请求

url  enable://abort resDelay://3000

9、修改接口状态码

如果接口还没开发完成,请求接口返回的状态码应为非200。这个时候即使你mock了数据,对应客户端也拿不到相关的数据。因此需要修改一下接口状态码的返回

* replaceStatus://200

 10、模拟IP归属地

为了测试不同地域访问接口的场景

* reqHeaders://(X-Forwarded-For=14.23.53.59)  #模拟广州ip

 11、代理转发

当测试环境没有数据而想要获得真实的数据时,可以尝试通过访问测试环境地址时转发到线上环境地址解决。

url_A url_B

 亦或者是可通过保持参数不变,仅修改域名的方式实现

www.qq.com/test host://ke.qq.com 

 常见问题查找:Issues · avwo/help · GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值