Charles 使用说明书(客户端开发使用部分)
客户端开发过程中是不是经常对网络调试无比的焦躁,特别是对接接口Api,服务端小伙伴不靠谱的时候,特别想死,为了提高效率不依赖别人,来看看charles黑魔法吧。
1、拦截 Http 和 Https 网络请求
2、网络请求的截获并动态修改、客户端开发自己mock接口、修改网络请求参数,截取网络请求返回并动态修改
3、模拟慢速网络,做网络兼容
4、过滤操作等等
最新更新(Charles版本 4.1.4)Mac客户端
1.准备工作
安装没什么特别,Mac安装很简单,不付费也可以使用,只是有30分钟时长限制。
将 Charles 设置成系统代理
Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 Proxy – Mac OS X Proxy 来将 Charles 设置成系统代理。
如何将手机设置代理到电脑
1.知道你电脑的IP,保证手机、电脑在一个网络内
2.查看Charles - Proxy - Proxy Settings 中设置的 HTTP Proxy Port ,默认是 8888
3.点开手机右边的wifi详情,设置HTTP代理为手动,并把服务器(电脑IP)和端口都配置好。
4.如果是需要https的抓取,需要SSL代理设置,允许抓取https协议(Charles - Proxy - Proxy Settings 勾取Enable SSL Proxying)。locations中指定我们需要抓取的域名,或者指定要抓取的端口号
注意:当客户端使用https只是做握手校验的时候,可以抓取https请求。
charles-help中 ssl proxying中可以安装charles证书到手机,然后再手机上信任证书(安装、开启两步信任),然后就可以抓取手机发出的
5.手机代理到电脑,charles会出现弹窗,询问allow还是deny,选择allow,连接成功。
6.电脑抓包,proxy- macOSProxy - 选中,授权,这样就可以开始抓模拟器的包,记得要 start recording
2.使用功能
1、拦截指定地址的数据
Charles - Proxy - Recording Settings 把需要拦截的地址添加进去
过滤其他请求的另一个方法:
Sequence模式下 的 Filter 中输入我们需要拦截的请求地址
2、Charles主要提供2种查看封包的视图,分别为 Structure 和 Sequence 。
Structure视图将网络请求按访问的域名分类。
Sequence视图将网络请求按访问的时间排序。
大家可以根据具体的需要在这两种视图之前来回切换。对于某一个具体的网络请求,你可以查看其详细的请求内容和响应内容。如果响应内容是JSON格式的,那么Charles可以自动帮你将JSON内容格式化,方便查看。
3、拦截请求,在请求发出去之前拦截,并支持修改请求中的内容。
4、断点调试
通过断点拦截请求,更改response 中的数据。拦截请求出去的时候Execute跳过,回调回来的时候选择Edit Response 就可以修改回调回来的数据。
Tips : 在下图 我们可以看到对回调回来的数据有多种解析方式,客户端一般都是JSON格式的数据,但是当我们直接用JSON Text 或者 Text方式预览返回内容的时候会发现 编码格式不对的问题,这种情况 只需要把解析方式切到JSON 再切回去就可以了。当然,不排除特殊情况。
任意一种预览格式都支持直接修改返回内容,修改完成后 继续 Execute执行,Charles则会把修改后的数据返回到我们测试的APP。
4、模拟网络状态
5、mock接口
map Local:是将某个网络请求重定向到本地的某个文件
map Remote:是将某个网络请求重定向到另一个网络请求