之前写过一篇文章介绍过利用Charles进行网络抓包以及抓取手机App网络请求,此处不再阐述,贴上传送门
今天重点介绍如何利用Charles进行模拟弱网环境以及修改请求返回值。
模拟弱网环境
模拟弱网环境简单粗暴,只需两步即可,直接上图。
选择 Proxy
→ Throttle Setting
→勾选上 Enable Throttling
→ 选择Throttle Preset 类型即可
如果只想模拟指定网站的慢速网络,再勾选图中的Only for selected hosts
项,然后在对话框的下半部分设置中add指定的 hosts 项。
修改请求返回值
在App开发过程中,到了和后台联调过程阶段,经常会遇到后台数据返回不全、请求参数需要修改等情况。如果每次都在app端修改,或者反复依靠后台人员处理数据,只会增加工作量,而且每次都要重新运行app,浪费时间。
所以我们就可以使用Charles,对app进行抓包,请求断点,修改请求与返回的数据,重新发送请求,以满足我们的需求。
1、打断点
找到要修改返回值的接口打断点:右击接口→选择Breakpoints
设置断点完成后,再次请求时会自动进入到调试模式。进入断点后点击Edit Request
,然后点击右下角Execute
。
此时再次点击Edit Request
,然后点击底部JSON Text
,即可看到返回的报文,针对自己想要的字段进行修改
需要注意的是,通过断点的方式修改返回值会存在一定的问题:数据被拦截后,客户端的请求超时时长是不会停止计算的,如果没在设置的超时时间内返回数据本次请求也就按失败处理了。
2、映射
Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。
Map Local 本地映射
首先找到接口,右击→选择Save Response
,将网络请求返回的报文保存在本地,切记一定要记住保存的目录,后面还要用到。
保存完后本地可以进行修改,设置自己想要的返回值。
然后再次右击接口,选择Map Local
,通过Choose
导入本地文件。
Map Remote 远程映射
同样找到接口,右击→Map Remote
填入具体的参数即可
3、Rewrite
Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。选择Tools
→Rewrite
至此介绍了通过Charles提供的Map、 Rewrite 以及Breakpoints来修改服务器返回内容。这三者在功能上的差异是:
- Breakpoints 功能适合做一些临时性的修改。
- Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
- Rewrite 功能适合对网络请求进行一些正则替换。
Charles模拟弱网环境和修改网络请求返回报文今天就介绍的这里。关于Charles其他功能后续会陆续推出,敬请关注。
更多技术知识请关注公众号
iOS进阶