生有涯知无涯 发表于 2020-2-15 17:35

通过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)


测试一下,成功:



dayer 发表于 2020-2-15 19:54

还有你们单位的维保真叼。。。我也搞维保。我们给一个单位的网络部门维保。擦各种系统屁股,不是我们写的我们也帮忙。。。中控考勤机的oa系统有一个功能后台特殊字符没有过滤,导致系统崩溃。也是我们一点点排查到原因,然后去改前端JS,加强验证功能(没办法后台代码木有)。。。类似情况很多。总之,客户给出问题,我们基本上都说没问题!

生有涯知无涯 发表于 2020-2-15 20:28

pk8900 发表于 2020-2-15 20:08
浏览器的话,好像写个油猴脚本更实用。

每次要开fiddler确实有点烦。我还没写过油猴脚本,改天研究一下

Jackjoily 发表于 2020-2-15 17:44

我觉得挺好的,挺不错的!对于Fiddler有开阔眼界了!

carson512 发表于 2020-2-15 17:50

Fiddler也算是神器 就是不知道长期经过他代{过}{滤}理 会不会产生过多记录

黄河大鲤鱼 发表于 2020-2-15 17:56

大佬,你们的系统叫什么名字啊

virgolong 发表于 2020-2-15 18:19

第一次见fiddler这么用,又学到了,下来研究下{:1_921:}

google815 发表于 2020-2-15 18:20

偶遇大神:lol

qmk 发表于 2020-2-15 18:38

第一次知道fiddler可以这么用

Rod.9800 发表于 2020-2-15 19:07

虽然我不懂,但是觉得好厉害

52ppp 发表于 2020-2-15 19:14

很经典的一款抓包工具

poemrain 发表于 2020-2-15 19:42

页: [1] 2 3 4
查看完整版本: 通过fiddler脚本逆序排列文件列表