Свой блокировщик рекламы: способы создания и настройки

Рекламные баннеры продолжают появляться даже при установленном блокировщике — типичная причина, по которой пользователи задумываются о собственном решении: готовые расширения либо пропускают «приемлемую рекламу», либо их фильтры не покрывают конкретные сайты. Собственный блокировщик рекламы можно собрать несколькими путями — от простого списка правил до полноценного расширения для браузера или DNS-сервера на домашней сети.

Выбор подхода зависит от задачи. Если нужно скрыть рекламу на паре конкретных сайтов, достаточно пользовательских фильтров. Для защиты всех устройств в домашней сети логичнее поднять DNS-фильтрацию. А создание собственного расширения даёт максимальный контроль над тем, что и как блокируется. Ниже разберём каждый вариант с практическими шагами.

Как работает блокировка рекламы

Любой блокировщик опирается на один из двух механизмов — или на их комбинацию. Первый — сетевая фильтрация: запросы к рекламным доменам обрываются ещё до загрузки контента. Второй — косметическая фильтрация: рекламные элементы скрываются на уже загруженной странице через CSS-правила.

Сетевая фильтрация экономит трафик и ускоряет загрузку, потому что рекламные скрипты и баннеры вообще не скачиваются. Косметическая нужна там, где реклама отдаётся с того же домена, что и основной контент, — заблокировать её на уровне сети невозможно, не сломав сайт. Именно поэтому зрелые блокировщики вроде uBlock Origin совмещают оба подхода.

⚠️ Внимание: агрессивная блокировка может нарушить работу сайтов — перестанут открываться видео, формы оплаты или кнопки входа. Всегда предусматривайте возможность быстро отключить свои правила или добавить домен в исключения.

Способ 1: собственные фильтры в готовом блокировщике

Самый быстрый путь — не писать блокировщик с нуля, а дополнить существующий собственными правилами. uBlock Origin и AdGuard позволяют добавлять пользовательские фильтры через настройки расширения. Синтаксис правил у них общий и восходит к формату Adblock Plus.

Основные типы правил, которые пригодятся для собственного списка:

  • 🚫 ||ads.example.com^ — блокирует все запросы к указанному домену и его поддоменам;
  • 🎯 example.com##.banner — косметическое правило, скрывает элемент с классом banner на конкретном сайте;
  • 🧩 example.com##div[id^="adv"] — скрывает элементы, у которых id начинается с «adv»;
  • @@||example.com^$document — исключение, отключающее блокировку на сайте.

Чтобы определить, что именно блокировать, откройте инструменты разработчика в браузере (клавиша F12), вкладку «Сеть» и посмотрите, с каких доменов грузятся рекламные ресурсы. Косметические элементы удобно искать через инспектор: кликните по баннеру правой кнопкой и изучите его CSS-классы.

Способ 2: блокировка через файл hosts

Файл hosts — простейший системный механизм, который работает без каких-либо программ. Суть метода: рекламный домен перенаправляется на адрес 127.0.0.1 или 0.0.0.0, и запрос уходит в никуда. Блокировка действует на уровне всей системы — для всех браузеров и большинства приложений.

На Windows файл находится по пути C:\Windows\System32\drivers\etc\hosts, на Linux и macOS — /etc/hosts. Для редактирования нужны права администратора. Строка блокировки выглядит так:

0.0.0.0 ads.example.com

☑️ Настройка блокировки через hosts

Выполнено: 0 / 5

Метод имеет серьёзные ограничения. Файл hosts не поддерживает подстановочные знаки, поэтому каждый поддомен придётся перечислять отдельно. Косметическая фильтрация невозможна в принципе. А реклама, отдаваемая с основного домена сайта (как у некоторых видеосервисов), таким способом не блокируется.

⚠️ Внимание: некоторые программы и антивирусы следят за изменениями hosts и могут расценить правку как подозрительную активность. Перед редактированием сделайте резервную копию исходного файла, чтобы вернуть всё в исходное состояние.

Способ 3: собственное расширение для браузера

Полноценный свой блокировщик рекламы можно написать как браузерное расширение. Для Chrome и совместимых браузеров используется Manifest V3 с API declarativeNetRequest: расширение не перехватывает запросы само, а передаёт браузеру набор правил блокировки. Это безопаснее и производительнее, но накладывает лимиты на количество правил.

Минимальный каркас такого расширения состоит из манифеста и файла правил. Пример manifest.json:

{

"manifest_version": 3,

"name": "My Ad Blocker",

"version": "1.0",

"permissions": ["declarativeNetRequest"],

"declarative_net_request": {

"rule_resources": [{

"id": "ruleset_1",

"enabled": true,

"path": "rules.json"

}]

}

}

