最终,我正在寻找一种在给定浏览器选项卡上实际阻止所有网络流量的方法。所以我不知道阻止 HTTP 请求是否会阻止诸如流视频之类的东西,但这是一个开始。
这个问题的原因是我搬到了一个互联网昂贵的发展中国家,我对在页面显然完成加载后继续占用带宽的网站感到恼火。这包括无限滚动的页面(似乎在新闻网站上越来越流行)、自动开始播放视频的网站以及可能在后台运行的任何其他类型的东西。我找不到 Chrome 扩展程序来关闭/打开标签的互联网流量。我知道可以在 Developer Tools > Network 下将选项卡设置为离线,但是经常使用该方法进行常规浏览是不切实际的。我希望能够使用热键甚至在页面加载后自动关闭网络流量。
我认为我在其他地方找到的以下代码可以拦截 HTTP 请求。但那时我不知道如何阻止它。
XMLHttpRequest.prototype.send = function() {
//what now?
}
Run Code Online (Sandbox Code Playgroud)
还有一件事情。阻止所有请求后,如何重新启用它们?(我如何安全地恢复XMLHttpRequest.prototype.send
到它的原始形式?)我想我可以尝试在变量中捕获原始函数并稍后“重新附加”它,但是对于需要克隆的对象,我不能使用像jQuery这样的库。我刚试过:
bob = Object.create(XMLHttpRequest.prototype.send)
XMLHttpRequest.prototype.send = function() {
console.log("Nope.")
return false
}
XMLHttpRequest.prototype.send = bob
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。
您可以简单地添加一个return false
,这将阻止每个.send()
方法。
工作小提琴(用于代码测试目的) https://jsfiddle.net/L77cwcgb/
实际片段:
XMLHttpRequest.prototype.send = function() {
return false;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7135 次 |
最近记录: |