whistle工具常用功能

whistle常见使用场景

1.捕获网络数据包

在浏览器或者手机端按照上一篇文件进行配置并下载好证书(whistle 抓包工具的安装与使用),然后进行网络请求相关操作,在PC端whistle配置页面中可以看到对应的请求如下图:
在这里插入图片描述

2.过滤接口

在这里插入图片描述

匹配公式:h:(请求响应头)、s:(响应状态码)、i:(ClientIP 及 ServerIP)、m:(请求方法)、b:(请求响应内容),其它表示匹配 url(以上匹配都不区分大小写);并且支持取反操作,在关键词前加上!,表示会保留不匹配的请求
在这里插入图片描述
在这里插入图片描述
Network Columns:主要用于设置 Network 表头,或者拖拽重排等
在这里插入图片描述

3.接口重发

一般我们抓到一个有问题的请求,如果要复现就需要保存请求参数和请求头用postman重新构造一次或者页面刷新,比较麻烦,现在可以直接在whistle对请求进行重试
选择指定接口,右键-选择Action–>Replay
在这里插入图片描述
然后就可以看到新增了一条请求

4.更改部分参数并重发

如果我们需要修改部分参数,然后再重发,步骤如下:
右键请求,然后选择 Action -> Compose
在这里插入图片描述
或者,直接把请求拖到右边的控制台
在这里插入图片描述
然后就能在右边控制台看到对应的请求信息,就可以对请求 进行各种编辑了,然后再发送
在这里插入图片描述

5.模拟接口返回值

Rules写法:
pattern(匹配模式) operatorURI(操作uri)#默认是将匹配模式写在左边,操作uri写在右边
当有请求经过whistle,whistle 将请求url与pattern匹配,如果匹配到就执行operatorURI对应的操作,转发或者修改请求内容

Rlues说明写法
pattern(匹配模式)whistle的匹配模式大体可以分成 域名、路径、正则、精确匹配、通配符匹配,其中 正则匹配、精确匹配、通配符匹配支持取非,即 !pattern,表示不匹配 pattern 关键字符;^(通配路径表示符)、$(精确匹配)、*(通配符)、!(取非)

域名匹配(不仅支持匹配某个域名,也可以限定端口号、协议)
举例:
www.test.com operatorURI #匹配域名www.test.com下的所有请求,包括http、https、ws、wss,tunnel
https://www.test.com operatorURI #匹配域名www.test.com下的所有https请求
www.test.com:8888 operatorURI #匹配域名www.test.com 8888端口下的所有请求
路径匹配(指定匹配某个路径,也可以限定端口号、协议(http、https、ws、wss)等等)
举例:
www.test.com/xxx operatorURI #匹配指定路径下的所有请求
http://www.test.com/xxx operatorURI #限定请求协议,只能匹配http请求
http://www.test.com:8080/xxx operatorURI #限定请求协议和端口号,只能匹配http协议和8080端口的请求
正则匹配(正则的语法及写法跟js的正则表达式一致,支持两种模式:/reg/、/reg/i 忽略大小写,支持子匹配)且可以通过正则的子匹配把请求url里面的部分字符串传给operatorURI,pattern和operatorURI位置可以调换
举例:
* operatorURI #匹配所有请求
/keyword/i operatorURI #匹配url里面包含摸个关键字的请求,且忽略大小写
精确匹配(与上面的路径匹配不同,路径匹配不仅匹配对应的路径,而且还会匹配该路径下面的子路径,而精确匹配只能指定的路径,只要在路径前面加 即 可 变 成 精 确 匹 配 ) , 类 似 即可变成精确匹配),类似 url operatorURI,pattern和operatorURI位置可以调换
举例:
$http://www.test.com operatorURI #只能匹配到http://www.test.com/ (/浏览器会自动转),http://www.test.com/xxx是无法匹配到的
通配符匹配:包含通配符匹配,通配域名匹配、通配路径匹配
匹配模式必须以 ^ 开头(如果需要限制结束位置可以用 $),* 为通配符,支持通过$0…9获取通配符匹配的字符串,其中$0表示整个请求url
举例:
以 ^ 开头
^www.example.com/test/*** referer://http://www.test.com/$1
限定结束位置
^www.example.com/test/***test$ referer://http://www.test.com/$1
如果请求url为 https://www.example.com/test/abc?123test,这第一个配置里的 $1 = abc?123&test,第二个配置里的 $1 = abc?123,而 https://www.example.com/test/abc?123test2 只能匹配第一个

operatorURI(操作uri)

这里介绍几个常用的
reqHeaders:修改请求头
举例:
www.ifeng.com reqHeaders://{test-reqHeaders.json}
resHeaders:修改响应头
举例:
www.ifeng.com resHeaders://{test-resHeaders.json}
reqBody:把指定的内容替换请求内容(GET等请求没有内容没有替换一说)
举例:
www.ifeng.com method://post reqBody://{test-reqBody.html}
resBody:把指定的内容替换响应内容(304等响应没有内容无法替换)
举例:
www.ifeng.com resBody://{test-resBody.html}
statusCode:设置响应状态码(状态码范围100~999),请求会直接根据设置的状态码返回
举例:
www.ifeng.com statusCode://500
更多操作参考官网:http://wproxy.org/whistle/rules/rule/replace.html


1、直接写在规则中
比如直接返回一个 json,懒得新建文件
举例:www.test.com/get_list resBody://({msg:"dddd"})
2.放在 whistle 左侧菜单的 Values 或者 本地文件
举例:
www.test.com/get_list resBody://{test.json} #test.json放在 whistle 左侧菜单的 Values
www.test.com/get_list resBody://C:\\Users\\Desktop\\test.json #test.json放在本地
3、内联在规则中
返回的内容有点多,但又不是很多多,不想新建文件和写在 value,那么就直接内联在规则集吧
www.test.com/get_list resBody://{test.json}

```test.json
{
msg:“1111”
}

我们给请求配置规则后,怎么确定它到底有没有匹配上
可以看 whisle 界面 左侧 Network 菜单点击你的请求,可以在右边的面板中看到请求匹配的规则(同时在请求列表中匹配到规则的会有特殊颜色标识)
如果匹配的规则没有成功,说明你的规则无效…
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值