whistle抓包工具及调试技巧
往期文章我们已经讲过fiddler、charles以及wireshark等多种抓包工具,已经在工作中足够解决各种抓包问题了,但我今天还想再分享给大家一款抓包工具 whistle,因为它真的很优秀,本人在工作中也一直在用这个
为什么我会选择whistle,首先是fiddler不支持MacOS,其次Charles在M1芯片上会感觉明显的卡顿;除此之外是whistle更加轻量简单、开源免费!且满足前面几款抓包工具的所有功能,久而久之就一直在用这个了
whistle 是基于 Node.js 开发的跨平台抓包调试工具。支持 HTTP、HTTPS 请求的抓包分析,并具有插件化、灵活配置的特点。Whistle 通过代理的方式拦截请求,开发者可以方便地重定向、修改请求/响应内容,或进行接口 Mock 等操作
下载安装
由于whistle是基于NodeJS开发的,因此使用它有2种方式(推荐使用客户端):
- 安装NodeJS包,在终端使用命令行运行
npm install -g whistle
w2 start
2
3
更多运行命令脚本,点这里查看 whistle命令文档
安装后界面大概如下
面板介绍
可以看到整个界面还是比较简洁,整体包含:功能区、菜单栏、抓包记录、请求详情、抓包过滤等一些区域
抓包记录
当正在抓包时左上角的Record
会显示红色,此时whistle会将所有的请求抓取到中间面板列表
底部可以通过关键字、正则过滤自己想要的数据
规则
规则主要来拦截不同的请求,根据设置的规则命中目标请求后,根据选择响应命令返回,其中包含:延时、替换等多种形式功能
下面是创建的一个名叫App Test
的规则集,里面我们就使用了2个规则:
# 延时
/\.(png|jpg|webp|jpeg)/ resDelay://2000
# 匹配到 usword.cn 结尾
.*usword.cn resBody://{test}
2
3
4
5
什么意思呢?创建的每个规则都可以影响到请求,当规则后面打了✅就代表生效中;上方的test
表示一个规则值
,这个是用户创建的,下个章节我们讲
resDelay
、resBody
都是一些常用的响应关键字,这里简单列举2个,更多查看文档
上面的规则只要匹配到这些结尾的图片,就会延时2s中响应,大家可以试试
规则值
规则值主要就是提供给用户自定义响应内容的,用户可以创建多个规则值,然后在规则中使用规则值
上面我们定义规则值 test
的响应内容为 code: 200
,上面我们规则中拦截的是 usword.cn
的请求都返回test
规则值,此时刷新网页:
抓包详情面板
点击左侧任意一个抓包记录,右侧会显示详细的请求及响应内容,类似于Chrome Devtool面板那种
可以看出上面部分为请求体,下面部分为响应体
请求替换
请求替换或者说代理是很多抓包工具常有的功能,在上面我们介绍了 规则
和 规则值
后,大家应该也都知道怎么做了;主要是还有很多命令需要翻阅文档,这里就不再展开了
HTTPS
如果此时抓包HTTPS的请求,会发现响应体的内容都是乱码,也及时无法解密。至于为什么这里不做解释了,你可以查看我的往期文章「HTTP协议及安全防范」,关键就是由于没有证书,whistle没法成为目标服务器和本机系统的代理人,系统不会信任代理请求,因此需要将whistle内部的证书安装到系统中,这样whistle就可以拿着证书成为服务器和主机之间的代理人
安装系统证书非常简单,点击菜单栏Install Root CA
此时重启whistle,重新抓包HTTPS请求,就可以看到解包后的内容了
抓包手机请求
手机抓包已经成了很常用的功能,那么在whistle中操作也非常简单,也是点击菜单栏Proxy Settings
:
自定义whistle端口,并设置为系统代理:
查看主机ip后,打开手机找到和主机同一WiFi,点击代理设置,将ip和端口输入后保存:
此时访问网页,就可以抓到内容了
手机配置HTTPS
和主机HTTPS抓包道理一样,如果手机要能信任代理人,就必须在系统中植入whistle的证书;那么使用whistle可以很方便的安装证书到手机中
用户可以直接点击Settings
就会弹出下载证书的二维码,这时候使用手机扫描访问就会自动下载:
下载到手机后,需要在手机设置里点击证书,会弹出 信任证书
此时输入手机密码即可,这里不做演示了,可以查看往期其他的抓包软件演示
插件
插件系统是whistle核心特色之一。通过插件,Whistle 可以扩展功能以满足各种调试需求,例如接口录制、回放、远程调试、Mock 数据生成等。插件是基于 Node.js 开发的,可以根据项目需求自行编写或安装已有的插件
你可以前往官方文档查看了解插件系统,比较简单
总结
除了文中提到的功能外,whistle还有很多实用的功能,你可以查看whistle官方文档
whistle基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,且可以通过Node模块扩展功能