Chrome 使用JavaScript阻止请求?

nr9pn0ug  于 2023-09-28  发布在  Go
关注(0)|答案(2)|浏览(175)

如何使用JavaScript阻止来自某个URL的请求?例如,在Chrome上手动操作的方法是打开检查页面,进入网络并从那里阻止。但是我需要阻止来自某些URL的请求,以进行我用JavaScript编写的自动化测试(使用testcafe,如果有帮助的话)。
下面是手动阻止来自Chrome的请求的截图,我想在我的test/JavaScript中自动做同样的事情:ScreenShot1

谢谢
编辑:我累了,跟着这篇文章:Blocking request in Chrome但由于某种原因,我总是得到一个错误,指出Chrome是未定义的,当我使用chrome.webRequest

dly7yett

dly7yett1#

您可以使用nock库,它允许您拦截请求并按您的意愿处理它们。

xzabzqsa

xzabzqsa2#

要实现这一点,您需要拦截并阻止来自响应页面的加载广告的请求。您正在寻找的是ad-blocker的核心原理,这可以通过浏览器扩展实现。
因此创建一个manifest.json

{
    "manifest_version": 2,
    "name": "REQblock",
    "version": "2.3.4",
    "permissions": ["webRequest", "webRequestBlocking", "<all_urls>"],
    "background": {
      "scripts": ["script.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();
  var blockedUrls = { urls: list };

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

上面的Chrome扩展将阻止所有从getBlacklistUrls()返回的url。如果你仍然不明白什么是Chrome扩展以及如何加载和启用,请查看我的广告拦截器AdvertShield,网址为github,并按照wiki的说明安装它。
结果将类似于

相关问题