Charles 常作为开发者的网络抓包工具,方便调试服务器接口。但一些常用功能容易遗忘,每次忘了都要查比较烦,因此总结一下。
连接方式
保证电脑和手机在同一局域网,启动 charles 后,手机设置网络代理的 IP 地址为电脑 IP,端口默认为 8888,可在 Proxy->Proxy Settings 中查看和设置;
常用功能
1、Mock 数据(Map Local)
对某个接口请求成功后,现在该条记录->右键->Save Response 把接口放回结果保留在本地(假设保存为文件 index.json),再次在该条记录->右键->Map Local,如果 Query一行内容较多,可以全部删除(如果保留的话,只有域名和参数都匹配,mock 文件才能生效),Local Path 选择你刚保存的 index.json 文件。以后的该接口请求就会以 index.json 文件内容为返回结果,因此你可以修改本地 index.json 文件内容,来模拟网络请求的多种数据;
在 Charles ->Tools -> Map Local Settings 中可以添加、移除、禁用 Mock 数据;
2、内容重写(Rewrite)
mock 数据时可能会遇到一个问题,就是你发现 Mock 成功了,但是返回的结果全是乱码,或者看上去是文本不是 json 数据,大概率是响应数据格式不正确,此时就可以使用 Rewrite功能;
进入 Tools -> Rewrite Settings ->勾选 Enable Rewrite,添加(Add)规则,然后进行如下图所示的配置,目的是将 text/plain 格式的响应格式替换为 application/json 格式
3、接口断点(Breakpoints)
在某个接口请求->右键->勾选 Breakpoints,相当于给该接口设置了断点,每当该接口重新被请求时,Charles 就会给出断点调试的界面,在该界面你可以修改上行参数,修改 Http 请求方式,或选择继续执行(Execute)还是丢弃(Abort)该接口;
如果设置断点无效,请检查:Charles ->Proxy -> Breakpoints Settings,是否未启用、是否对接口请求不完全一致(试试双击某条记录,将 Query 参数全部删除);
4、网络限速
在 Charles ->Proxy -> Throttle Settings 中勾选 Enable Throttling,在 Throttle Configuration 菜单设置响应的上行与下行速度即可;
常见问题
1、手机设置连接后,Charles 没有数据
尝试在手机端杀进程重启;
2、Charles 中能看到网络请求,但是看不到具体上行和下行数据
大概率是请求为 https 请求,没有安装或新任证书导致的,这需要如下操作
①按照 Charles Help -> SSL Proxying 中的提示,在手机端访问 http://charlesproxy.com/getssl 下载证书并安装;
②如果还是不能显示请求内容,在电脑端(以 Mac 为例)同样按照 Help -> SSL Proxying 中的提示安装电脑证书:搜索并进入 钥匙串访问->找到 charles 证书->双击调出详情窗口->展开信任菜单->使用此证书时的选项设置为"始终信任";
③如果问题依旧,在 Charles Proxy -> SSL Proxying Settings 中勾选 Enable SSL Proxying,并添加规则,比如你要访问的域名是 email.163.com,你可以设置 Host 为 *.163.* 来匹配所有163的域名,Port 可以无需设置;