通过fiddler脚本逆序排列文件列表
本帖最后由 生有涯知无涯 于 2020-2-15 18:19 编辑由于工作原因,需要把上图所示的待办文件按接收时间逆序排列(即把最早收到的文件排到第一个,现在的情况是最新收到的文件排在第一个),尝试点击“接收时间”排序后发现只有一种方式,并不能满足需求,所以问了工程师能不能增加一种排序方式,然而我已经预测到了会回答不能{:1_911:}(我跟工程师提过几次需求,没一次能解决,全是自己搞定的,无语。。。,因为OA是人家公司做的,签维保合同时只能和做系统的公司签,所以人家不做也没办法)
先F12调试一下看看什么情况
大致翻一下,可以发现gettodolist这个可疑项,从字面看是“获取待办列表”的意思,点开看看响应数据:
果然是。把JSON数据格式化一下:
结构一目了然。total是待办文件的总数,content是一个文件信息的列表,ROW_NUM应该是该文件所在的行数,所以,现在的思路如下;
1.拦截访问http://172.16.61.237/spring/officeList/getTodoList时服务器返回的JSON数据
2.把数据中的content里的内容逆序排列,然后把每个文件信息的ROW_NUM从1赋值到total
开始之前,需要考虑一个问题:ROW_NUM是否决定了文件所在行呢?用fiddler拦截一下手工修改数据就知道了,答案是肯定的,我已经试过了。
下面开始编写程序。
fiddler脚本可以用两种语言编写,这两种我都没学过,所以就先查了下哪种语言参考资料较多就选用哪种,我选的是C#,由于本人python用的比较多,所以处理数据的部分用python实现。
要拦截响应数据,所以Go to那里选择第二项,会跳转到相应代码处
然后在OnBeforeResponse函数内添加如下代码:
if(oSession.fullUrl.Contains("getTodoList")){//判断URL中是否含getTodoList
//FiddlerObject.alert(oSession.fullUrl);
var responseStr = oSession.GetResponseBodyAsString();//获取响应数据
//FiddlerObject.alert(responseStr);
System.IO.File.WriteAllText(@"C:\filedata.json", responseStr);//把响应数据写入文件
Process.Start("C:\\reverselist.vbs");//调用python程序处理数据
Thread.Sleep(1000);
var alterJsonStr = System.IO.File.ReadAllText(@"C:\filedata.json");
oSession.utilSetResponseBody(alterJsonStr); //把修改后的数据写回,实现篡改
}
reverselist.vbs:
set ws = createobject("wscript.shell")
ws.Run "D:\software\py\python.exe C:\reverselist.py",0
reverselist.py:
# -*- coding: UTF-8 -*-
import json
with open('C:\\filedata.json', 'r',encoding='UTF-8') as f:
data = json.load(f)
contentlist = data["content"]
contentlist.reverse()
num = 1;
for fileObject in contentlist:
fileObject["ROW_NUM"] = num
num = num + 1
data["content"] = contentlist
with open('C:\\filedata.json', 'w') as f:
json.dump(data, f)
测试一下,成功:
还有你们单位的维保真叼。。。我也搞维保。我们给一个单位的网络部门维保。擦各种系统屁股,不是我们写的我们也帮忙。。。中控考勤机的oa系统有一个功能后台特殊字符没有过滤,导致系统崩溃。也是我们一点点排查到原因,然后去改前端JS,加强验证功能(没办法后台代码木有)。。。类似情况很多。总之,客户给出问题,我们基本上都说没问题! pk8900 发表于 2020-2-15 20:08
浏览器的话,好像写个油猴脚本更实用。
每次要开fiddler确实有点烦。我还没写过油猴脚本,改天研究一下 我觉得挺好的,挺不错的!对于Fiddler有开阔眼界了! Fiddler也算是神器 就是不知道长期经过他代{过}{滤}理 会不会产生过多记录 大佬,你们的系统叫什么名字啊 第一次见fiddler这么用,又学到了,下来研究下{:1_921:} 偶遇大神:lol 第一次知道fiddler可以这么用 虽然我不懂,但是觉得好厉害 很经典的一款抓包工具