文章目录
简介
Whistle 是基于 Node 实现的跨平台抓包调试工具,其主要特点:
-
完全跨平台:支持 Mac、Windows 等桌面系统,且支持服务端等命令行系统
-
功能强大(理论上可以对请求做任意修改):
-
支持作为 HTTP、HTTPS、SOCKS 代理及反向代理
-
支持抓包及修改 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求
-
支持重放及构造 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求
-
支持设置上游代理、PAC 脚本、Hosts、延迟(限速)请求响应等
-
支持查看远程页面的 console 日志及 DOM 节点
-
支持用 Node 开发插件扩展功能,也可以作为独立 npm 包引用
-
-
操作简单:
-
直接通过浏览器查看抓包、修改请求
-
所有修改操作都可以通过配置方式实现(类似系统 Hosts),并支持分组管理
-
项目可以自带代理规则配置并一键设置到本地 Whistle 代理,也可以通过定制插件简化操作
-
功能可以说是非常强大。可能作为代理服务器使用的需求会多一些。
Whistle 官网:https://wproxy.org/whistle/
Whistle 的 GitHub:https://github.com/avwo/whistle
Whistle 安装启动
一键安装
一键安装只支持 Mac & Windows 系统,其它系统按照下面 手动安装 的方式操作。
已安装 brew 的 PC,可以省略以下 1、2 步骤,直接通过以下方式一键安装:
brew install whistle && w2 start --init
arm64 平台尝试用:
brew install node && npm i -g whistle && w2 start --init
-
安装 Node(建议安装最新的 LTS 版本,如已安装忽略此步骤):Node.js官网
-
一键安装,在命令行执行以下命令:
npm i -g whistle && w2 start --init
上述命令会先全局安装 Whistle 的 npm 包后,启动 Whistle 并设置系统全局代理,以及安装系统根证书
如果安装过程时报错
Bad CPU type in executable
,在命令执行arch -x86_64 zsh
再重新执行一键安装命令。 -
一键安装过程中注意事项:
-
Mac 需要两次输入开机密码或指纹验证
-
Windows 需要最后点击 “是(Y)” 确认
-
如果需要自定义代理配置或根证书(如设置其它代理,根证书或代理白名单等)可以通过以下命令实现:
w2 proxy 设置系统全局代理:https://wproxy.org/whistle/proxy.html
w2 ca 设置系统根证书:https://wproxy.org/whistle/proxy.html
手动安装
手动安装过程需要以下步骤:
-
安装Node
-
安装whistle
-
启动whistle
-
配置代理
-
安装根证书
1.安装Node
访问Node.js官网,根据自己系统进行安装即可
2.安装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的帮助信息
3.启动whistle
最新版本的whistle支持三种等价的命令
whistle
、w2
、wproxy
启动whistle:
w2 start
如果要防止其他人访问配置页面,可以在启动时加上登录用户名和密码
-n yourusername -w yourpassword
。
w2 restart #重启whsitle
w2 stop #停止whistle
w2 run #调试模式启动whistle(主要用于查看whistle的异常及插件开发)
启动完whistle后,最后一步需要配置代理。
4. 配置代理
这一步就是根据上面的信息进行本地配置了。可以根据相应的代理软件或者插件配置即可。
可以参考之前我推荐的两个应用:SwitchyOmega扩展 和 Brooks
配置信息:
代理服务器:127.0.0.1 (如果部署在远程服务器或虚拟机上,改成对应服务器或虚拟机的ip即可)
默认端口:8899 (如果端口被占用,可以在启动时通过 -p 来指定新的端口,更多信息可以通过执行命令行 w2 help (v0.7.0及以上版本也可以使用w2 help) 查看)
如果配置完代理,手机无法访问,可能是whistle所在的电脑防火墙限制了远程访问whistle的端口,关闭防火墙或者设置白名单
移动端调试神器:eruda
手机连接代理时,如何看console.log的日志信息?
现在,代码里有console.log,如果是在电脑浏览器上看,可以直接在控制台查看console.log的内容。但是,如果手机连接代理,在手机上打开网页的话,要怎么查看console.log的内容呢?具体做法如下:
1.在 whistle中,新建一个名叫Eruda H5
的代理,代理中的内容是:
http://xxx.com htmlAppend://{eruda.html}
2.新建一个values,里面的内容是:
<script src="//cdn.bootcss.com/eruda/1.4.3/eruda.min.js"></script>
<script>
eruda.init()
</script>
然后就OK了。