Charles
预览模式
-
Structure
以域名对请求进行分组,可以很方便地预览同一域名下的请求数据,也方便于日常开发中对某一服务接口的分析和处理
-
Sequence
Sequence以时间顺序显示请求信息,可以最直接的预览请求信息。在此模式下,可以使用Filter过滤请求,针对性分析
请求抓包
- 快捷键:CTRL+R进行切换
- 点击 START RECORDING或STOP RECORDING按钮
- 对于手机的抓包,需要保证PC端和手机端在同一局域网内
请求断点
- 在Charles的请求预览界面中,右键点击某条/组请求,在弹出的选项列表中有Breakpoints选项。图示如下:
- 点击Breakpoints后即为该请求设定了断点。默认情况下,在该请求的Request / Response过程都会受断点控制,即在Request数据发送到的服务端之前会被暂停,在Response数据发送到客户端之前也会被暂停。可以从Charles菜单栏 -> Proxy -> Breakpoint Settings中编辑断点的参数。比如,只需要对Response过程加断点,可以将Request的勾选状态取消。图示如下:
- 在断点状态下,可以预览和修改请求的中间数据,之后点解Execute按钮即可继续执行请求。
数据修改
Rewrite和Breakpoint Editing都可以起到修改请求数据的作用
rewrite
在Charles菜单栏 -> Tools -> Rewrite中可以开启Rewrite功能,点击Add按钮可以添加一条设置,并可以在右侧的Locations和Rules中分别添加要Rewrite的请求路径和Rewrite规则
- Where: 在哪里修改Request中还是Response中
- Match
- Value:寻找匹配内容中与value一致的值(支持正则匹配)
- Replace
- Value:替代Match的Value里的值
- Replace first:仅替代掉第一个被匹配的值
- Replace all:替代到所有被匹配的值
Breakpoint Editing
结合断点功能,可以很好的实现临时修改请求的Request / Response数据的需求。为某条请求设置断点后,当该请求发生时,会自动跳到断点窗口。点开Edit Request / Response界面,可以看到中间信息,选择合适的数据格式(HTML、Json等)进行修改。修改完成后,点击Execute按钮即可在终端上看到修改后的的效果
请求重发
在Charles的请求预览界面中,右键点击某条/组请求,在弹出的选项列表中有Repeat和Advanced Repeat两个选项
单击Repeat会重发该请求一次,常用于测试服务接口能否正常访问,客户端能否正常收到返回数据等。单击Advanced Repeat会弹出重发参数编辑页面
Iterations(重发次数)Concurrency(并发数)和 Repeat(重发延时)
网速模拟
在Charles菜单栏 -> Proxy -> Throttle Settings中可以启用Throttling(节流)功能,并自定义Locations(受限服务接口)和Throttle Configuration(节流配置)。支持对Throttle preset(预置的数据传输方式)、Bandwidth(带宽) Utilisation(利用比率)、 Round-trip latency(往返延迟)、MTU(最大传输单元) Reliability(可靠性) Stability(稳定性)等参数进行编辑。其中,在Throttle preset支持模拟3G/4G网络环境
Map重定向
Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。在 Charles 的菜单中,选择 “Tools”->”Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面
- 对于 Map Remote 功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空。下图是一个示例,我将所有ytk1.yuanku.ws(测试服务器)的请求重定向到了www.yuantiku.com(线上服务器)
- 对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件