参考文献:
【web/app】charles抓包https/模拟弱网/设置断点/修改接口请求值或返回值/压测 - 别打雷 - 博客园
Charles Web Debugging Proxy • HTTP Monitor / HTTP Proxy / HTTPS & SSL Proxy / Reverse Proxy
Charles抓包https/模拟弱网/设置断点重定向/压测
1、Charles介绍和安装
Charles是一个HTTP和SOCKS代理服务器。其运行机制如下图所示。可以使用它来抓包分析请求和响应数据甚至篡改伪造数据。
Charles的安装比较简单,安装包可以到Download a Free Trial of Charles • Charles Web Debugging Proxy下载。启动Charles之后的界面大致如下图所示。
2、移动APP端抓包
前置条件如下:
- 手机和计算机在同一局域网
- 完成Charles的基本配置,在菜单 Proxy→Proxy Settings→Proxies 中进行如下图的设置。
-
移动APP端抓包的大致步骤如下,以小米手机和iPhone为例
- 在菜单 Help→Local IP Address中查看本地计算机的IP
- 小米手机设置→WLAN设置→选择WIFI,点右边的箭头(有的手机是长按弹出选项框),修改“代理”处的信息,选择“手动”,主机名为上面的本地电脑IP,端口一般默认8888,之后保存即可。
如果你想要抓取手机APP中的HTTPS请求,还需要进行如下的配置。
- 安装SSL证书到手机,在菜单 Help→SSL Proxying→Install Charles Root Certificate on a Mobile Device or Remote Browser 中查看SSL证书下载地址。
- 打开手机浏览器输入chls.pro/ssl ,下载安装证书
- 如果是iOS10以上,需要到 手机设置→通用→关于手机→证书 中信任证书
配置完成手机再次发起请求,这时候你在手机APP上的操作就会被Charles捕获到。
当您第一次从iPhone连接时,您应该在Charles中看到一个提示,要求您允许流量。
如果手机设置了代理,测完之后记得关闭代理,要不然手机无法正常上网。
VPN不与Charles一起工作:在建立VPN连接之前尝试启动Charles。如果在VPN运行时退出并重新启动Charles,则可能需要再次断开和重新连接VPN。
3、限速
在无线测试中,通关网络限速查看页面渲染等效果,能有效保障低速网络下的用户体验和页面性能。Charles可以通过延迟发送或设置接受数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果。
大致操作步骤如下。
- 在菜单 Proxy→Throttle Settings 中配置
- 勾选Enable Throttling后,设置弱网的参数
- 如果不对具体的弱网参数有要求,直接点击ok就可以了
- 面板上的小乌龟图标也可以开启或者关闭 Throtting
(衍生:弱网测试charles配置是一种方法,ios同时自带了弱网测试,开发者选项打开情况下,设置-开发者选项 > Network Link Conditioner 入口,系统已经内置常见网络配置,也可以增加自定义配置。)
4、篡改请求数据
所谓篡改请求数据其实就是在请求发送的途中将其拦截下来,然后修改数据之后再发送到服务器端,机制如下图所示。
比如你想要更改某个接口的request或者reponse的某个字段
- 点击想要操作的接口,右键勾选 Breakpoints
- 从客户端再次请求该接口,charles自动跳转到新的session
- 点击 Edit Request ,Form视图下,可以更改客户端的传参,修改后点击Execute即可执行,第一次只能看到传参并更改,点击执行后可以看到response,此时可以更改返回参数(json模式查看)
- 更改之后再次点击Execute,就可以看到更改后的参数
4,接第三点,如果我想一直存储这个修改后的接口数据,而不是每次都要经过断点呢?——可以用Map Local
Map Local是将指定的网络请求重定向本地文件上
接上,点击更改后返回的request/reponse内容,右键save request/response保存到本地文件夹中
再次点击你要修改的接口,右键点击Map Local,在Map to下的choose里选择刚刚保存的文件
之后再在客户端重新请求接口,就可以发现客户端显示的就是刚刚你修改后的内容
那么如果关闭Map local ,恢复正常请求呢,在 Tools-Map Local 里把enable勾选去掉,或者去掉你想要关闭的文件就可以了
5,压测:重复给服务器发起请求,简单测试服务器的并发处理能力
接口右键,repeat Advanced
iteration 循环次数
concurrency 并发数
附注:
1,
网络环境 | 上/下行带宽(kbps) |
2G | 20/50 |
3G | 330/2000 |
4G | 40000/80000 |
wifi | 33000/40000 |
2,
throttle [ˈθrɑ:tl] 喉咙;节流阀;
certificate [səˈtɪfɪkət] 证书
proxy [ˈprɑ:ksi] 代理服务器; 代表权;
iteration [ˌɪtəˈreʃən] 循环
concurrency [kən'kʌrənsɪ] 并发
3,
根据具体的需求,Charles提供了Map Remote、Map Local、及Rewrite功能,都可以达到修改服务器返回内容的目的,三种的区别分别是:
1.Map Remote是将指定的网络请求重定向到另一个网址上
2.Map Local是将指定的网络请求重定向本地文件上
3.Rewrite是对网络请求进行一下正则替换