侧边栏壁纸
  • 累计撰写 47 篇文章
  • 累计创建 22 个标签
  • 累计收到 27 条评论

目 录CONTENT

文章目录

工具介绍01 Fiddler断点介绍

vchopin
2022-05-18 / 0 评论 / 0 点赞 / 218 阅读 / 2,125 字

Fiddler

Fiddler工具大家都应该比较熟悉了,这里主要总结Fiddler断点修改数据的一些相关知识点。

断点

个人总结为什么需要对网络断点,有以下几种作用:

  • 查看实时数据流的内容,包括http的header、payload等参数
  • 修改请求数据流的内容,伪造数据包
  • 修改返回数据流的内容,发起中间人攻击

Fiddler中断点的设置可以是请求前(Before Request)或者响应后(After Response),设置断点的主要作用是可以进行请求内容或者响应数据的修改
设置断点方式有很多可以对所有请求进行设置,也可以针对某一个或者某一类请求进行设置断点

可视化操作断点

Fiddler可以通过界面上的选项完成全部网络请求断点拦截,操作方式Rule->Automatic Breakpoints->Before Requests 如下:

image-1652851922839

注意:该操作会将所有网络请求断点,如果是异步请求,可能同时出现多个拦截请求。如果设置为disabled,则不进行断点操作。

断点指令

上面的断点方式会将所有网络全部拦截,但是在实际上我们抓取请求或者需要修改数据的时候,通常只是对一个指定的链接或者ip地址进行断点。因此,我们更多的时候更想要单独指定断点的链接。这个时候我们可以用断点指令来完成。
断点指令分为以下几种:


bpu URL:中断包含指定字符的URL,中断发生在client发出请求,但是server还没有收到

bpafter URL: 中断包含指定字符的URL,中断发生在server已经response,但是client还没有收到

bps URL: 中断 HTTP 响应状态为指定字符的全部 session 响应

bpv URL: 中断指定请求方式的全部 session 响应

bpm URL: 中断指定请求方式的全部 session 响应与 bpv 类似

注:URL检测是contain

在如下控制台输入指令如下:
image-1652852584611

当检测到URL中包含在控制台输入的字符时,即可将该次链接断点拦截。Tunnel To等无意义链接也会被拦截。

脚本断点

上述指令断点已经能够解决我们大部分需求,但是在实际使用中,我们的需求多种多样,比如需要修改header参数等,这里我们可以使用Fiddler自带的脚本来自定义需要修改什么。
Fiddler脚本就是Fildder Script,如下所示:
image-1652852945899
通过使用Fiddler Script,我们可以重写上述的全局断点和指令断点。Fiddler Script是利用JScript.NET的语言来定制化抓包需求,语法与.NET系列的C#一致。
Fiddler Script中通过

static function OnBeforeRequest(oSession: Session)
static function OnBeforeRequest(oSession: Session)

两个方法来进行定制,与指令的bpubpafter作用一致,利用如下字段可以完成拦截:

oSession["x-breakrequest"]="uri"; //主要是对oSession对象设置x-breakrequest字段,后面字符串可以按照需求自由定制

只要通过if判断传入的数据流的URL或者URI是否是需要拦截的数据流,我们就可以实现全局断点或者部分断点。

脚本自动修改数据流

我们对上面的脚本进行拓展,可以自由定制当发现需要的网络流时,需要做的修改。比如当发现来自百度的连接,将其中的图片全部替换为Google的图片等操作。我们这里简要演示对于发起请求Request中的Json参数进行修改。
代码如下:

if (oSession.fullUrl.Contains("xxdati.com")){
     var responseStringOriginal = oSession.GetRequestBodyAsString();
     var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);
     responseJSON.JSONObject['answer']['answerTime'] = "2";
     var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);
     oSession.utilSetRequestBody(responseStringDestinal);
}

通过这样,我们可以将每次发送的网络json请求参数中的answer下面anserTime修改为2,这样每次答题时间都变成了2。当然为了增强健壮性,可以增加Random模块。

总结

太刑了,日子越来越有判头了,仅此抛砖引玉。

参考

  1. fiddler中如何进行断点设置 https://blog.csdn.net/z917185537/article/details/117676973
  2. 掌握Fiddler中script用法,你会有多牛逼 https://zhuanlan.zhihu.com/p/360849263
0

评论区