开发者一定要学会的代理工具 --- Whistle

0 阅读2分钟

今天在开发页面时遇到了一个问题,如下图。说白了就是 本地改的代码在本地运行项目后无法生效,当时感觉天要塌了,因为印象中把新代码提交到预发流程是很麻烦的,而且无法实时调试开发起来还是太艰难了。之前在字节有任意门,阿里有摩天轮,但初来腾讯还不知道有什么自研工具,就在我手足无措之时,mt 为我打开了新世界的大门:Whistle

image.png

我可以先通过一个例子来讲一下 Whistle 的使用场景

H5 页面的开发流程是这样的

  1. 打包:把你写的 React/Vue 源代码,通过 Webpack/Vite 编译成纯 HTML + JS + CSS 文件(静态文件)
  2. 上传服务器:把这些文件部署到服务器上,比如 h5.example.com
  3. 原生 App 加载:App 里的 WebView 通过 URL 访问这个地址,就能显示 H5 页面了

所以每次改一行代码,都要走"改代码 → 打包 → 上传 → App 里刷新" 的流程,非常痛苦

但是用 Whistle 代理后,一切都会变的不一样

正常流程:
App WebView ──请求──> https://h5.example.com/app.js ──> 线上服务器返回线上代码

用 Whistle 代理后:
App WebView ──请求──> https://h5.example.com/app.js 

                         │
                    Whistle 拦截!
                    
                         │
                         ▼
                   返回你本地电脑上的 localhost:5173 的开发代码

原理就是:

  1. 手机和电脑连同一个 WiFi
  2. 手机设置 HTTP 代理指向电脑上的 Whistle
  3. 手机上所有网络请求都会经过 Whistle
  4. Whistle 根据规则,把对线上 H5 地址的请求劫持,转发到你本地 Vite 开发服务器
  5. App 以为自己在加载线上页面,实际上拿到的是你本地正在开发的代码。

所以 Whistle 本质是一个抓包工具,可以做到拦截线上页面请求数据,再响应本地代码。

对 Whistle 有了大概的了解,接下来就要学习一下如何使用,由于本人比较懒,阅文无数后找到了一个详细且通用的文章,有兴趣的可以去看一下~

juejin.cn/post/744550…