最近在测试一个活动,参与答题返现金,涉及到钱的话会有很多异常情况,比如说调取财务,微信的接口失败啊,但是这些异常情况,单纯的正常测试无法覆盖到,所以只能打断点,通过更改接口的请求参数来验证。
打断点其实fiddler有有个非常简单的方式:
1.Before Requests ,后台服务器调用接口请求之前打断点,还没有请求到后台的时候,用于修改入参
2、After Response ,后台调用请求之后打断点,用于修改出参
但是这种一旦设置了就是针对所有请求,不方便测试
如上图修改对应的入参或者出参后,点击Run to Commpletion就可以了
像我们平时如果接口参数网关加密的话,直接用解密方法解密修改后在加密放到上面就可以了
划重点:
就像我这次是一个h5的活动,你会发现前端有的时候会调用同一个接口两次,第一次的请求方式是options的,第二次才是真正的post请求。
什么是options的请求呢:
在有很多情况下,当我们在js里面调用一次ajax请求时,在浏览器那边却会查询到两次请求,第一次的Request Method参数是OPTIONS,还有一次就是我们真正的请求,比如get或是post请求方式,查阅相关的资料之后发现,这是浏览器对复杂跨域请求的一种处理方式,在真正发送请求之前,会先进行一次预请求,就是我们刚刚说到的参数为OPTIONS的第一次请求,他的作用是用于试探性的服务器响应是否正确,即是否能接受真正的请求,如果在options请求之后获取到的响应是拒绝性质的,例如500等http状态,那么它就会停止第二次的真正请求的访问。也就是说这样的调用安全性会比较高》
但是如果我用之前全部拦截的方法的话,就会只拦截到options请求的接口,连token,参数都没有,是无用的
下面就是如何通过脚本的方式来拦截呢:
首先fiddler,有一个基于.NET的脚本,我们可以通过修改这个脚本来修改:
下面这里可以作选择:一般就是前两个,响应前和后:
选择后他会跳到对应的方法上,直接加上圈出的这部分代码(取消注释),然后保存,就会生效,值拦截post请求的接口啦。
其他的操作方法就和前面的一样了,附上这部分脚本:
if (oSession.HTTPMethodIs("POST")){
oSession["x-breakrequest"]="breaking for POST";
}
其实官方的文档给出如何使用,下面是我发现的一个 比较实用的文章,有很多其他的脚本,比如只搜关键啊这些:
https://www.zhaokeli.com/article/8089.html
其实我觉的fiddler还有另外一个强大的功能就是模拟弱网环境,发送请求,可以针对这种极端的情况进行测试,下一篇将会介绍。。。。
网友评论