Charles 的 调试 & Mock 数据技巧

Charles 拥有 Map 、Rewriter、Breakpoint 3大调试技巧,非常值得客户端开发学习一波。

Charles 的 Map Local 功能(将网络请求重定向到本地文件)

针对一个有数据的请求,提前把 Response 保存到本地
Charles 的 调试 & Mock 数据技巧_第1张图片
在charles「Tools -> Map Local」
勾选 Enable Map Local,点击 Add 添加一个规则
Charles 的 调试 & Mock 数据技巧_第2张图片
填写对应匹配规则,然后指向本地一个文件路径,点击OK。
Charles 的 调试 & Mock 数据技巧_第3张图片
命中规则后,会在Overview界面里有一条Note记录。
Charles 的 调试 & Mock 数据技巧_第4张图片
也可以对着某个请求,右键,选择「Map Local…」

这样可以自动填充url规则
Charles 的 调试 & Mock 数据技巧_第5张图片





——————————————————————————————

Charles 的 Rewriter 功能(将网络请求改写)

勾选Enable Rewriter,点击 Add 添加一个规则
Charles 的 调试 & Mock 数据技巧_第6张图片


Rewriter 玩法一: 改写Response的某个开关的值
很多时候你只想改某个值,使用 Map Local 太重又很繁琐。而且把不相关的返回都固定下来了。此时就可以使用 Rewriter 修改某一个值。
先添加一个拦截规则
Charles 的 调试 & Mock 数据技巧_第7张图片

配置Rewriter规则是,针对response的body。把「“is_open_vehicles”:\s*0,」替换为「“is_open_vehicles”: 1,」

!!!注意!!!:因为这里匹配规则有bug,无法匹配空格,所以key-value之间的一个空格使用了「\s*」替代,并且要勾选上Regex

Charles 的 调试 & Mock 数据技巧_第8张图片

Rewriter如果命中了,会在Overview界面里有一条Note记录。
Charles 的 调试 & Mock 数据技巧_第9张图片


Rewriter 玩法二: 改写host指向某个域名

经常的场景是,后端开发说「我这代码还没稳定,还不敢发布到测试环境,要不你来连我的本机IP」,此时就可以使用这个功能。
Charles 的 调试 & Mock 数据技巧_第10张图片

其他的 Rewriter rule type 看字面意思都能理解,怎么使用我们就靠自己发挥想象力了。
Charles 的 调试 & Mock 数据技巧_第11张图片





——————————————————————————————

Charles 的 Map Remote 功能(将网络请求重定向到其他域名)

如果会用了Map Local,那看Map Remote这界面应该挺好理解。比上面介绍的 Rewriter host 或者 Rewriter url 更强大。
Charles 的 调试 & Mock 数据技巧_第12张图片
这功能我一开始用的不多,主要想着「本来就是后端没开发好,才用Charles 的 Map Local 指向一个本地的文件,可以提前模拟请求结果,这让我重定向到其他远端有什么用?」
然后我发现了 Easy Mock 这种第三方平台,可以很方便的管理 Mock 数据和 API 文档,创建的 Mock 接口可以同时供多个开发者使用。并且还有一些黑魔法。

比如按照这个网站设定的语法,写成「@pick([‘张三’, ‘李四’, ‘王五’, ‘赵六’])」 这种样式,可以随机返回 张三、李四、王五。还有随机生成字符串、随机生成邮箱等语法功能。
Charles 的 调试 & Mock 数据技巧_第13张图片





——————————————————————————————

Charles 的 Breakpoints 功能(断点)

Charles 的 调试 & Mock 数据技巧_第14张图片

设置断点后,可以随意改写 Request 继续发送,也可以改写 Response 供客户端使用。然后这个功能很强大,但是开发很少用。因为客户端请求普遍都设置了超时时间,手忙脚乱在10秒内改请求内容,这体验简直了。
Charles 的 调试 & Mock 数据技巧_第15张图片
Charles 的 调试 & Mock 数据技巧_第16张图片





——————————————————————————————

Charles基础配置使用

1.查看IP地址

在网络设置中 或者 在charles「Help -> Local IP Address」查看IP地址
Charles 的 调试 & Mock 数据技巧_第17张图片

2.设置Charles端口

在charles「Proxy -> Proxy Settings」设置端口
比如这里是8888
Charles 的 调试 & Mock 数据技巧_第18张图片

3.手机WIFI配置代理

输入上面两个步骤获取到的 IP 和 端口
Charles 的 调试 & Mock 数据技巧_第19张图片

为了实现可以抓https的请求,还需要在手机安装charles证书。这里以Android手机为例子。

4.配置HTTPS证书

保存Charles证书到本地

5.手机安装Charles证书

把证书上传到手机,如使用命令 adb push /Users/Yao/Downloads/charles-ssl-proxying-certificate.pem /sdcard/Download/
Android手机普遍直接直接点开文件安装会提示「没有找到应用打开该类型文件」
以MIUI为例,可以通过以下路径安装「密码、隐私与安全」->「系统安全」->「加密与凭证」->「从存储设备安装」,找到自己的charles证书点击安装。

6.允许SSL代理

在charles「Proxy -> SSL Proxying Settings」设置允许抓取的SSL匹配规则,这里配置了允许抓取所有SSL连接。

Charles 的 调试 & Mock 数据技巧_第20张图片 Charles 的 调试 & Mock 数据技巧_第21张图片

以上就配置完Charles基础抓包设置了。

你可能感兴趣的:(Android)