Файл rules.json содержит массив правил с указанием доменов и типов ресурсов для блокировки. Для Firefox актуален Manifest V2 с API webRequest, который допускает динамическую обработку запросов в коде. Для проверки расширение загружается в режиме разработчика: в Chrome — через страницу chrome://extensions с включённым «Режимом разработчика» и кнопкой «Загрузить распакованное расширение».

Почему Manifest V3 ограничивает блокировщики

В третьей версии манифеста Google ограничила количество правил declarativeNetRequest и убрала возможность блокирующей обработки запросов через webRequest. Из-за этого часть возможностей классических блокировщиков в Chrome недоступна, а Firefox сохранил поддержку старого API. Учитывайте это при выборе платформы для собственного расширения.

📊 Какой способ собственной блокировки рекламы вам ближе?
Свои фильтры в uBlock Origin или AdGuard
Правка файла hosts
Написание собственного расширения
DNS-фильтрация для всей сети

Способ 4: DNS-фильтрация для всей домашней сети

Если рекламу нужно резать сразу на всех устройствах — смартфонах, планшетах, Smart TV, — разумнее поднять собственный DNS-фильтр. Популярные решения: Pi-hole (ставится на Raspberry Pi или любой Linux-сервер) и AdGuard Home (кроссплатформенный, с веб-интерфейсом). Оба работают как локальный DNS-сервер: запросы к рекламным доменам получают пустой ответ, и контент не загружается.

Общий порядок настройки: установите ПО на устройство, которое работает постоянно, укажите его IP-адрес в качестве DNS-сервера в настройках роутера, затем подключите блоклисты через веб-интерфейс. Точные шаги зависят от версии системы и модели роутера, поэтому сверяйтесь с официальной документацией выбранного решения.

Главное преимущество подхода — блокировка работает даже в приложениях и на устройствах, куда нельзя установить расширение, например на телевизорах и приставках. Недостаток тот же, что у hosts: нет косметической фильтрации, а реклама с основных доменов сервисов останется нетронутой.

Сравнение подходов

СпособОхватСложностьКосметическая фильтрация
Свои фильтры в блокировщикеОдин браузерНизкаяДа
Файл hostsОдно устройствоНизкаяНет
Собственное расширениеОдин браузерВысокаяДа, при реализации
DNS-фильтр (Pi-hole, AdGuard Home)Вся сетьСредняяНет

Как видно из таблицы, универсального решения нет. Для личного использования в одном браузере проще всего поддерживать собственный список фильтров. Написание своего расширения оправдано, если вам нужна нестандартная логика — например, блокировка по поведенческим признакам или интеграция с другими инструментами.

Поддержка и обновление собственного блокировщика

Рекламные сети регулярно меняют домены и обходят фильтры, поэтому любое собственное решение требует сопровождения. Практические рекомендации:

  • 🔄 Подключайте готовые общедоступные блоклисты как основу, а свои правила добавляйте поверх — так меньше ручной работы;
  • 📝 Ведите список исключений для сайтов, где блокировка ломает функциональность;
  • 🧪 После каждого обновления правил проверяйте работу нескольких часто посещаемых сайтов;
  • 💾 Храните свои фильтры и конфигурацию в системе контроля версий, чтобы откатывать неудачные изменения.

Часто задаваемые вопросы

Законно ли использовать собственный блокировщик рекламы?

В большинстве юрисдикций блокировка рекламы на собственном устройстве не запрещена — вы вправе контролировать, какой контент загружается на ваше оборудование. Однако условия некоторых сервисов могут ограничивать доступ при использовании блокировщиков.

Можно ли заблокировать рекламу в мобильных приложениях?

Да, через DNS-фильтрацию: AdGuard Home или Pi-hole в домашней сети либо приложения с локальным VPN-режимом на самом смартфоне. Реклама, отдаваемая с основных доменов приложения, таким способом не блокируется.

Почему реклама на видеохостингах не блокируется через hosts и DNS?

Потому что ролики часто отдаются с тех же доменов, что и основной контент. Блокировка такого домена сломает весь сервис. Здесь помогают только браузерные решения с косметической фильтрацией и анализом запросов.

Сколько правил можно добавить в расширение на Manifest V3?

Chrome устанавливает лимиты на количество статических и динамических правил declarativeNetRequest; точные значения заданы в официальной документации Chrome и могут меняться между версиями. Для личного блокировщика базового лимита обычно хватает с запасом.

Что делать, если собственный блокировщик сломал нужный сайт?

Добавьте домен в список исключений или временно отключите свои правила. В расширениях это делается одной кнопкой, в hosts — комментированием строки символом #, в AdGuard Home и Pi-hole — через белый список в веб-интерфейсе.