fiddler 保存请求数据并发送到自己的服务器接口
搜索OnBeforeResponse 方法,再方法后面添加如下代码:
if (oSession.fullUrl.Contains("/rest/n/")){
//把内容通过ajax http发送其它地方
var _xhr = new ActiveXObject('Microsoft.XMLHTTP');
var url = 'http://127.0.0.1:8000/';
//发送的数据参数
var param = {
result: oSession.GetResponseBodyAsString(),
url: oSession.url,
headers: oSession.oRequest.headers,
form: oSession.GetRequestBodyAsString()
};
var par = '';
for (var i in param) {
var _data = escape(param[i]);
par += par ? ("&" + i + "=" + _data) : (i + "=" + _data);
}
//不需要返回值所以写啦个空回调
_xhr.onreadystatechange = function() {}
_xhr.open('POST', url, true);
_xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
_xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
_xhr.send(par);
}
效果如下:
最后自己再编写一个http接口,接收fiddler post过的的数据即可,我是使用python tornado 编写的一个简易例子
import tornado
from tornado.web import RequestHandler, url
class IndexHandler(RequestHandler):
async def get(self, *args, **kwargs):
pass
self.write({"code": 200})
async def post(self, *args, **kwargs):
print(self.get_argument('result'))
print(self.get_argument('url'))
print(self.get_argument('headers'))
print(self.get_argument('form'))
self.write({"code": 200})
urls = [
url('/', IndexHandler)
]
if __name__ == "__main__":
app = tornado.web.Application(
urls, debug=True
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.bind(8000) # 引用变量值
http_server.start(1) # 多进程启动
tornado.ioloop.IOLoop.current().start()
完整下过如下,使用手机airtest刷动手机,fiddler拦截相应请求发送数据到服务器,服务器进行解析即可。