拦截在Gmail中发送邮件AJAX请求

Rui*_*ang 19 javascript ajax gmail

我正在尝试将回调附加到Gmail中的"发送邮件"ajax操作.我已经能够根据请求有效负载区分发送邮件操作与其他AJAX操作,但无法挂钩到实际的AJAX调用.

到目前为止,我已尝试使用重写XMLHttpRequest.open()方法,如此处所述.这没效果.我也尝试重写XMLHttpRequest.send().也失败了.

有什么想法吗?非常感谢提前.

Joe*_*ard 8

Google的诀窍是他们从iframe内部发送请求,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) {}
});
Run Code Online (Sandbox Code Playgroud)

您可能希望使用MutationObserver可靠地检测新添加的iframe.