Charles的奇巧淫技

大家好,我是 dom 哥。今天讨论一下 Charles 的高级用法。

Charles 是 mac 电脑的一个网络代理软件,也是我平时开发常用的一个工具,用过的都说好😁。

本文不是 Charles 的入门介绍,而是针对一些特殊使用场景的摸索和总结。

Tools > Map Remote

Map Remote 工具能够将请求映射到另一个服务器,它可以改变请求的目的地,HTTP 请求会透明的映射到新地址,就像直接请求新地址一样。

例如你可以将 https://A.com/a1/a2 映射到 http://B.com/b1/b2

💡 最常见的一个使用场景是将线上资源映射到本地开发服务器 www.com -> localhost,以此实现本地调试线上。

Tools > Map Local

Map Local 工具能够将请求映射到本地文件,也就是将本地文件作为某个请求的返回。Map Local 和 Map Remote 相辅相成,一个映射到服务器,一个映射到本地文件。

如果说 Map Remote 是大面积覆盖,那么 Map Local 就是单点爆破。这对快速调试某个线上静态资源很方便。

💡 比如把某个线上 js 文件下载到本地,修改修改,然后通过 Map Local 这个本地文件映射就可以直接看到效果进行验证。不必走完 CI,CD 这一套焦头烂额的等待了。

Tools > Rewrite

Rewrite 工具能够让你重写覆盖请求的任意部分,包括 request 和 response 的 header 和 body。

💡 下面是一些使用场景:

  • 重写 response header 实现 cors 跨域
  • 重写 cookie 实现一些校验
  • 重写 body 实现类似 Map Local 的效果

Tools > DNS Spoofing

DNS 欺骗工具可以将一个域名映射到一个 IP 地址下,和系统 hosts 文件的作用一样。

实际上,在 Map Remote 里配置 example.com -> 20.205.243.166 能实现相同的效果。

💡 有了这个功能,我卸载了 hosts 管理软件。

Proxy > External Proxy

Charles 本身是一个代理,它还支持再配一层外部代理,通常是 VPN。请求会先过 Charles,再走外部代理。

💡 例如,想要抓包的话需要开启 Charles 的 macOS Proxy,此时 Charles 会自动设置系统代理。

同时可能开了 ClashX 等 VPN 软件。那么就需要配置上 External Proxy:

以此实现抓包,范强两不误。

觉得不错点个小赞哦~🌹