Charles篡改接口多种用法

作者: 仰望星空_4645 | 来源:发表于2018-10-10 13:22 被阅读991次

很多情况下我们需要对接口的请求参数或返回值篡改,达到直接验证前端针对不同数据的处理展示,这时就需要通过工具来拦截并篡改

charles目前提供了3种方法,Map,Rewrite,Breakpoints

本次文章主要讲解Rewrite的用法,很实用

1、在菜单栏中选择Tools--->Rewrite展示如下界面

图1

需要勾选enable rewrite复选框,点击左下角的Add按钮,添加一个操作名字,在右上角添加add,为想要篡改匹配的接口地址,右下角的地方为篡改的内容

图2

1)location点开是图2样子

protocol:接口协议类型,http或https

Host:主机名或域名

Port:端口号,一般填写*即匹配所有

Path:为接口除去域名后的部分

Query:为传的参数,如果不确定参数传什么或者参数容易变,也填写*匹配所有,一般都能满足需求

2)篡改接口请求参数

图3

上图是修改传递参数(有时候要测试应用中的数据,某些数据无法像网页那样,搜索到对应的数据,只能通过这种方式比较快捷的进入数据页面)

type:modify query param---修改传递参数

name:参数名

value:填写对应参数名的值

match:中要选择要篡改的参数名及参数值

replace:要替换后的参数名及参数值

实现结果:原本要请求45517的数据,真正是请求的45635的数据

3)篡改接口返回值

图4

type要选择body,where要选择response,上图为修改把返回值中的所有2替换成1

4)如果返回值中有多个值都是1,我们只想替换某个可以用下面的正则匹配

图5

最好把匹配的字符前后固定的值都写上,匹配的地方用(.*)来代替,这个实现的效果是把返回值中haveFreeCard:1替换成haveFreeCard:0,而type:1还维持原样,注意要勾选regex

结果如下图

5)修改接口状态,比如把状态200替换成500

图6

type:选择response status,value的值从200改成500,则下次刷新接口,该接口报500

2、三种方式并不是所有场景都适用

1)有些网页中的同一个接口会执行两次,第一次是option操作跨域,这种通过map方式无法实现,可以用rewrite和breakpoints

2)app或小程序等一般会设置超时时间,如5秒没响应就提示超时,这时通过breakpoints方法除非手快,不然执行完肯定过5秒了,可以用map或者rewrite

3)有些接口链接上会加时间戳这个东西,导致同一个接口每次请求时间戳都不相同,这是不管用哪种操作都要在它的上级目录操作,不然拦截不到

4)有时服务器做了接口防止篡改的方式验证,这种通过3种都认证失败了,后续会研究该种情况怎么实现拦截篡改,目前没想到好的解决办法

相关文章

网友评论

    本文标题:Charles篡改接口多种用法

    本文链接:https://www.haomeiwen.com/subject/mmspaftx.html