Fiddler
Fiddler工具大家都应该比较熟悉了,这里主要总结Fiddler断点修改数据的一些相关知识点。
断点
个人总结为什么需要对网络断点,有以下几种作用:
- 查看实时数据流的内容,包括http的header、payload等参数
- 修改请求数据流的内容,伪造数据包
- 修改返回数据流的内容,发起中间人攻击
Fiddler中断点的设置可以是请求前(Before Request)或者响应后(After Response),设置断点的主要作用是可以进行请求内容或者响应数据的修改
设置断点方式有很多可以对所有请求进行设置,也可以针对某一个或者某一类请求进行设置断点
可视化操作断点
Fiddler可以通过界面上的选项完成全部网络请求断点拦截,操作方式Rule->Automatic Breakpoints->Before Requests 如下:
注意:该操作会将所有网络请求断点,如果是异步请求,可能同时出现多个拦截请求。如果设置为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
在如下控制台输入指令如下:
当检测到URL中包含在控制台输入的字符时,即可将该次链接断点拦截。Tunnel To等无意义链接也会被拦截。
脚本断点
上述指令断点已经能够解决我们大部分需求,但是在实际使用中,我们的需求多种多样,比如需要修改header参数等,这里我们可以使用Fiddler自带的脚本来自定义需要修改什么。
Fiddler脚本就是Fildder Script,如下所示:
通过使用Fiddler Script,我们可以重写上述的全局断点和指令断点。Fiddler Script是利用JScript.NET的语言来定制化抓包需求,语法与.NET系列的C#一致。
Fiddler Script中通过
static function OnBeforeRequest(oSession: Session)
static function OnBeforeRequest(oSession: Session)
两个方法来进行定制,与指令的bpu
和bpafter
作用一致,利用如下字段可以完成拦截:
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模块。
总结
太刑了,日子越来越有判头了,仅此抛砖引玉。
参考
- fiddler中如何进行断点设置 https://blog.csdn.net/z917185537/article/details/117676973
- 掌握Fiddler中script用法,你会有多牛逼 https://zhuanlan.zhihu.com/p/360849263
评论区