使用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将数据整理、过滤、统计。