工欲善其事,必先利其器。
工作以来主要从事移动端页面开发,移动端页面开发经常需要通过代理进行真机开发调试,期间使用过 Fiddler、SwitchHosts、Charles、Whistle 等代理工具,发现 whistle 使用起来效率最高;基于文本的配置方式比起 charles 基于 GUI 配置方式更为简单方便,而且基于 whistle 的插件扩展能力,可以实现更多定制功能,提升开发效率,改善开发体验,非常适合开发同学。
whistle 是基于 Node 实现的开源「跨平台 web 调试代理工具」,主要用于查看、修改 HTTP、HTTPS、Websocket 的请求、响应,也可以作为 HTTP 代理服务器使用;whistle 采用的是类似配置系统 hosts 的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,且可以通过Node模块扩展功能。
# Mac 查看系统 hosts 配置
$ sudo vi /etc/hosts
whistle 会启动一个代理服务器,所有请求都先经过 whistle,然后再转发到真实服务器,所以可以在 whistle 拦截到请求的时候,对请求做很多定制化的操作,详细原理请查看 HTTP 代理原理及实现。
安装 whistle 前需要先安装 Node,为获取更好的性能,推荐安装最新版本的 Node。
# whistle 安装,Mac 或 Linux 的非 root 用户需要在命令行前面加 sudo
$ npm install -g whistle
最新版本的 whistle 支持三种等价的命令whistle、w2、wproxy ,本文使用 w2。
# 查看版本
$ w2 -V
# 查看帮助信息
$ w2 help
如果能正常输出 whistle 的版本信息,就表示安装成功了,后面可通过 help 命令查看帮助信息。
whistle 常用命令如下,更多命令行参数请查看命令行参数。
# 启动
$ w2 start
# 重启
$ w2 restart
# 停止
$ w2 stop
whistle 启动后,可以通过 「whistle 控制台」 配置代理、抓包等,控制台功能介绍请查看界面列表。