Charles 拥有 Map 、Rewrite、Breakpoint 3大调试技巧,非常值得客户端开发学习一波。
Charles 的 Map Local 功能(将网络请求重定向到本地文件)
针对一个有数据的请求,提前把 Response 保存到本地
在charles「Tools -> Map Local」
勾选 Enable Map Local,点击 Add 添加一个规则
填写对应匹配规则,然后指向本地一个文件路径,点击OK。
命中规则后,会在Overview界面里有一条Note记录。
也可以对着某个请求,右键,选择「Map Local…」
这样可以自动填充url规则
——————————————————————————————
Charles 的 Rewrite 功能(将网络请求改写)
勾选Enable Rewrite,点击 Add 添加一个规则
Rewrite 玩法一: 改写Response的某个开关的值
很多时候你只想改某个值,使用 Map Local 太重又很繁琐。而且把不相关的返回都固定下来了。此时就可以使用 Rewrite 修改某一个值。
先添加一个拦截规则
配置Rewrite规则是,针对response的body。把「“is_new_page”:0,」替换为「“is_new_page”:1,」
!!!注意冒号:后面不能有空格!!!
Rewrite如果命中了,会在Overview界面里有一条Note记录。
Rewrite 玩法二: 改写host指向某个域名
经常的场景是,后端开发说「我这代码还没稳定,还不敢发布到测试环境,要不你来连我的本机IP」,此时就可以使用这个功能。
其他的 Rewrite rule type 看字面意思都能理解,怎么使用我们就靠自己发挥想象力了。
——————————————————————————————
Charles 的 Map Remote 功能(将网络请求重定向到其他域名)
如果会用了Map Local,那看Map Remote这界面应该挺好理解。比上面介绍的 Rewrite host 或者 Rewrite url 更强大。
这功能我一开始用的不多,主要想着「本来就是后端没开发好,才用Charles 的 Map Local 指向一个本地的文件,可以提前模拟请求结果,这让我重定向到其他远端有什么用?」
然后我发现了 Easy Mock 这种第三方平台,可以很方便的管理 Mock 数据和 API 文档,创建的 Mock 接口可以同时供多个开发者使用。并且还有一些黑魔法。
比如按照这个网站设定的语法,写成「@pick([‘张三’, ‘李四’, ‘王五’, ‘赵六’])」 这种样式,可以随机返回 张三、李四、王五。还有随机生成字符串、随机生成邮箱等语法功能。
——————————————————————————————
Charles 的 Breakpoints 功能(断点)
![](https://img-blog.csdnimg.cn/20200331173232128.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FsY29ob2xkaQ==,size_16,color_FFFFFF,t_70)
设置断点后,可以随意改写 Request 继续发送,也可以改写 Response 供客户端使用。然后这个功能很强大,但是开发很少用。因为客户端请求普遍都设置了超时时间,手忙脚乱在10秒内改请求内容,这体验简直了。
——————————————————————————————
Charles基础配置使用
1.查看IP地址
在网络设置中 或者 在charles「Help -> Local IP Address」查看IP地址
2.设置Charles端口
在charles「Proxy -> Proxy Settings」设置端口
比如这里是8888
3.手机WIFI配置代理
输入上面两个步骤获取到的 IP 和 端口
为了实现可以抓https的请求,还需要在手机安装charles证书。这里以Android手机为例子。
4.配置HTTPS证书
保存Charles证书到本地
5.手机安装Charles证书
把证书上传到手机,如使用命令 adb push /Users/Yao/Downloads/charles-ssl-proxying-certificate.pem /sdcard/Download/
Android手机普遍直接直接点开文件安装会提示「没有找到应用打开该类型文件」
以MIUI为例,可以通过以下路径安装「WLAN页面」->「高级设置」->「安装证书」,找到自己的charles证书点击安装。
如果没有找到,可以尝试这个路径「密码、隐私与安全」->「系统安全」->「加密与凭证」→「从存储设备安装」。
6.允许SSL代理
在charles「Proxy -> SSL Proxying Settings」设置允许抓取的SSL匹配规则,这里配置了允许抓取所有SSL连接。
![](https://img-blog.csdnimg.cn/20200331105042384.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FsY29ob2xkaQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200331105105173.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FsY29ob2xkaQ==,size_16,color_FFFFFF,t_70)
以上就配置完Charles基础抓包设置了。