whistle 工具的安装与使用
whistle简介: whistle是基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,且可以通过Node模块扩展功能。官网地址:wproxy.org/whistle/。
安装
1.安装Node
Windows或Mac系统,可访问nodejs.org/网址自行安装。
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.npmmirror.com
$ cnpm install -g whistle
或者直接指定镜像安装:
$ npm install whistle -g --registry=https://registry.npmmirror.com
whistle安装完成后,执行命令 whistle help 或 w2 help,查看whistle的帮助信息,如果能正常输出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(v0.7.0及以上版本也可以使用w2 help) 查看)
代理配置方式
-
全局代理 (推荐),可通过命令行设置参考设置代理,也可以手动配置:
-
浏览器代理 (推荐):安装浏览器代理插件
Firefox: 地址栏输入访问
about:preferences,找到Network Proxy,选择手动代理配置(Manual proxy configuration),输入代理服务器地址、端口,保存 -
移动端需要在
设置中配置当前Wi-Fi的代理,以 iOS 为例:PS: 如果配置完代理,手机无法访问,可能是whistle所在的电脑防火墙限制了远程访问whistle的端口,关闭防火墙或者设置白名单:jingyan.baidu.com/article/870…
访问配置页面
启动whistle及配置完代理后,用Chrome浏览器(由于css兼容性问题界面只支持Chrome浏览器) 访问配置页面,如果能正常打开页面,whistle安装启动完毕,可以开始使用。
可以通过以下两种方式来访问配置页面:
- 方式1:域名访问 local.whistlejs.com/
- 方式2:通过ip+端口来访问,形式如
http://whistleServerIP:whistlePort/e.g. http://127.0.0.1:8899 - 方式2:通过命令行参数
-P xxxx自定义webui的端口(xxxx表示要设置的端口号),自定义端口支持上述两种方式访问,也支持 http://127.0.0.1:xxxx
5. 安装根证书
如果whistle的设置页面可以正常打开,表示我们可以代理http请求了。如果你的页面和接口全部是http请求,就可以忽略安装https证书的这一步了。
证书按下面步骤安装后,如果还出现安全提醒,这个主要原因是之前你访问过该页面,导致长连接已建立,可以等段时间再访问、或重新打开浏览器,或重启下whistle:
w2 restart
如上图下载完根证书后点击rootCA.crt文件,弹出根证书安装对话框。
-
Windows: Installing a root certificate on Windows
下载证书后,双击证书,根据指引安装证书。证书安装过程,要确保证书存储到
受信任的根证书颁发机构下。 Mac: Mac根证书怎么安装 -
Mac 安装证书后,需要手动信任证书,步骤如下:
打开证书管理界面,找到带有
whistle的字样的证书,如果有多个又不确定最新安装的是哪个,可以全部删除后重新安装双击证书后,点击
Trust左边展开选项,红色部分选择Always Trust(总是信任),点击左上角关闭当前界面会要求输入密码;输入密码后可 以看到证书上面红色的图标x不见了,到这一步说明完成证书安装。
使用场景
抓包
1. PC电脑抓包
- 1.在Network查看所有请求
- 2.Settings设置请求过滤
2. 手机APP抓包
- 1.手机链接和电脑同wifi
- 2.查看自己的电脑IP
- 3.打开手机wifi设置
- 4.长按或者点击修改网络
- 5.设置代理为手动代理
- 6.输入电脑IP和whistle端口
本地代理
-
直接修改whistle配置,在配置项Rules下添加一行即可,例如
172.16.*.*:**/api ***.dev.***/api # 测试test 172.16.*.*:**/api ***.test.***/api # 仿真 172.16.*.*:**/api ***.sl.***/api -
修改任意请求(包括本地服务)接口返回结果
举个例子:mock接口 abc.test.***/api/user/lo…
在配置项Values项下添加一个 response.json 的 key,内容改成你想要的返回内容;
在配置项Rules下添加一行https://abc.test.***/api/user/login {response.json}如果不是 .json 结尾,whistle 不会在 Response Headers 里自动添加 content-type: application/json; charset=utf-8,请使用 .json 结尾的文件
从新刷新页面查看,即是自己修改后的返回结果
-
修改返回状态码
https://abc.test.***/api/user/login statusCode://500 -
替换线上文件
https://example.js file://users/example.js还有很多功能、例如插入js、处理 options 请求、移动端抓包等等,有需要尽可一试。