《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(10)-Charles如何修改请求参数和响应数据-下篇

 一、 简介    

宏哥之前一直用postman调接口比较多(web端),也非常容易上手和操作。但有时候想要去修改APP的页面展示,造数据又会比较麻烦,你自己造相对还好些,要是让开发造,还得低眉顺眼的去求人。通过今天的学习后,再也不担心这些烦心事。我们可以通过工具Charles就可以实现。可以用以下三种方法修改请求参数或修改响应:map(映射)、Breakpoints(打断点)、Rewrite(重写)。

如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a

二、修改请求参数 或者响应数据  

Charles设置断点的具体操作步骤如下:根据具体的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:

Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。只能修改返回数据。

Rewrite 功能适合对网络请求进行一些正则替换。可修改请求数据和响应数据。

Breakpoints 功能适合做一些临时性的修改。在响应时间内,可修改请求数据和响应数据。

2.1MAP(映射)

Charles的map功能,就是将某个请求进行重定向,然后用重定向后的内容来修改请求内容;map又分Map Remote和Map Local,顾名思义:Map Remote 是将指定的网络请求重定向到另一个网址,Map Local 是将指定的网络请求重定向到本地文件

2.2Rewrite

Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。

2.3Breakpoint

上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。

Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。

三、修改响应内容   

有些时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。如果没有Charles,要服务器配合构造相应的数据显得会比较麻烦。这个时候,使用 Charles 相关的功能就可以满足我们的需求。

3.1Map Local

Map Local的使用场景,要验证接口返回数据的各种场景,使用本地映射可以修改请求接口的response。对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。
具体操作步骤如下:

1.保存接口响应:右键-->save response-->保存到本地路径(最好为json格式)备用,这里还是用自己写的API。如下图所示:

 2.在 Charles 的菜单中,选择 “Tools”–> “Map Local” 即可进入到相应功能的设置页面。如下图所示:

 这种操作稍微有点复杂。或者你可以点击接口-->右键-->Map Local进入Map Edit页面,如下图所示:

 

 3.在Map Local设置页面,勾选“Enable Map Local”,点击“Add”,然后进行配置,配置Map Local path 选择你保存到本地已修改的json文件(我把张三修改成了北京-宏哥)。如下图所示:

4.浏览器访问或者其他接口工具重新发送请求,预期结果返回北京-宏哥与实际结果一样,如下图所示:

 

 

3.2Map Remote

Map Remote的使用场景,要验证接口返回数据的各种场景,使用本地映射可以修改请求接口的response。对于Map Remote 功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空。

具体操作步骤如下:

1.在 Charles 的菜单中,选择 “Tools”–> “Map Remote” 即可进入到相应功能的设置页面。如下图所示:

 

这种操作稍微有点复杂。或者你可以点击接口-->右键-->Map Remote进入Map Edit页面,如下图所示: 

 

2.在Map Remote设置页面,勾选“Enable Map Remote”,点击“Add”,然后进行配置,配置Map From(接口地址:http://10.11.53.193:5566/users/1801)和Map To(映射地址:http://10.11.53.193:5566/users/1803),宏哥将其映射到百度 。如下图所示:

 

3.发送预期结果返回王五实际结果一样,如下图所示:

 

 

3.3Rewrite(重写)

Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。

1.例如,还是用之前API 请求是获得用户账户信息,而我当前的账户是 “张三”返回账户信息是成功:success,如下图所示:

2.我们想试着直接修改网络返回值,将 success 换成 fail。于是我们启用 Rewrite 功能,然后设置如下的规则: 

 

3.勾选“Enable Rewrite”,点击“Add”,然后设置规则,如下图所示: 

4.浏览器访问或者其他接口工具重新发送请求,预期结果返回fail与实际结果一样,如下图所示:

 

3.4Breakpoint(打断点)

上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络响应结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。

Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求返回数据,这个时候,我们可以在 Charles 中临时修改网络请求的返回数据。

打断点修改返回数据的方法已经在上一篇文章中(传送门)进行了详细的介绍,这里宏哥就不做赘述了。

四、小结    

宏哥这里总共介绍了四种设置修改响应内容的方式,一般工作中,我们要根据需要灵活变换方法,而不是一成不变的。好了,今天时间也不早了,讲解和分享就到这里!感谢您耐心的阅读~~

猜你喜欢

转载自blog.csdn.net/m0_73409141/article/details/131880279