whistle是基于Node实现的跨平台web调试代理工具。

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

常用命令:

  1. 安装:npm install -g whistle
  2. 启动:w2 start
  3. 停止:w2 stop
  4. 重启:w2 restart

官方文档:http://wproxy.org/whistle/

抓包步骤:

1、安装并启动whistle


C02Z84E5LVCF:~$ npm install -g whistle
w2 start⸨░░░░░░░░░░░░░░░░░░⸩ ⠧ rollbackFailedOptional: verb npm-session 98d26472/usr/local/bin/w2 -> /usr/local/lib/node_modules/whistle/bin/whistle.js
/usr/local/bin/wproxy -> /usr/local/lib/node_modules/whistle/bin/whistle.js
/usr/local/bin/whistle -> /usr/local/lib/node_modules/whistle/bin/whistle.js
+ whistle@2.5.17
added 145 packages from 134 contributors in 4.56s

C02Z84E5LVCF:~$ w2 start
[i] whistle@2.5.17 started
[i] 1. use your device to visit the following URL list, gets the IP of the URL you can access:
       http://127.0.0.1:8899/
       http://10.28.12.163:8899/
       Note: If all the above URLs are unable to access, check the firewall settings
             For help see https://github.com/avwo/whistle
[i] 2. configure your device to use whistle as its HTTP and HTTPS proxy on IP:8899
[i] 3. use Chrome to visit http://local.whistlejs.com/ to get started
C02Z84E5LVCF:~$ 

启动完成之后,在浏览器打开命令行提示的网址,例如 http://10.28.12.163:8899/

2、设置手机代理

将手机wifi与电脑保持一致,并设置手机网络代理为电脑的IP地址和网页端口。
本例ip为10.28.12.163,端口为8899

3、安装证书

  • 1、安装电脑端证书

在打开的网页里点击HTTPS—>Download RootCA会开始下载证书;
证书下载完之后,添加证书并信任。

  • 2、安装手机端证书

在打开的网页里点击HTTPS—>用手机浏览器扫描二维码,会下载证书;
证书下载完之后,添加证书并信任。

4、配置代理规则

此时手机端的网络请求都可在whistle左侧的Network下看到。

  • 1、选择待配置的网络请求

选中一个目标网络请求,查看右侧面板的Inspectors,查看Body是否有内容。
有内容就代表有返回值,此时可以更改该请求的返回值。

  • 2、配置规则

选中whistle左侧的Rules,在Default里配置需要拦截的规则。
如,将一个网络请求指定到本地资源:

http://loc.map.baidu.com/gpsz file:///Users/.../Documents/aaaaa.png

注意:前面是目标地址,后面是更改之后的返回资源,中间用空格分隔。

  • 3、查看是否生效

设置完规则并保存,再回到Network,再次触发之前的网络请求,会发现被规则触发(被触发之后请求会高亮显示)。
再次查看InspectorsBody内容,会发现已经变更为本地内容。