【抓包09】利用Charles修改服务器返回内容

一、修改服务器返回内容

有些时候,想让服务器返回一些指定的内容,方便调试一些特殊情况。例如:列表页面为空的情况;数据异常的情况;部分耗时的网络请求超时的情况;等等。

Charles提供了三个功能可以达到修改服务器返回内容的目的,分别是:Breakpoints 功能、Rewrite 功能、Map 功能。这三者在功能上的差异如下:

1、Breakpoints 功能:适合做一些临时性的修改;

2、Rewrite 功能:适合对网络请求进行一些正则替换;

3、Map 功能:适合长期地将某一些请求重定向到另一个网络地址或本地文件。

二、Breakpoints 功能

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

下图是 临时修改获取小区公告信息的 API ,对此 API 返回的内容进行修改的方法如下:

1、对特定的 API 开启 Breakpoints 功能,会发现菜单栏的 Breakpoints 图标已亮起。

【抓包09】利用Charles修改服务器返回内容_第1张图片

2、客户端刷新页面,此时不修改请求内容,直接点击 “Execute” 发送网络请求。

【抓包09】利用Charles修改服务器返回内容_第2张图片

3、进入修改返回内容页面,对小区的公告信息修改后,点击“Execute” 发送返回内容到客户端。

【抓包09】利用Charles修改服务器返回内容_第3张图片

----温馨提示----

使用 Breakpoints 功能将网络请求截获并修改的整个过程中,这个整个网络请求的计时并不会暂停,所以长时间的暂停可能会导致客户端的请求超时。

例如:客户端的请求时间设定为10s,若超过10s还处于修改状态中,则客户端会提示"网络请求超时"。

三、Rewrite 功能

Rewrite 功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。Rewrite 功能非常强大,可以重写接口所有的元素内容,例如:修改请求的 header、url、host、path、query_param、response_status、body 。

例如:修改 request 或 response 的 body

有这么一个接口:http://api.door-dev.luckeylink.com/user/detail,需要把服务器返回内容中含有 “测试” 的字样全部替换成 “test”,方法如下:

1、菜单栏选择 Tools -> Rewrite ,在打开的对话框中勾选上 “Enable Rewrite”,在左侧点击 “Add”,如下图:

【抓包09】利用Charles修改服务器返回内容_第4张图片

2、在右上侧,在 Name 栏可以对此进行命名,在 Location 栏点击 “Add”,在弹出的 Edit Location 对话框中,填入相关参数点击 OK 即可,如下图:

【抓包09】利用Charles修改服务器返回内容_第5张图片

3、在右下侧,在 Rules 栏点击 “Add”,在弹出的 Rewrite Rule 对话框中,填入相关参数点击 OK 即可,如下图:

【抓包09】利用Charles修改服务器返回内容_第6张图片

----温馨提示----

注意编码转换的问题。

4、最后,点击 “Apply” 和 “OK”,重新发起请求,修改的内容即生效,如下图:

【抓包09】利用Charles修改服务器返回内容_第7张图片

设置修改类型,Charles提供了多种类型的修改:

    Add Header:请求中增加请求头

    Modify Header:修改请求头

    Remove Header:删除请求头

    Host:修改指向

    Path:修改路径

    URL:修改请求地址

    Add Query Param:增加请求参数

    Modify Query Param:修改请求参数

    Remove Query Param:删除请求参数

    Response Status:修改返回值的HTTP状态值,如:404

    Body:修改返回值的详细内容

四、Map 功能

Map 功能分为 Map Remote 和 Map Local 两种方式:

(1)Map Remote 是将指定的网络请求重定向到另一个网络请求地址;

(2)Map Local 是将指定的网络请求重定向到本地文件。

在菜单栏中,选择 Tool -> Map Remote 或 Map Local 即可进入相应功能的设置页面,如下图:

【抓包09】利用Charles修改服务器返回内容_第8张图片

对于 Map Remote 功能,可以将测试环境的域名重定向到线上域名,方法如下:进入Map Remote Settings对话框,勾选 “Enable Map Remote”,点击 “Add”,在弹出的 Edit Mapping 对话框中,分别填写好测试环境和线上环境的域名,重新发起请求即可。

【抓包09】利用Charles修改服务器返回内容_第9张图片
【抓包09】利用Charles修改服务器返回内容_第10张图片

对于 Map Local 功能,需要填写重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,可以使用 “Save Response” 功能,方法如下:

1、选择需要模拟数据的接口,右键,选择 “Save Response”

【抓包09】利用Charles修改服务器返回内容_第11张图片

2、先保存接口返回的信息到本地, 接着可以对该信息进行任意修改。比如:修改电话号码,如下图:

【抓包09】利用Charles修改服务器返回内容_第12张图片

3、设置接口访问时,返回的数据指向本地的文件。设置完成后,再次访问此接口,返回的内容则更新为本地文件的内容。

【抓包09】利用Charles修改服务器返回内容_第13张图片
【抓包09】利用Charles修改服务器返回内容_第14张图片



- End -

若有错误,请随时指正。也欢迎大家一起讨论,让我们野蛮成长!

你可能感兴趣的:(【抓包09】利用Charles修改服务器返回内容)