抓包工具fiddler都有哪些高级功能,一文带你全面了解它( 四 )

自定义菜单
若我们想加一个自定义的选项,来实现我们的功能,

抓包工具fiddler都有哪些高级功能,一文带你全面了解它

文章插图
 
那么你可以在此选项自定义你的功能,我这里就以打印Hello Fiddler为例,当选择Test选项时,你在日志中就会看到有Hello Fiddler输出 。
//把这段代码放在OnBeforeRequest函数中 。if(m_Test){    //实现你的需求,我这里就打印出"hello fiddler"   FiddlerObject.log("Hello Fiddler");}可以想象一下,如果我在这里定义的功能是实现输出每个请求的自定义请求和响应数据,类似于fiddler的Inspectors功能,是不是很酷啊 。
OnBeforeRequest
这个函数中实现的是请求数据,通过修改代码,就可以实现包括请求url,请求方法,请求头,请求体的数据进行新增、修改、删除、显示等 。
请求着色
为了快速查找我们关注的请求,我们经常会给请求标注某种颜色来加以区分,那么接下来就通过修改代码给每个请求着色 。
比如我们想要给url中含有html的请求加红色,你只需要在OnBeforeRequest函数的开头加入这么一句代码后保存,后续符合条件的请求就都会变为红色
抓包工具fiddler都有哪些高级功能,一文带你全面了解它

文章插图
 
当然你喜欢其它的颜色,你只需把后面的red修改为其它的值就可以了。具体支持哪些值呢?看下图
抓包工具fiddler都有哪些高级功能,一文带你全面了解它

文章插图
 
自定义请求数据
若我们要通过自定义方式查看请求数据,就可以是在OnBeforeRequest函数中加个判断,然后将我们关注的请求数据输出。这就类似于Inspectors的查看请求功能 。
案例:将url中包含demo.zentao.net的请求输出其url,method,headers,body等信息 。
实现思路:在OnBeforeRequest中加入url中包含demo.zentao.net的判断,在判断中编写输出信息代码,保存脚本后。
if(oSession.uriContains("demo.zentao.net")){              FiddlerObject.log("请求url:"+oSession.fullUrl);    FiddlerObject.log("请求方法:"+oSession.RequestMethod);    FiddlerObject.log("请求头:"+oSession.RequestHeaders)    FiddlerObject.log("请求体数据:"+oSession.GetRequestBodyAsString());    FiddlerObject.log("===============================================");}然后在日志上就可以看到输出信息,具体如下:
抓包工具fiddler都有哪些高级功能,一文带你全面了解它

文章插图
 
修改请求数据
在前面我们学习过,通过断点可以修改请求数据,那么通过此函数也可以来实现请求数据的修改。
案例:登录禅道的正确账号demo,那么我通过修改其账号让其登录失败。
实现思路:获取到禅道登录页面的请求体数据后,将登录账号demo替换为其它(如test),保存脚本 。
if(oSession.uriContains("https://demo.zentao.net/user-login.html")){     //将请求中的demo替换为test    oSession.utilReplaceInRequest("demo","test");}替换后,进入到Inspectors中查看输入账号的地方,发现账号已被替换为test了。且禅道的登录页面也返回了登录失败的提示 。
抓包工具fiddler都有哪些高级功能,一文带你全面了解它

文章插图
 
OnBeforeResponse
这个函数实现的是响应数据,你可以在该函数对状态行、响应头以及响应体中的数据进行新增,修改,删除及查询等 。
自定义响应数据
若我们只想查看所关注请求的响应数据,那么就可以在OnBeforeResponse加个判断,然后我们把关注的信息数据输出即可 。
案例:将url中包含demo.zentao.net的响应输出其响应状态码和响应体信息 。
实现思路:在OnBeforeResponse中加入一个判断url包含demo.zentao.net,然后判断实现输出状态码和响应体的输出信息,保存脚本。
if(oSession.uriContains("demo.zentao.net")){              FiddlerObject.log("响应状态码:"+oSession.responseCode);    FiddlerObject.log("响应体数据:"+oSession.GetResponseBodyAsString());}同样的进入日志模块就会看到响应数据的输出日志。
抓包工具fiddler都有哪些高级功能,一文带你全面了解它

文章插图
 
修改响应数据
同样我们也可以对返回的数据进行修改或者自定义返回数据 。


推荐阅读