Подтвердить что ты не робот

Перехват отправки почты AJAX-запрос в Gmail

Я пытаюсь подключить обратный вызов к действию ajax "Отправить почту" в Gmail. Я смог отличить действие "Отправить почту" от других действий AJAX на основе полезной нагрузки запроса, но не смог подключиться к фактическому вызову AJAX.

До сих пор я пытался использовать переопределение метода XMLHttpRequest.open() в качестве подробного здесь. Это не сработало. Я также попытался переопределить XMLHttpRequest.send(). Также не удалось.

Любые мысли? Большое спасибо заранее.

4b9b3361

Ответ 1

Google трюк заключается в том, что они отправляют запрос из iframe, в котором есть собственная среда JavaScript. Однако, поскольку он загружается из того же источника, что и родительский, вы все равно можете легко манипулировать им даже с консоли браузера:

[].slice.apply(document.querySelectorAll('iframe')).forEach(function (iframe) {
    try {
        var xhrProto = iframe.contentWindow.XMLHttpRequest.prototype;
        var origOpen = xhrProto.open;
        xhrProto.open = function () {
            console.log('DO SOMETHING', arguments);
            return origOpen.apply(this, arguments);
        };
    } catch (e) {}
});

Возможно, вы захотите использовать MutationObserver для надежного обнаружения вновь добавленных iframes.