这是我参与更文挑战的第1天,活动详情查看: 更文挑战
一、开启网络代理
勾选 proxy -> macOS Proxy 开启代理
开启网络代理后,Charles 会自动配置系统的网络代理。下图中的 网络代理(HTTP) 、 网络代理 HTTPS 就是配置后的结果。
Charles 的代理端口可以通过点击 Proxy -> Proxy Settings 查看
代理抓包失败的常见原因
-
未关闭本地其它的代理工具
-
如使用浏览器代理插件的(如
SwitchyOmega),需要禁用插件或者把代理端口设置到系统代理 -
localhost、127.0.0.1Charles 默认是不抓包的,我们可以通过更改 Host 来抓包,比如新增记录:127.0.0.1 localhost.charlesproxy.com
二、查看请求和响应
成功开启网络代理后,我们就可以在 Charles 中查看当前计算机中的网络请求了。例如我们现在打开掘金首页,我们可以在 Charles 中看到下图中的请求:
由于掘金使用了 Https 协议,我们看到的请求都是加密的文本。为了能够看到更直观的信息,我们需要安装 Charles 的 SSL 证书。具体步骤在文末的附录中单独介绍。
装好证书后,我们需要在 Charles 配置 SSL 代理 , 通过 Proxy -> SSL Proxy Settings 打开下图的配置面板:
勾选 Enable SSL Proxying , 点击 Add , 随后添加配置
完成配置后,我们再次访问掘金首页就可以在 Charles 中看到非加密的响应信息
三、修改响应信息
Charles 提供了 MapLocal 的功能,我们可以用它把本地的文本当作真实的响应返回给特定的请求。具体操作如下:
1、右键某个请求,选择 Save Response 保存到本地
2、右键请求,选择 MapLocal 打开弹窗
3、点击 Choose 选择本地的 Response 文件(已修改)。
配置完成后,再次访问掘金首页,我们看到响应已经被替换,但是显示的是带有一些乱码的纯文本信息。经过分析,我们会发现 Response 请求头中的
Content-type 为 text/plain 。
为了正常显示页面,我们需要将 Response 请求头中的 Content-type 修改为 text/html;charset=utf-8 。
这时候,Charles 提供的 Rewrite 就派上了用场, 首先我们要通过 Tools -> Rewirte 打开配置窗口
然后勾选 Enable Rewrite , 点击 Add 添加新的规则添加路径规则如下
添加修改规则如下
配置完毕后,我们再次访问页面就可以看到修改后的页面啦
附录
Mac 安装 Charles SSL 证书
1、通过 Help -> SSL Proxying -> Install Charles Root Certificate 下载证书
2、将证书添加到钥匙串中,并信任该证书
添加证书后,可以在 钥匙串访问 中搜索并查看 Charles 证书
双击上图证书查看详情,展开信任选项,并信任该证书