使用Fiddler复制并转发http响应数据

1.安装Fiddler

2.编辑FiddlerScript,增加拦截判断

Goto OnBeforeResponse,跳转到指定函数,在函数中添加拦截某些http代码,如下。

        if (oSession.fullUrl.Contains("/api/review-opinion/list")) {
            // FiddlerApplication.Log.LogString(oSession.GetResponseBodyAsString())
            var _xhr = new ActiveXObject('Microsoft.XMLHTTP');
            var url =  'http://localhost:5000/save';
            _xhr.onreadystatechange = function() {}
            _xhr.open('POST', url, true);
            _xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            _xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
            _xhr.send( oSession.GetResponseBodyAsString());
        }

拦截后,通过http请求,将响应数据转发给另外一个服务,专门负责数据保存。

3.编写数据接受服务

使用Flask搭建服务,新建server.py文件:

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'hello world 1'


@app.route('/save', methods=['POST'])
def register():
    print(request.headers)
    rep = str(request.stream.read(), encoding="utf-8")
    print(rep)
    import uuid
    id = str(uuid.uuid4())
    file = open('data/review-' + id + '.json', 'w', encoding='utf-8')
    file.write(rep)
    file.close()
    return 'welcome'


if __name__ == '__main__':
    app.run(port=5000, debug=True)

启动服务:
python server.py

4.捕获请求

Fiddler中按F12或者点击File-Capture Traffic,刷新浏览器,触发请求。查看数据保存目录,已经存入多个json文件。

5.解析数据

使用python读取每个json文件,使用jsonpath库解析,后面使用pandas将数据整理、过滤、统计。

posted @ 2022-06-25 15:52  风雨咒之无上密籍  阅读(1107)  评论(0编辑  收藏  举报