调试 whistle 过滤抓包数据的几种方法

调试 whistle 过滤抓包数据的几种方法

whistle 提供了四种搜索及过滤抓包数据的方法,方便大家快速精确获取想要的抓包数据,分别为:

  1. 通过配置规则过滤抓包数据
  2. 通过Network界面Filter菜单过滤抓包数据
  3. 通过页面URL的hash参数过滤抓包数据
  4. 通过Network界面下方搜索框搜索抓包数据

规则过滤

whistle支持通过 pattern enable://hide [filters] 方式隐藏抓包数据,如:

pattern可以为域名、路径、通配符、正则等,详细内容参见:wproxy.org/whistle/pat…,并可以结合filter可再根据请求方法、请求头、请求内容、响应状态码、响应头进行二次过滤。

*.xiaohou.xueersi.com/ enable://hide

*.oss-cn-beijing.aliyuncs.com enable://hide excludeFilter:///^[^?]+\.js(\?|$)/i

上述配置效果如下,访问http://test.xiaohou.xueersi.com/,Network 上看不到test.xiaohou.xueersi.com/域的任何请求,访问的cdn的资源 *.oss-cn-beijing.aliyuncs.com域名也只能看到后缀为.js的请求。

pic

Network界面Filter菜单

这个方法之前章节有介绍过

Network界面上方 Filter 菜单可以配置界面过滤规则,界面从whistle获取的抓包数据先在此过滤后再决定是否显示到列表中。

pic

Filter菜单里面包含 ExcludeFilterIncludeFilter 两种过滤方式,

支持通过关键字(不区分大小写)或正则表达式匹配URL(pattern)、请求方法(m:pattern)、客户端IP(i:pattern)、请求头内容(h:pattern),请求头的host字段(H:pattern),多个条件用空格或换行符隔开:

urlPatten 
m:methodPattern 
i:clientIpPattern 
h:headersPattern 
b:bodyPattern 
H:reqHostPattern 如:

ExcludeFilter:

/\.js/i
h:x-test=hide
m:post

IncludeFilter:

.xiaohou.xueersi.com
.baidu.com

上述表示界面只显示URL包含 .xiaohou.xueersi.com、 或 .baidu.com(不区分大小写),且URL不能包含 .js、 请求头里面不能有 x-test=hide(可以在cookie里面种这么一个值,则请求不会显示)、请求方法不能为 post

Filter菜单配置的过滤规则是先将所有抓包数据请求到本地再进行过滤,且无法将过滤方式直接分享给他人,如果需要通过服务端过滤提升性能,可以用下面的请求参数过滤方式。

请求参数过滤

whistle 支持在抓包界面的URL设置过滤参数,后台会自动读取这些参数进行过滤,同样支持通过URL、客户端IP、请求头进行过滤:

http://local.whistlejs.com/#network?url=keyword&name=key0&value=keyword0&name1=key1&value=keyword1&...&name5=key5&value5=keyword5&ip=self,10.10.10.10

上述参数都是可选,其中 url 匹配请求URL,name, name1, …, name5 共可设置6个key,对应6个关键字,可分别匹配请求头6个字段的值(这6个字段可选,必须按顺序设置,不能跳过其中一个,请求头的值是模糊匹配的,如果想变成精确匹配加个参数 &mtype=exact即可),ip为精确匹配对应的客户端IP(self关键字表示匹配本机IP)。

eg. 在当前连接后面添加?url=xiaohou.xueersi.com,这时候访问 test.xiaohou.xueersi.com,可以看到下图所示。

pic

Network界面搜索框

上述几种过滤方法都是在抓包数据显示到Network之前做的过滤,主要用于精简Network的抓包数据,被过滤掉的数据无法再显示出来,除此之外,whistle提供了快速搜索方法,通过Network下方的搜索框可以根据URL、请求方法、客户端或服务端IP、响应状态码、请求头或响应头、请求内容或响应内容快速搜索想要的抓包数据。

pic

其中:

pattern:可以为关键字或正则表达式(/regexp/i),匹配请求URL
m:pattern:pattern可以为关键字或正则表达式(/regexp/i),匹配请求方法
i:pattern:pattern可以为关键字或正则表达式(/regexp/i),匹配客户端或服务端IP
s:code: code可以为关键字或正则表达式(/regexp/i),匹配响应状态码
b:pattern:pattern可以为关键字或正则表达式(/regexp/i),匹配请求或响应内容
h:pattern:pattern可以为关键字或正则表达式(/regexp/i),匹配请求或响应头(包括key和value)

总结

whistle提供了灵活多样的过滤抓包数据,用户可以根据不同的场景使用不同的过滤方式,一般常用Network下方搜索框快速搜索抓包数据即可;

配置规则用于永久过滤减少无用抓包数据的干扰(这种过滤方式对所有用户生效,且插件也将无法获取这部分抓包数据);

界面Filter和请求参数过滤方式只对当前页面生效,可用于个性化过滤抓包数据。

参考链接:https://juejin.im/post/5ea7a1e36fb9a04329765056

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