使用 Javascript 阻止请求?

问题描述 投票:0回答:2

如何使用 JavaScript 阻止来自某个 URL 的请求?例如,在 Chrome 上执行此操作的手动方法是打开检查页面,进入网络并从那里阻止。但我需要阻止来自某些 URL 的请求,以进行我用 JavaScript 编写的自动化测试(使用 testcafe,如果这提供任何帮助的话)。

以下是手动阻止来自 chrome 的请求的屏幕截图,我想在我的测试/JavaScript 中自动执行相同的操作: ScreenShot1

谢谢你。

编辑: 我厌倦了这篇文章:Chrome 中的阻止请求 但由于某种原因,当我使用 chrome.webRequest

时,我总是收到一个错误,指出 chrome 未定义
javascript google-chrome testing xmlhttprequest testcafe
2个回答
1
投票

您可以使用nock库,它允许您拦截请求并根据您的意愿进行处理。


0
投票

要实现这一目标,您需要拦截并阻止来自响应页面的加载广告的请求。 您正在寻找的是

ad-blocker
的核心原则,这可以通过浏览器扩展来实现。

因此创建一个

manifest.json

{
    "manifest_version": 2,
    "name": "appname",
    "version": "2.3.4",
    "permissions": ["webRequest", "webRequestBlocking", "<all_urls>"],
    "background": {
      "scripts": ["noads.js"]
    }    
} 

然后创建

script.json

function getBlacklistUrls(){    
    var  urls = [
    "*://cdn.sstatic.net/*",
    "*://*.twitter.com/*",
    "*://*.youtube.com/*"
    ];

    return urls; 
};

(async () => {
  var dummyCallback = function (details) {
    return {
      cancel: true
    };
  };

  var list = getBlacklistUrls();
  //console.log(list);
  var blockedUrls = { urls: list };

  //Add Listener
  chrome.webRequest.onBeforeRequest
    .addListener(dummyCallback,blockedUrls,["blocking"]);
})();

上面的 chrome 扩展将阻止所有从

getBlacklistUrls()
返回的 url。如果您仍然不明白 chrome 扩展是什么以及如何加载和启用,请检查我的广告拦截器 AdvertShield(位于
github
)并按照 wiki 了解如何安装它。

结果会是这样的

© www.soinside.com 2019 - 2024. All rights reserved.