使用抓包工具 Fiddler 或 Charles 修改后台接口返回数据

1 前言

抓包工具的核心原理是代理转发机制,抓包工具在客户端和服务端之间充当代理人的角色。当客户端向服务端请求数据时,客户端先将请求发给抓包工具,然后抓包工具将请求转发给服务器进行网络请求,这个时候抓包工具相当于客户端;当服务端数据响应数据后,先将数据返回给抓包工具,然后抓包工具将响应数据转发给客户端,这个时候抓包工具相当于服务端。因此,抓包工具需要做的事情就是对客户端时将自己伪装为服务端,对服务端时将自己伪装为客户端

在客户端开发过程中,经常需要与后台打交道,既然如此,就需要有后台接口数据。但是我们常常会遇到下面这些尴尬的场景:由于客户端和后台是并行开发的,开发初期后台只是定义了接口,但是要到联调的时候才能给出数据;有时候我们想修改后台返回的数据来验证客户端某些功能是不是完好的(比如列表数据返回空,来验证空占位页的情况);抑或有时候后台返回的数据并不是我们所想要的,我们就需要使用抓包工具来修改后台返回的数据,为所欲为~~~hhhh

2 本地文件映射方式

下面的操作主要以 Fiddler 抓包工具为例。Charles 工具里面的 Map Local 操作也是类似的,都是基于本地文件映射

首先确定要修改哪个接口,比如这里我需要修改接口:XXX/psyapi/recommend/recForYou.do
未修改时该接口的返回结果如下图所示:

![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTgwMTA1MjEyODAwNjYx?x-oss-process=image/format,png)

list里面有三个条数据,如果我要删除最后一条数据,操作步骤如下:

先将服务端返回的 json 数据复制到本地 txt 文本中,随便命名,如local_json.txt,文件如下:

![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTgwMTA1MjEzMjUwMjEy?x-oss-process=image/format,png)

在 Fiddler 左侧面板左键单击选中要修改的接口XXX/psyapi/recommend/recForYou.do,将右侧面板中切换到AutoResponder选项视图,选中前面2个复选框,并将本地 json 文件的绝对路径键入到最下方的输入框中,最后点击Save按钮即可。如图所示:

![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTgwMTA1MjE0NzE4NzQy?x-oss-process=image/format,png)

现在再请求该接口,你会发现后台返回结果就是跟本地文件内容一样的了。惊不惊喜~


3 断点拦截方式

上面通过本地文本替换的方法,的确可以很方便得修改后台接口返回数据,但是有时候如果仅仅是想修改接口返回数据中一两个数据,使用这种方法未免有点小题大做。这种情况下,有没有更好的方法呢,答案是肯定的,那就是 Fiddler 的断点工具,如 请求前断点(before response, bpu)。在 Fiddler 最下方的黑色输入框中输入 bpu xxx(要断点的url),按 enter 就行,当走到该接口的时候, 会发现该接口最前面有个红色的爬虫标识:

这里写图片描述

单击左边面板中的接口,在右边面板中出现如下:
点击黄色的 Break on Response按钮,在 TextView中就可以看到接口返回的数据,这些数据是可以修改的,比如 可以将userUnreadMessageCount":7 修改为userUnreadMessageCount":6等等,修改好后,点击绿色的 Run to Completion即可。

这里写图片描述

修改后的结果如下:

这里写图片描述

可以看到,这种方式有时候会比本地文件映射的方式更方便。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章