whistle常用配置

787 阅读1分钟

decument:

切记下面这几个关键步骤:

  1. 勾选上 Enable HTTP/2
  2. 下载安装证书并在对应为止完全信任该证书
  3. 设置系统代理或者 switchyOmega 插件代理,如果用 Chrome 插件,记得点一下应用选项。

如果在 Network 可以抓到浏览器的请求,那就是配置成功了,不然就是证书或者代理没配置好。

mock 接口

^xxx.com/test$ resBody://{xxx.json}

mock 本地文件

xxx.com/test file://D:/path/test/file/test.json

mock html

wap.didialift.com/beatles/cam… htmlBody://{blind.html}

reqScript 代理线上

/https:\/\/(.*)?\.xxx.(.*)?\/(.*)?\/xxx\/(.*)?/ reqScript://{prod.js} 

if (method  !== 'OPTIONS') {
  rules.push('/https:\/\/(.*)?\.xxx.(.*)?\/(.*)?\/xxx\/(.*)?/ resCors://* https://xxx/$3/xxx/$4');
}

3、 reqScript

考虑一种场景:我们要测一个视频上传接口返回 500 的情况,看是否走到了正常的提示逻辑,通常我们模拟状态码就可以解决,但如果接口跨域了,会先发起一个路径一致的 options 请求,我们希望这个 options 请求依然返回 200,只处理 post 请求。

xxx.com/test reqScript://{onlyPostRule}

if (method === 'POST') {
  rules.push('https://xxx.com statusCode://500');
}

修改返回码

www.qq.com statusCode://500

替换线上文件

如果线上环境,有特殊问题。没法在生产环境复现,这个时候可以直接替换js文件到本地进行调试,提高调试效率。

example.com/cdn/example… file://{example.js} //也可以替换到本地 www.ifeng.com file:///User/username/test // 会先尝试加载/User/username/test这个文件,如果不存在,则会加载/User/username/test/index.html,如果没有对应的文件则返回404。

/txx.xx.xx/xx/(.*)?-[0… http://localhost:3000/xx/$1.js

请求转发

www.ifeng.com域名下的请求都替换成对应的www.aliexpress.com域名 www.ifeng.com www.aliexpress.com ^c.y.qq.com/splcloud/fc…* http://192.168.3.14:9000/splcloud/fcgi-bin/gethotkey.fcg?_=$1&cv=$2&ct=$3&format=$4

debugger

1、插入js

xxx.com/test js://{vConsole.js} xxx.com/test jsPrepend://{vConsole.js} wy.guahao.com/ htmlAppend://{debugger}

2、自带inspect插件

npm i -g whistle.inspect www.google.com whistle.inspect://

3、远程 Console.xxx 输出

wy.guahao.com 域名的网站远程打印 log wy.guahao.com log:// 远程打印 log 同时注入脚本 wy.guahao.com log://{injection-log}

正则使用

  • 表示匹配到一个 / 就停下,而 *** 表示匹配多个 一般用于某一类的域名/url代理,例如我希望含有baidu.com域名的地址,不经过代理 /^(?!.baidu.com).$/ socks://127.0.0.1:1086

重定向

这个最常用的场景就是,我们某个页面需要在特定环境下调试,但是特定环境却没有入口去打开页面。例如,在小程序环境中,调试h5页面。 #www.baidu.com/ redirect://xxx.com

解决跨域问题

1、apinew.juejin.im/recommend_a… resCors://{CORSHeaders.json}

cors.json为origin: juejin.im

2、www.baidu.com resCors://*

修改 ua (模拟小程序)

www.baidu.com/ ua://{ua} ua文件:Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; RM-1113) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586

Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, token
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
content-type: application/json
status: 200

7、修改请求、响应的 header s://www.qq.com/some/ajax resHeaders://{CORSHeaders}

模拟 5 秒超时

www.baidu.com reqDelay://5000 enable://abort

模拟弱网

www.baidu.com resSpeed://50