whistle(读音[ˈwɪsəl],拼音[wēisǒu])基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,且可以通过Node模块扩展功能:安装启动whistle,需要以下四个步骤: 安装Node、安装whistle、启动whistle、配置代理
Whistle也是nodejs开发的跨平台web调试代理工具,查看、修改或构造http(s)、websocket请求响应数据。
工具地址:https://github.com/avwo/whistle
介绍及相关用法:https://github.com/avwo/whistle/wiki
帮助文档:http://wproxy.org/whistle/
1. 安装Node
whistle支持v0.10.0
以上版本的Node,为获取更好的性能推荐安装最新版本的Node可以忽略此步骤,直接进入安装whistle的步骤
- Windows或Mac系统,访问https://nodejs.org/,安装LTS版本的Node,默认安装即可。
- Linux下推荐使用源码安装: 从Node官网下载最新版的Source Code(或者用
wget
命令下载),解压文件(tar -xzvf node-vx.y.z.tar.gz
)后进入解压后的根目录(node-vx.y.z
),依次执行./configure
、./make
和./make install
安装完Node后,执行下面命令,查看当前Node版本
$ node -v
v4.4.0
如果能正常输出Node的版本号,表示Node已安装成功(Windows系统可能需要重新打开cmd)
2. 安装whistle
Node安装成功后,执行如下npm命令安装whistle (Mac或Linux的非root用户需要在命令行前面加sudo
,如:sudo npm install -g whistle
)
$ npm install -g whistle
npm默认镜像是在国外,有时候安装速度很慢或者出现安装不了的情况,可以使用taobao的镜像安装加速安装:
$ npm install cnpm -g --registry=https://registry.npm.taobao.org
$ cnpm install -g whistle
或者直接指定镜像安装:
$ npm install whistle -g --registry=https://registry.npm.taobao.org
whistle安装完成后,执行命令 whistle help
或 w2 help
,如果能正常输出whistle的帮助信息,表示whistle已安装成功。
3. 启动whistle
最新版本的whistle支持三种等价的命令
whistle
、w2
、wproxy
启动whistle:
$ w2 start
Note: 如果要防止其他人访问配置页面,可以在启动时加上登录用户名和密码 -n yourusername -w yourpassword
重启whsitle:
$ w2 restart
停止whistle:
$ w2 stop
调试模式启动whistle(主要用于查看whistle的异常及插件开发):
$ w2 run
启动完whistle后,最后一步需要配置代理
4. 配置代理
代理服务器:127.0.0.1 (如果部署在远程服务器或虚拟机上,改成对应服务器或虚拟机的ip即可)
默认端口:8899 (如果端口被占用,可以在启动是时通过
-p
来指定新的端口,更多信息可以通过执行命令行w2 help
浏览器代理:安装Chrome浏览器代理插件:推荐安装SwitchyOmega
PS: 如果配置完代理,手机无法访问可能是whistle所在的电脑防火墙限制了远程访问whistle的端口,关闭防火墙或者设置白名单
访问配置页面
启动whistle及配置完代理后,用Chrome浏览器(由于css兼容性问题界面只支持Chrome浏览器)访问配置页面,如果能正常打开页面,whistle安装启动完毕,可以开始使用,可以通过以下两种方式来访问配置页面:
- 方式1:域名访问 http://local.whistlejs.com/
- 方式2:通过ip+端口来访问,形式如
http://whistleServerIP:whistlePort/
e.g. http://127.0.0.1:8899 - 方式2:通过命令行参数
-P
port自定义webui的端口(xxxx
表示要设置的端口号),自定义端口支持上述两种方式访问,也支持 http://127.0.0.1:port或者localhost:port
下载rootCA认证
手机连接电脑ip并指定端口,就可以在浏览器中查看到数据的请求。
设置https拦截:
1. 点击菜单https,下载rootCA证书,同时勾选Intercept HTTPS CONNECTS
2. 手机扫码下载rootCA证书,并导入到手机中,这里跟Fiddler一致,也可以浏览器输入rootca.pro即可
3. 访问https网站,可以抓到数据
PS:目前whistle工具已经在chrome商店中上线,可以在chrome://apps中通过搜索whistle,下载whistle插件方式安装
访问界面