Charles 是一个 HTTP 代理/ HTTP 监视器/反向代理,使开发人员能够查看其机器和 Internet 之间的所有 HTTP 和 SSL / HTTPS 流量。 这包括请求,响应和 HTTP 标头(包含 cookie 和缓存信息)。
mac 下载的 dmg 格式,正常安装即可
在官方下载的 Charles 是有使用有效期的,所以需要破解.
下载对应版本的 charles.jar(google 搜索),
我用的 4.0 版本的 Charles
cd /Users/xinxi/Desktop/Charles.app/Contents/Java (我本地路径)
把下载 charles.jar 复制到路径下
启动 Charles 后,如果没有等待几秒,说明破解成功
由于现在接口都是 https 协议,如果不安装 https 证书,则不能抓包.
在 Android 个别 rom 上,通过手机浏览器下载后不让安装,需要通过电脑先下载 https 证书导入到设备上安装
iOS 大于等于 10 系统上,下载安装 https 后,证书默认是未开启的.
charles 设置 443 端口,proxy->ssl proxy setting
这个功能主要是拦截服务端数据,做本地修改.
复制响应结果中 json 到存储到本地文件中
在本地文件中修改内容
点击接口,选择 Map Local
Map To 选择刚才修改过的 json 文件
不需要 Map Local 的时候,在 Tools-Map Local 中把这个接口关闭.
Map Local 最合适做客户端接口容错测试,本地 json 按照一定的修复规则,测试客户端不应该崩溃或者测试文案超长等情况
这个功能主要是把接口代理到其他环境上
在 Map Rmote 中写上要代理接口
实例
重写功能可以删除、修改、增加,head、body、url、response 等参数
位置在 Tools->Rewrite 下,需要增加一个接口地址,增加一个重写规则
断点功能主要修改 request 和 response 内容,这个时候接口是在 Charles 代理层被拦截,还没有实际到手机设备上.
选择接口 - 勾选 BreakPoints-再次请求接口
选择接口右键选择 Compose
修改数据,点击 Execute 按钮发送请求
接口右键选择-Repeat Advanced,填写发送的次数,循环发送多次请求
Proxy-Throttle Settings
勾选 Enable Throttling
Only for selected 表示仅选择的域名做弱网
Throttle preset 表示要模拟的网速,可以改上行和下行带宽,还有丢包率
Charles 功能很强大,熟悉掌握常用技巧,在工作中很方便 mock 数据、制造异常场景.