使用Javascript拦截或捕获Ajax调用

时间:2012-03-29 06:59:47

标签: javascript

是否可以创建一个Javascript并将其包含在一个网页中,该JS的功能是“捕获”所有GET请求或从页面上的任何其他Javascript进行的任何其他Ajax调用?要么记录它,要么只是在警告框中显示它。

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

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

这可能吗?

2 个答案:

答案 0 :(得分:12)

试试这个代码段。它扩展了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);

答案 1 :(得分:0)

const nativeOpen = XMLHttpRequest.prototype.open;

const proxiedOpen = function () {
  if (arguments[1].includes('youUrl.com')) {
    // do some ...
  }
  nativeOpen.apply(this, arguments);
};

参考答案:

Intercept AND CHANGE the results of an ajax call