如何使用 JavaScript 阻止来自某个 URL 的请求?例如,在 Chrome 上执行此操作的手动方法是打开检查页面,进入网络并从那里阻止。但我需要阻止来自某些 URL 的请求,以进行我用 JavaScript 编写的自动化测试(使用 testcafe,如果这提供任何帮助的话)。
以下是手动阻止来自 chrome 的请求的屏幕截图,我想在我的测试/JavaScript 中自动执行相同的操作:
谢谢你。
编辑: 我厌倦了这篇文章:Chrome 中的阻止请求 但由于某种原因,当我使用 chrome.webRequest
时,我总是收到一个错误,指出 chrome 未定义您可以使用nock库,它允许您拦截请求并根据您的意愿进行处理。
要实现这一目标,您需要拦截并阻止来自响应页面的加载广告的请求。 您正在寻找的是
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 了解如何安装它。