Я пытаюсь заблокировать запросы с веб-сайта в расширении chrome, которое я создаю.
В настоящее время я использую onBeforeRequest
, чтобы просматривать входящий трафик c и решать, какой те, которые я заблокирую, затем я намерен использовать этот массив в качестве списка фильтров для блокировки на более позднем этапе, например onBeforeSendHeaders
.
Теперь у меня сейчас две проблемы, во-первых, если я реализую его так, как у меня ниже это очень неэффективно, так как на некоторых веб-сайтах есть сотни вещей, что означает, что событие слишком часто присоединяется и отключается.
Во-вторых, если я просто объявляю слушателя в начале, список фильтров не использует обновленная версия - я предполагаю, что когда он регистрируется, он берет копию списка фильтров, а не ссылку на память, я попробовал вместо этого использовать функцию et c.
Любая помощь в оптимизации этого / лучшего был бы признателен за то, чтобы этот список работал.
var urlstoblock = [];
//Listen to all incoming requests and filter them
chrome.webRequest.onBeforeRequest.addListener
(
FilterRequests,
{urls: ["<all_urls>"]},
["requestBody"]
);
function FilterRequests(info)
{
urlstoblock.push("*://*.lol123.com/*");
chrome.webRequest.onBeforeSendHeaders.removeListener(DomainBlock);
chrome.webRequest.onBeforeSendHeaders.addListener(
DomainFilter,
{urls: urlstoblock},
["blocking"]
);
}
function DomainFilter(){
return {cancel : true};
}