Whistle 笔记
安装 Whistle
- 如果没有安装 Node.js 先安装, 访问官网下载安装包: https://nodejs.org/
- 不确定是否安装,可用终端或cmd检查:
node -v
- 不确定是否安装,可用终端或cmd检查:
- 使用 npm 安装 Whistle
npm install -g whistle
- 确认安装结果
- 输入命令,如果有返回结果意味着安装成功 `w2 help’
官方文档:http://wproxy.org/whistle/
启动 whistle
w2 start
最新版本支持三种等价命令
w2
、whistle
、wproxy
whistle重启、停止、调试模式命令
重启whistle
w2 restart
停止whistle
w2 stop
whistle调试模式
w2 run
MacOS、Windows、iOS、Android使用whistle抓包监测
- 手动配置代理,IP 和 端口在启动 whistle 命令后可以看到(第二个,不是 127.0.0.1 那个)
- 如果手机遇到访问无网络,确认电脑是否可以正常操作,如果正常多试试(访问页面、开关wifi、重启whistle)或等一会。
HTTPS 加密协议使用whistle抓包监测
HTTPS、Websocket需要开启HTTPS拦截才可以正常抓包及使用所有匹配模式
在 whistle 控制台点击顶部“HTTPS”菜单
设备配置好代理
电脑:点击直接下载和安装证书
手机:扫描二维码或直接访问 http://rootca.pro (如果没有配置代理无法访问)
iOS 需要使用 Safari 访问,不然无法安装证书。下载好证书需要手动去设置安装,操作位置:设置——通用——VPN与设备管理——描述文件:whistle.**
解决iOS安装证书后whistle依旧提示证书错误未受信任
在 iOS 10.3 之后需要手动信任自定义根证书,设置位置:设置——关于本机——证书信任设置——whistle.**
whistle 升级更新
⚠️ 执行升级安装更新前请先停止 whistle 不然更新会报错。(停止命令 w2 stop
)
npm i -g whistle
如果更新失败,使用超级管理员再次尝试
sudo npm i -g whistle
访问配置页面
可通过多种方式访问
- 域名: http://local.whistlejs.com/
- IP+端口,如:http://127.0.0.1:8899 (如果修改了端口,访问时修改为对应端口)
- 通过命令
-P 6789
自定义端口: http://127.0.0.1:6789 (6789 为自定义,可自行配置)
whistle 配置 socks 代理抓取检测指定域名数据
配置入口
- 启用 whistle 后,在界面左边点开规则配置按钮【Rules】,打开规则配置界面
- 输入所需规则并保存,可通过 Ctrl(Command) + S 快捷键保存
配置方式和规则
- pattern socks://ip:port
- pattern 要处理的域名,可以用通配符或者正则
- socks://ip:port,你的 socks 代理的IP和端口,具体以你 socks 软件提供的为准
- socks://username:password@ip:port 加账号和密码的配置方式,username 替换你的用户名,password 替换你的密码
- 注释方式:在一行以开头
#
可输入注释信息
全部域名都走 socks 代理
* socks://127.0.0.1:1080
指定域名走 socks 代理
play.google.com socks://127.0.0.1:1080
问题
- socks IP 使用局域网IP(同 whistle 配置)会无效,建议如果socks在本机配置,直接使用 127.0.0.1
相关文档
更多使用指南
- 常用功能讲解Whistle 开发调试最佳实践 - 知乎
其他骚操作
防止他人访问 whistle 配置页面
在启动命令上加登录用户名和密码。
user
为用户名,password
为密码,请自行替换
w2 start -n user -w password
设置延迟响应 resDelay
- 使用 resDelay 参数可以模拟弱网环境
- 需要确保whistle是最新版本,配置方式:
- timeMS: 参数单位为毫秒
- 1000 毫秒(ms) = 1 秒(s)
pattern resDelay://timeMS
示例:
# baidu.com 全部子域包括www
*.baidu.com resDelay://3000
# 全部网站或请求
* resDelay://3000
设置响应速度 resSpeed
- 使用 resSpeed 参数可以模拟弱网环境
- 需要确保whistle是最新版本,配置方式:
- kbs: 参数单位为每秒的响应速度为多少kb,比如每秒500k
pattern resSpeed://kbs
示例
# baidu.com 全部子域包括www,每秒3k
*.baidu.com resSpeed://3
# 全部网站或请求,每秒160k
* resSpeed://160
使用 resDelay 和 resSpeed 配置 App 弱网环境 Tunnel 报 captureError 错误如何处理?
- 配置 resDelay 和 resSpeed 后部分app无法访问网络,但是网页版可以正常访问
- 首先确认 https 是否正常,是否可以抓取 ssl 请求。(是否按照 whistle证书,安装后是否授权确认)
- 如果确认 https 正常还是有 captureError 报错,可以将对应域名设置
disable://capture
,设置解析次域名 https 请求 - 设置
disable://capture
后,使用 resDelay 和 resSpeed 后,部分域名请求没有起作用 - 在
disable://capture
后增加enable://inspect
参数,然后在对应请求:「点击右键」——「选择 Action」——「再选择 Abort」
示例,解决 Google Play 网页版可以访问 App 无法访问的问题
* socks://127.0.0.1:1080
* resSpeed://160
* resDelay://3500
disable://capture enable://inspect *.googleapis.com *.googleusercontent.com *.google.com *.gstatic.com *.gvt2.com *.apis.google.com *.googlevideo.com
运行过程中,也会报 captureError 的域名
*.appsflyersdk.com *.facebook.com *.isnssdk.com *.tiktokv.com *.jianguoyun.com *.volceapplog.com *.samsung.com.cn *.ytimg.com *.fbcdn.net *.rayjump.com *metrozone.newsroomlabs.com *.gos-gsp.io *.pddpic.com *.pinduoduo.com
whistle 相关 Github Issues: #961 #981 #865