当前位置:  开发笔记 > 编程语言 > 正文

如何从Greasemonkey脚本拦截XMLHttpRequests?

如何解决《如何从Greasemonkey脚本拦截XMLHttpRequests?》经验,为你挑选了2个好方法。

我想使用Greasemonkey捕获AJAX请求的内容.

有人知道怎么做这个吗?



1> Sean Anderso..:

接受的答案几乎是正确的,但它可能会略有改进:

(function(open) {
    XMLHttpRequest.prototype.open = function() {
        this.addEventListener("readystatechange", function() {
            console.log(this.readyState);
        }, false);
        open.apply(this, arguments);
    };
})(XMLHttpRequest.prototype.open);

更喜欢在调用时使用apply +参数,因为那样你就不必明确地知道所有打开的参数可能会改变!



2> Paul Dixon..:

如何修改XMLHttpRequest.prototype.open或发送带有替换的方法,这些替换设置自己的回调并调用原始方法?回调可以做它的事情然后调用回调指定的原始代码.

换一种说法:

XMLHttpRequest.prototype.realOpen = XMLHttpRequest.prototype.open;

var myOpen = function(method, url, async, user, password) {
    //do whatever mucking around you want here, e.g.
    //changing the onload callback to your own version


    //call original
    this.realOpen (method, url, async, user, password);
}  


//ensure all XMLHttpRequests use our custom open method
XMLHttpRequest.prototype.open = myOpen ;

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有