fiddlerはリクエストデータを保存し、自分のサーバインタフェースに送信する

2847 ワード

fiddlerを開くcrtl+rを押してfidder scriptを開く
fiddler 保存请求数据并发送到自己的服务器接口_第1张图片
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);
}

効果は次のとおりです.
fiddler 保存请求数据并发送到自己的服务器接口_第2张图片
最後に自分で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は相応の要求を遮断してデータをサーバーに送信して、サーバーは解析を行います.