有没有办法用Javascript阻止HTTP请求?

时间:2017-05-19 09:06:43

标签: javascript http

最终我要找的是一种在给定浏览器标签上实际阻止所有网络流量的方法。因此,我不知道阻止HTTP请求是否会阻止流式传输视频和内容,但这只是一个开始。

这个问题的原因是我已经搬到了一个发展中国家,网络昂贵,而且我对那些在页面显然已经完成加载后继续吸收带宽的网站感到恼火。这包括无限滚动的页面(似乎在新闻网站上变得流行),自动开始播放视频的网站,以及可能在后台运行的任何其他类型的内容。我找不到Chrome扩展程序来关闭/打开标签的互联网流量。我知道可以在开发者工具>下将标签设置为离线。网络,但不断使用该方法进行常规浏览是不切实际的。我希望能够通过热键转换网络流量,甚至在页面加载后自动转换。

我认为我在SO上其他地方找到的以下代码可以拦截HTTP请求。但那时我不知道如何阻止它。

XMLHttpRequest.prototype.send = function() {
  //what now?
}

还有一件事。在我阻止所有请求后,如何重新启用它们? (如何安全地将XMLHttpRequest.prototype.send还原为原始形式?)我想我可以尝试在变量中捕获原始函数并重新附加"它稍后,但对于需要克隆的对象,我不能使用像jQuery这样的库。我刚试过:

bob = Object.create(XMLHttpRequest.prototype.send)
XMLHttpRequest.prototype.send = function() {
  console.log("Nope.")  
  return false
}
XMLHttpRequest.prototype.send = bob

但这似乎不起作用。

1 个答案:

答案 0 :(得分:2)

您只需添加return false,这将阻止每个.send()方法。

工作小提琴(用于代码测试) https://jsfiddle.net/L77cwcgb/

实际摘录:

XMLHttpRequest.prototype.send = function() {
  return false;
}