简介

Whistle 是基于 Node 实现的跨平台抓包调试工具,其主要特点:

  1. 完全跨平台:支持 Mac、Windows 等桌面系统,且支持服务端等命令行系统

  2. 功能强大(理论上可以对请求做任意修改):

    • 支持作为 HTTP、HTTPS、SOCKS 代理及反向代理

    • 支持抓包及修改 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求

    • 支持重放及构造 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求

    • 支持设置上游代理、PAC 脚本、Hosts、延迟(限速)请求响应等

    • 支持查看远程页面的 console 日志及 DOM 节点

    • 支持用 Node 开发插件扩展功能,也可以作为独立 npm 包引用

  3. 操作简单:

    • 直接通过浏览器查看抓包、修改请求

    • 所有修改操作都可以通过配置方式实现(类似系统 Hosts),并支持分组管理

    • 项目可以自带代理规则配置并一键设置到本地 Whistle 代理,也可以通过定制插件简化操作

功能可以说是非常强大。可能作为代理服务器使用的需求会多一些。

Whistle 官网:https://wproxy.org/whistle/

Whistle 的 GitHub:https://github.com/avwo/whistle

Whistle 安装启动

一键安装

一键安装只支持 Mac & Windows 系统,其它系统按照下面 手动安装 的方式操作。

已安装 brew 的 PC,可以省略以下 1、2 步骤,直接通过以下方式一键安装:

1
brew install whistle && w2 start --init

arm64 平台尝试用:

1
brew install node && npm i -g whistle && w2 start --init
  1. 安装 Node(建议安装最新的 LTS 版本,如已安装忽略此步骤):Node.js官网

  2. 一键安装,在命令行执行以下命令:

    1
    npm i -g whistle && w2 start --init

    上述命令会先全局安装 Whistle 的 npm 包后,启动 Whistle 并设置系统全局代理,以及安装系统根证书

    如果安装过程时报错 Bad CPU type in executable,在命令执行 arch -x86_64 zsh 再重新执行一键安装命令。

  3. 一键安装过程中注意事项:

    • 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

1
npm install -g whistle

npm默认镜像是在国外,有时候安装速度很慢或者出现安装不了的情况,如果无法安装或者安装很慢,可以使用taobao的镜像安装:

1
2
3
4
5
npm install cnpm -g --registry=https://registry.npmmirror.com
cnpm install -g whistle

或者直接指定镜像安装:
npm install whistle -g --registry=https://registry.npmmirror.com

whistle安装完成后,执行命令 whistle helpw2 help,查看whistle的帮助信息

3.启动whistle

最新版本的whistle支持三种等价的命令 whistlew2wproxy

启动whistle:

1
w2 start

如果要防止其他人访问配置页面,可以在启动时加上登录用户名和密码 -n yourusername -w yourpassword

1
2
3
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的代理,代理中的内容是:

1
http://xxx.com htmlAppend://{eruda.html}

2.新建一个values,里面的内容是:

1
2
3
4
<script src="//cdn.bootcss.com/eruda/1.4.3/eruda.min.js"></script>
<script>
eruda.init()
</script>

然后就OK了。