Charles抓包和Mock数据的方法

时间:2024-04-01 13:49:51

1.安装软件

百度搜索charles,第一个地址官方链接了:https://www.charlesproxy.com

如果没安装java环境,首次进入charles会提示需要安装java包,下一个java包就可以了。

安装后,长这样的。

Charles抓包和Mock数据的方法

打开软件。


2、设置网络

a、查询电脑的IP地址

Window使用快捷键win+R进入运行窗口,输入cmd,再输入ipconfig

MAC在终端里输入ifconfig,注意是“f”,不是“p”(Mac端调起终端的方法见另一篇:http://blog.csdn.net/alice_tl/article/details/75905103

b、将移动设备和电脑设备设置为同一个网络

Charles抓包和Mock数据的方法

Charles抓包和Mock数据的方法

c、设置移动设备的网络代理

进入无线局域网的高级设置页面,找到HTTP代理字样。

选中手动代理,并在服务器中填自己电脑查到的ip地址,然后把端口调8888,最后点击左上角返回。

Charles抓包和Mock数据的方法

返回值后系统会自动设置代理重新连接,这样操作的目的是为了让手机就经过电脑上网。


e、用手机打开一个联网的程序,电脑上会显示一个弹窗问【allow】还是【deny】,点allow。

Charles抓包和Mock数据的方法

之后手机发出的每一个请求都会被拦截到电脑上,使用charles看见。


2.拦截某个软件的接口数据

拿个APP举例。手机上启动一个只要是需要联网的操作的app,进入一个产品详情页面

请求和返回字段信息如图。

Charles抓包和Mock数据的方法 Contents的内容即为请求传参内容,比如APPID、DeviceID、OS和OSversion等一看就很好理解。

下方json格式的字段信息及服务端返回的信息,Response


另外这里可以看到接口名称,并且双击可以拷贝下来。

Charles抓包和Mock数据的方法


对于 https 的请求,如果发现拦截到的是乱码,需要设置 SSL Proxying Settings,将对应的域名或及端口添加进去,*:*也可,如图:

Charles抓包和Mock数据的方法


3.mock返回的数据


这个页面本来应该返回的字段信息是这样的:

Charles抓包和Mock数据的方法

手机上展示一个名称叫“产品说明书”的文本,点击后可以跳转到这个链接

Charles抓包和Mock数据的方法

a、选择想要mock数据的接口设置断点,如图:

Charles抓包和Mock数据的方法  

b、设置了断点后,再次触发访问该接口。

c、先会弹出页面问是否要修改request,即是否修改请求的传参。

此时不需要修改请求参数,可以直接点击“Execute”执行

d、接着会弹出Response修改的页面,点击Json Text

Charles抓包和Mock数据的方法

这里的有好几种查看的方式,但是推荐使用JSON Text看的比较清楚。 

e、现在我们对拦截回来的数据进行修改,把返回的跳转链接改成https://www.baidu.com,然后点击“Execute


更改后的数据就会像正常返回回来的数据那样显示到,APP的页面上展示。点击后就跳转到www.baidu.com页面了。

Charles抓包和Mock数据的方法


那么一般情况下,什么时候会用到mock数据测试呢。

1、测试接口的时候,模拟接口返回的不同信息,为空,或者不同code

举个例子:比如有个订单状态接口 orderstate,有已支付、待支付、已关闭等多个状态返回,如果是在没有mock的情况下,我们需要实际造多个状态的订单数据,甚至去修改数据库订单字段状态来看前端订单显示情况。
但是利用Charles的Mock方法,可以打断点,截取接口返回的response的json数据,进行一些模拟:比如
订单接口返回不同状态时对应前端的展示
订单接口返回状态为空时对应前端的展示
订单数据出现异常时对应前端的展示
订单接口请求超时对应前端的展示

2、测试页面展示以及兼容的时候,想知道某一个字段内容长或者短,或者是空白的时候怎么展示,或者一个图片尺寸大了或者小了怎么展示
拿刚才看到的name“产品协议”文本举例,可以通过断点及模拟返回的数据,进行一些模拟测试
文本内容为空时对应前端的展示
文本内容包含特殊字符时对应前端的展示
文本内容较长超出一行时对应前端的展示

3、定位前后端问题的时候,更直观

比如当前端点击跳转没有反映时,可以将链接地址拷贝到浏览器中看看是否打开,看是地址本身的问题,还是前端无法调起手机浏览器的问题