whistle是一个跨平台的抓包与 web debug 工具,可以配置代理服务器,模拟接口数据,捕获请求重定向到指定 url,修改请求头响应头,修改 GET 请求的参数,往匹配的页面中注入 js、css
手机代理到whistle遇到的一些问题
电脑下载根证书,开启捕获HTTPS请求没有遇到什么问题,但是当手机代理到whistle时遇到了一系列问题,
首先,点击HTTPS弹出二维码时,两个选择都应该选中
- 打开浏览器扫码或者直接打开链接出现
http://rootca.pro
网页无法打开的情况时,请查看手机Wi-Fi和电脑是否统一,即是否在同一局域网下,还有手机中该局域网是否配置好代理(服务器/主机名,端口)以及是否正确(因为切网后,主机名会发生变化) - 如果同一局域网还是无法访问的情况,或者访问后下载RootCA进度一直为0时,可以双击whistle页面弹出的二维码,下载至本地并传至手机后手动下载;
- ios下,老一点的机子按照指引信任证书即可,新一点的还需要在设置-> 通用->关于本机(的末尾)-> 证书信任设置再手动信任一遍才行
常用操作
安装,PC下配置浏览器代理,下载根证书,手机代理直接照官网操作即可
- 常用命令:
# 启动
w2 start
# 停止
w2 stop
# 重启
w2 restart
- 常用配置
- 配host——为某个域名或具体的 url 指定 ip,绕过 dns 解析,这样可以一套代码访问不同的环境
# 域名 operatorURI / operatorURI 域名
eg: xxx.com 127.0.0.1:8000
- 替换线上文件——直接替换js文件到本地进行调试
# 线上文件 本地文件地址
eg: https://eg/eg.html .../eg.html
# 常用的是代理html和静态资源的情况
/^https?://no\.pp\.com/(.*\.(js|css|png|jpg|gif|jpeg|svg|blob).*)$/ .../dev/$1
/^https?://no\.pp\.com/.../([\w\-]*).html(.*)$/ .../dev/$1.html
- 通配符匹配与正则匹配
很多情况下直接进行匹配的情况外,还会遇到通配符匹配和正则匹配的情况
正则匹配的情况下,需要特别注意的是最多支持10个子匹配( $0…9),其中$0表示整个请求url,其它跟正则的子匹配一样
通配符匹配时,匹配模式必须以 ^
开头,结束位置用$
(如需限制),*
为通配符,详细可以参看https://wproxy.org/whistle/pattern.html
- 修改返回(即将请求的返回值替换为本地json文件)
# 请求 本地json文件 (可以加突出的样式,在抓包验证时会非常好辨识)
/no.pp.com/.../getSomething/ file://{something.json} style://color=@fff&fontStyle=italic&bgColor=@fc8c03
本地文件可以放在 whistle 自带的 Values 里,修改添加非常方便
如果仅仅是想修改请求返回的一些值,可以在network下:
Whistle->network->clear
Whistle->network->找到命中的地址->inspectors->preview->copy
Whistle->values->对应的json文件中粘贴修改保存完事
- 修改header,可能有时候需要修改 Cookie、user-agent、Content-Type来模拟一些情况
xxx.com reqHeaders://{someUserAgent}
xxx.com resHeaders://{someHeader}
花括号中的文件同样可以values中添加喔😊
修改状态码——指定某个接口返回特定的状态,检测代码容错能力
xxx.com/test statusCode://500