whistle (读音[ˈwɪsəl],拼音[wēisǒu])
一、简介
whistle是基于Node实现的跨平台web调试代理工具,主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用。
类似的工具有Windows平台上的Fiddler,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,配置使用起来非常简单。
whistle的所有操作都可以通过类似如下配置方式实现:
pattern operatorURI
其中:
- pattern 为匹配请求url的表达式,可以为:域名,路径,正则及通配符等等多种匹配方式:
# 域名匹配
www.example.com
# 带端口的域名
www.example.com:6666
# 带协议的域名,支持:http、https、ws、wss、tunnel
http://www.example.com
# 路径匹配,同样支持带协议、端口
www.example.com/test
https:/www.exapmle.com/test
https:/www.exapmle.com:6666/test
# 正则匹配
/^https?://www\.example\.com\/test/(.*)/ referer://http://www.test.com/$1
# 通配符匹配
^www.example.com/test/*** referer://http://www.test.com/$1
- operatorURI 为对应的操作,由操作协议+操作值组成 (
operatorURI = opProtocol://opValue
):
opProtocol(操作协议), 对应某类操作,如:
# 设置请求服务器IP--host
pattern host://opValue
# 本地替换--file协议
pattern file://opValue
opValue(操作值), 对应具体操作的参数值,如:
# 设置请求服务器IP--host协议
pattern host://127.0.0.1:6666 # 或 pattern 127.0.0.1:6666
# 本地替换--file协议
pattern file:///User/test/dirOrFile # 或 pattern /User/test/dirOrFile
pattern file://E:\test\dirOrFile # 或 pattern E:\test\dirOrFile
- pattern 和 operatorURI 在多数情况下位置可以调换,且支持组合模式
二、安装
我是在Windows上安装的,所以有些命令不适用于Mac和Linux哟
- 安装Nodejs
【戳官网地址】 (whistle支持v0.10.0以上版本的Node,为获取更好的性能,推荐安装最新版本的Node。)
下载以后直接下一步下一步安装完成即可
完成后确认是否安装成功:cmd 输入 node -v
(检查是否显示版本号)
-
安装whistle
Node安装成功后,执行如下npm命令安装whistle
npm install -g whistle
(Mac 或 Linux 的非 root 用户需要在命令行前面加 sudo,如:
sudo npm install -g whistle
)
npm默认镜像是在国外,容易出现安装速度很慢或者出现安装不了的情况,比如这样各种超时ERROR……
如果无法安装或者安装很慢,可以使用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
忘记截图……如果看到finish或者success之类的肯定就是成功了呀~
-
启动whistle
默认端口是8899,如果端口被占用,可以在启动时通过 -p 来指定新的端口
我比较习惯在启动的时候自己来指定一个端口,可以和fiddler区分,例如我用的8081:(fiddler是8080~~)
指定端口启动:w2 start -p 8081
不用的时候停止:w2 stop
-
配置浏览器
启动以后就可以在自己的浏览器上访问到whistle的界面啦~
http://127.0.0.1:8889
打开浏览器确认服务开启成功
四不四很清爽~~
启动完whistle后,再配置代理就可以使用啦。 -
配置whistle
https抓包勾选上 Capture TUNNEL CONNECTs 否则无法抓取到HTTPS的数据包
如果不需要测试http2,或遇到h2无法使用,把h2的开关取消勾选
注意如果配置有修改,需要重启whistle
三、使用–配置代理
-
浏览器全局代理
需要对PC浏览器请求进行抓包的话,需要配置浏览器全局代理
我平时很少用web端代理,有问题还麻烦指正哟~
-
移动端配置代理
以iOS为例:
①与电脑接入同一个局域网(我是电脑开了热点)
②配置代理,填写对应IP与端口
-
下载证书
https的包需要下载证书才可以抓到
①手机连接代理后在浏览器输入IP:端口,访问whistle页面(无法访问检查是否开了防火墙或IP是否填错)
②下载证书
③安装证书(以iOS为例,Android在浏览器下载完成后可以直接安装)
下载后在手机设置里可以看到“已下载描述文件”的入口,点击进入可以直接安装
之后需要在“关于本机”里添加证书信任设置
PS: 如果配置完代理,手机无法访问,可能是whistle所在的电脑防火墙限制了远程访问whistle的端口,
关闭防火墙或者设置白名单:windows 防火墙如何设置允许局域网访问本机端口
- 抓个包试试!
手机浏览器访问百度页面的~
我还设了其它代理,所以没有收到响应的问题先不管它
暂时先写这么多,之后有时间再补充配置代理的匹配模式的内容呀
撒花✿✿ヽ(°▽°)ノ✿