Рекламные баннеры продолжают появляться даже при установленном блокировщике — типичная причина, по которой пользователи задумываются о собственном решении: готовые расширения либо пропускают «приемлемую рекламу», либо их фильтры не покрывают конкретные сайты. Собственный блокировщик рекламы можно собрать несколькими путями — от простого списка правил до полноценного расширения для браузера или 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
Метод имеет серьёзные ограничения. Файл 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. Учитывайте это при выборе платформы для собственного расширения.
Способ 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 — через белый список в веб-интерфейсе.