Запрос блокировки в Chrome
Я пытаюсь заблокировать некоторые запросы в приложении Chrome.
Я создал прослушиватель JavaScript, который выполняет эту проверку:
chrome.webRequest.onBeforeRequest.addListener(
{
urls: ["*://site.com/test/*"]
},
["blocking"]
);
Но запросы не блокируются. Я что-то пропустил в этом коде?
Мой манифест:
"background": {
"scripts": ["listener.js"],
"persistent": true
},
"permissions": ["tabs", "http://*/*"],
"manifest_version": 2,
Ответы
Ответ 1
Похоже, вы неправильно поняли смысл "блокировки" здесь.
https://developer.chrome.com/extensions/webRequest.html#subscription
Если дополнительный массив opt_extraInfoSpec содержит строку 'blocking' (допускается только для определенных событий), обрабатывается функция обратного вызова синхронно. Это означает, что запрос блокируется до тех пор, пока функция обратного вызова возвращается. В этом случае обратный вызов может возвращать BlockingResponse, который определяет дальнейший жизненный цикл запрос.
Чтобы заблокировать запрос (отмените его), верните {cancel: true}
в обработчик событий.
Например:
chrome.webRequest.onBeforeRequest.addListener(
function() {
return {cancel: true};
},
{
urls: ["*://site.com/test/*"]
},
["blocking"]
);
Это заблокирует все URL-адреса, соответствующие *://site.com/test/*
.
Также не забудьте объявить как webRequest
, так и webRequestBlocking
разрешения в вашем манифесте.
Ответ 2
В Chrome 59 вы можете заблокировать определенные запросы на вкладке Сеть инструментов разработчика.
https://developers.google.com/web/updates/2017/04/devtools-release-notes#block-requests
Щелкните правой кнопкой мыши запрос на панели "Сеть" и выберите "Блокировать запрос URL". В ящике появляется новая вкладка блокировки запросов, которая позволяет вам управлять заблокированными запросами.
![Sample]()
Ответ 3
Вы можете сделать следующее:
- Создайте новый каталог.
- Создайте файлы ниже.
- Загрузите распакованное расширение в режиме разработчика с помощью
chrome://extensions/
background.js
chrome.webRequest.onBeforeRequest.addListener(
function(){ return {cancel: true}; },
{
urls: ["<all_urls>"], // Change this to a more specific pattern
types: ["script"]
},
["blocking"]
);
manifest.json
{
"name": "Block request",
"version": "1.0",
"manifest_version": 2,
"background": {
"scripts": ["background.html"]
},
"permissions": [
"webRequest",
"webRequestBlocking",
"<all_urls>"
]
}
Ответ 4
Вы можете использовать уже построенное расширение Google Chrome,
В моем случае я хотел также закрыть нежелательные вкладки:
Для блокирования запросов там http-request-blocker (проект github здесь), вам просто нужно настроить нежелательные запросы:
![enter image description here]()
Для автоматического закрытия вкладок я использую расширение ad-close-gold, работает примерно так же.