最近需要抓包Axure软件发出的请求,之前一直使用的Charles,挺稳定的一个工具,最近不知道抽什么风,然后一番搜索之后,发现了whistle,简直神器,配置还非常简单,由于只在MAC上有使用体验,就简单介绍一下。

1、安装Node

whistle支持v0.10.0以上版本的Node,为获取更好的性能,推荐安装最新版本的Node。

如果你的系统已经安装了v0.10.0以上版本的Node,可以忽略此步骤,直接进入安装whistle的步骤,否则:

访问https://nodejs.org/ ,安装LTS版本的Node,默认安装即可。
安装完Node后,执行下面命令,查看当前Node版本

1
2
$ node -v
v7.1.0

如果能正常输出Node的版本号,表示Node已安装成功(Windows系统可能需要重新打开cmd)。

2. 安装whistle

Node安装成功后,执行如下npm命令安装whistle (Mac或Linux的非root用户需要在命令行前面加sudo,如:sudo npm install -g whistle)

1
$ npm install -g whistle

whistle安装完成后,执行命令 whistle help 或 w2 help,查看whistle的帮助信息

$ w2 help

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Usage: w2 <command> [options]
Commands:
run Start a front service
start Start a background service
stop Stop current background service
restart Restart current background service
help Display help information
Options:
-h, --help output
usage information
-d, --debug debug
mode
-l, --localUIHost [hostname] local ui
host(local.whistlejs.com by default)
-n, --username [username] login
username
-w, --password [password] login
password
-S, --storage [newStorageDir] the new
local storage directory
-C, --copy [storageDir] copy
storageDir to newStorageDir
-p, --port [port] whistle
port(8899 by default)
-m, --middlewares [script path or module name] express
middlewares path(as: xx,yy/zz.js)
-u, --uipath [script path] web ui
plugin path
-t, --timeout [ms] request
timeout(36000 ms by default)
-s, --sockets [number] max
sockets(12 by default)
-V, --version output
the version number
-c, --command <command> command
parameters ("node --harmony")

如果能正常输出whistle的帮助信息,表示whistle已安装成功。

3. 启动whistle

最新版本的whistle支持三种等价的命令whistle、w2、wproxy

启动whistle:

1
$ w2 start

Note: 如果要防止其他人访问配置页面,可以在启动时加上登录用户名和密码 -n yourusername -w yourpassword。

重启whsitle:

1
$ w2 restart

停止whistle:

1
$ w2 stop

调试模式启动whistle(主要用于查看whistle的异常及插件开发):

1
$ w2 run

启动完whistle后,最后一步需要配置代理。

4. 配置代理

配置信息
代理服务器:127.0.0.1(如果部署在远程服务器或虚拟机上,改成对应服务器或虚拟机的ip即可)
默认端口:8899(如果端口被占用,可以在启动是通过 -p 来指定新的端口,更多信息可以通过执行命令行 w2 help (v0.7.0及以上版本也可以使用w2 help) 查看)
勾选上 对所有协议均使用相同的代理服务器

代理配置方式(把上面配置信息配置上即可)

  • 直接配置系统代理:

    Mac

  • 安装浏览器代理插件 (推荐)
    安装Chrome代理插件: whistle-for-chrome

访问配置页面
启动whistle及配置完代理后,用Chrome浏览器(由于css兼容性问题界面只支持Chrome浏览器)访问配置页面,如果能正常打开页面,whistle安装启动完毕,可以开始使用。
可以通过以下两种方式来访问配置页面:

用来下载根证书、隐藏connect类型的请求、开启Https拦截功能。

5. Https

安装根证书
证书安装
如上图下载完根证书后点击rootCA.crt文件,弹出根证书安装对话框。

开启拦截Https
图中的打开的对话框有两个checkbox:
开启拦截

  • Hide HTTPS CONNECTs:隐藏connect类型的请求
  • Intercept HTTPS CONNECTs:开启Https拦截功能,只有勾上这个checkbox及装好根证书,whistle才能看到HTTPS、Websocket的请求

最后效果如图所示:
Axure抓包