Блокировка рекламы с помощью UNBOUND в Debian GNU/Linux – daniiiil112.ru

Блокировка рекламы с помощью UNBOUND в Debian GNU/Linux

Введение

Изобилие рекламных баннеров на сайтах с каждым днём увеличивается. Реклама мешает восприятию полезного контента, увеличивает время загрузки сайтов и повышает расход траффика. Кроме этого на интернет-ресурсах довольно большое количество плагин-контейнеров, скриптов и прочего “мусора”. Их наличие так же не прибавляют скорости и отзывчивости сайтам, не говоря уж о “слежке” за посетителями.

Способы блокировки рекламы

Способов избавиться от надоедливой рекламы множество. И с каждым годом список увеличивается. Их можно разделить на три группы:

  1. Плагины для браузеров. Плагины удаляют рекламный контент во время загрузки страницы. Самые популярные из них, это
    uBlock Origin, AdBlock и Adblock Plus. Они используют разнообразные алгоритмы для фильтрации контента. Работают довольно хорошо, но иногда режут и невиновный контент.
  2. Приложения для блокировки рекламы. Могут находиться и в составе некоторых антивирусах, и как отдельные программы. Иногда работают хуже, чем плагины. Но пользоваться ими тоже можно.
  3. Блокировка рекламы на сетевом шлюзе с помощью файла hosts или прокси-серверов. Не совсем эффективный вариант, но в составе в выше перечисленными способами даёт свои плюс. Например, позволяет хоть и частично, но избавиться от рекламы в приложениях. Так же данный способ не требует установки плагинов и приложений на устройствах.

Установка UNBOUND в Debian GNU/Linux

В моём случае, блокировка рекламы будет происходить на домашнем сервере. В качестве кеширующего DNS сервера будем использовать unbound.

daniiiil112@debian:~$ sudo apt update
daniiiil112@debian:~$ sudo apt install unbound

Для простоты обновления списка хостов и возможности автоматического обновления, необходимо создать простенький скрипт.

daniiiil112@debian:~$ sudo nano /etc/unbound/hosts_update.sh

#!/bin/sh
# указываем адрес нужного списка
URL="http://sbc.io/hosts/alternates/fakenews-gambling/hosts"
# удаляем старый список при обновлении
rm /etc/unbound/unbound.conf.d/hosts-alternates.conf 
# добавляем "server:" в начало нового списка
echo "server:" > /etc/unbound/unbound.conf.d/hosts-alternates.conf
# получаем список хостов, форматируем и добавляем
curl $URL | grep '^0\.0\.0\.0' | awk '{print "local-zone: \""$2"\" redirect\nlocal-data: \""$2" A 0.0.0.0\""}' >> /etc/unbound/unbound.conf.d/hosts-alternates.conf
# перезапускаем unbound
service unbound restart

Необходимый адрес можно выбрать на странице GiHub-репозитория StevenBlack/hosts: https://github.com/StevenBlack/hosts

Не забываем дать право на запуску скрипту и запускаем его.

daniiiil112@debian:~$ sudo chmod +x /etc/unbound/hosts_update.sh
daniiiil112@debian:~$ sudo /etc/unbound/hosts_update.sh

Если нет ошибок в скрипте, появится файл /etc/unbound/unbound.conf.d/hosts-alternates.conf со списком заблокированных хостов и перезапустится unbound.

Для автоматического обновления необходимо добавить запись в cron

daniiiil112@debian:~$ sudo crontab -e
# обновление списка каждый день в полночь
0 0 * * * /etc/unbound/hosts_update.sh

Проверяем работу. Берем любой адрес из списка и стучимся в него.

daniiiil112@debian:~$ ping www.googletagmanager.com
PING www.googletagmanager.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.023 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.033 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.031 ms

В моём случае всё заработало сразу и без проблем.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *