顯示具有 intercept 標籤的文章。 顯示所有文章
顯示具有 intercept 標籤的文章。 顯示所有文章

2016年4月11日 星期一

[JavaScript]Get XMLHttpRequest Traffic

 Case: finding network traffic of a website, can't see relevant in the Console->network in Chrome, dig into code, it is XMLHttpRequest and not log in Console->Network

How: In console add hook into XMLHttpRequest

Code:
var rawOpen = XMLHttpRequest.prototype.open;

XMLHttpRequest.prototype.open = function() {
    if (!this._hooked) {
        this._hooked = true;
        setupHook(this);
    }
    rawOpen.apply(this, arguments);
}

function setupHook(xhr) {
    function getter() {
        console.log('get responseText');

        delete xhr.responseText;
        var ret = xhr.responseText;
        setup();
        console.log('url : %s',xhr.responseURL);
        console.log('ret : %s',ret);
        return ret;
    }

    function setter(str) {
        console.log('set responseText: %s', str);
    }

    function setup() {
        Object.defineProperty(xhr, 'responseText', {
            get: getter,
            set: setter,
            configurable: true
        });
    }
    setup();



Source : http://stackoverflow.com/questions/16959359/intercept-xmlhttprequest-and-modify-responsetext