使用Javascript拦截或捕获Ajax调用

使用Javascript拦截或捕获Ajax调用,javascript,Javascript,有没有可能创建一个Javascript并将其包含在一个web页面中,该JS的功能是“捕获”所有GET请求或页面上任何其他Javascript发出的任何其他Ajax调用?要么记录它,要么干脆在警报框中显示它 将执行GET或Ajax调用的“其他JavaScript”是任意的。我的意思是,我无法控制它是什么 一旦抓到,我需要检查哪个Javascript执行哪个GET或Ajax调用 这可能吗 试试这个片段。它扩展了send功能,以便您可以在实际发送之前或之后执行某些操作 XMLHttpRequest.p

有没有可能创建一个Javascript并将其包含在一个web页面中,该JS的功能是“捕获”所有GET请求或页面上任何其他Javascript发出的任何其他Ajax调用?要么记录它,要么干脆在警报框中显示它

将执行GET或Ajax调用的“其他JavaScript”是任意的。我的意思是,我无法控制它是什么

一旦抓到,我需要检查哪个Javascript执行哪个GET或Ajax调用


这可能吗

试试这个片段。它扩展了
send
功能,以便您可以在实际发送之前或之后执行某些操作

XMLHttpRequest.prototype.reallySend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(body) {
    // Do something...
    this.reallySend(body);
};
var req = new XMLHttpRequest();
req.open("GET", "any.html", true);
req.send(null);
const nativeOpen=XMLHttpRequest.prototype.open;
const proxiedOpen=函数(){
if(参数[1]。包括('youUrl.com')){
//做一些。。。
}
nativeOpen.apply(这个,参数);
};
参考答案:


调试时需要这个吗?所有主流浏览器都内置了这个功能。目前看来,使用普通Javascript并不容易,也许我可以使用浏览器插件,但是Firebug没有显示是哪个Javascript启动了GET方法,例如……但我的要求并不是真正用于调试,但对于实际的应用程序功能…但我的要求不是真正的调试,而是实际的应用程序功能。然后测试@Jasd的解决方案。这可能是正确的方向。虽然您必须确保您的代码在第一个ajax请求之前运行。这很有效,我能够捕获ajax调用,但是我没有捕获我所期望的HTML请求,可能是因为它不是ajax调用,您知道如何截获由Javascript引起的GET事件吗?@xybrek您可以将此方法用作模板。你要做的是熟练掌握javascript发出请求的每一种方法(例如图像对象、
-元素等等)。@xybrek不幸的是,我不知道这样的事件。也许最好按照Yoshi的建议为每个可能导致浏览器发出请求的元素实施解决方案。@Yoshi您能为您的方法提供一些示例吗?@xybrek类似的问题:希望它能帮助您回答一个8年前解决的问题吗…?我搜索了相关问题,找到了这个问题,所以。。。,更多的参考答案不是坏事。