Фильтрация рекламы на роутере с прошивкой Padavan.

Тема в разделе "Уязвимости и взлом", создана пользователем Ballard, 1 июн 2017.

  1. Ballard

    Ballard

    Сообщения:
    418
    Баллы:
    18
    Фильтрация рекламы на роутере с прошивкой Padavan.

    Наименее ресурсозатратным и наиболее простым в настройке из способов фильтрации рекламы на роутере является использование возможностей локального DNS-DHCP сервера роутера, Dnsmasq.
    Данный метод не лишен недостатков: убрать всю рекламу со страниц не получится, на месте не загрузившихся баннеров останутся пустые места, поэтому плагин AdBlock в браузере или аналогичные решения для ПК принесут гораздо более приемлемый результат. Но этот способ приятен и полезен при наличии в домашнем хозяйстве различных мобильных устройств, которые, по какой-то причине, сами фильтровать рекламу не могут.

    Возможно 2 варианта:





      • Использование опции address=/adsite.com/(без указания ресолвера), Dnsmasq в таком случае сразу возвращает NXDOMAIN, что предотвращает загрузку рекламного содержимого с этого сайта.
      • Использование Hosts-файла с указанием в качестве адреса несуществующего IP (например 0.0.0.0), что приводит к аналогичному результату.
    Какой вариант выбрать: первый (он рекомендуется и в man к Dnsmasq, как более правильный), если только вы уже не используете директиву 'conf-file=' в dnsmasq.conf (например https://github.com/DontBeAPadavan/rublock-via-vpn/wiki), в этом случае правильная работа не гарантируется, тогда используйте второй вариант, он не хуже.
    Стоит сказать, что при наличии Entware список антирекламы будет максимально полным. Для этого установите wget из Entware (opkg install wget). Дело в том, что встроенный в прошивку wget криво поддерживает HTTPS и рекламные списки предоставляемые по этому протоколу загружаться не будут. Впрочем, если у вас потребности в Entware нет, то включать его только ради блокировки рекламы смысла не имеет, т. к. есть только один файл требующий HTTPS и его содержимое на 95% дублируется остальными.





      • Первый вариант
    Добавляем в пользовательский файл конфигурации http://192.168.1.1/Advanced_DHCP_Content.asp данный параметр, указывающий дополнительный файл настроек для Dnsmasq:
    Код:
    conf-file=/tmp/addresses
    Далее в http://192.168.1.1/Advanced_Scripts_Content.asp по вашему вкусу, добавляем следующие строки:

    Код:
    sleep 9
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    URLS="http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext \
    http://winhelp2002.mvps.org/hosts.txt \
    http://hosts-file.net/ad_servers.txt \
    http://someonewhocares.org/hosts/hosts \
    http://www.malwaredomainlist.com/hostslist/hosts.txt \
    https://adaway.org/hosts.txt"

    wget --no-check-certificate -T 10 -qO- $URLS | sed 's/\t/ /g' | sed 's/\r//' | sed 's/ \{1,\}/ /g' | grep "^\(127.0.0.1\|0.0.0.0\)" | cut -d " " -f 2 | tr A-Z a-z | sort -u | sed 's/^/address=\//' | sed 's/$/\//' > /tmp/addresses && logger "Addresses-file has been successfully updated."

    sed -i '/address=\/local\//d' /tmp/addresses
    sed -i '/address=\/localhost\//d' /tmp/addresses
    sed -i '/address=\/localhost.localdomain\//d' /tmp/addresses
    sed -i '/address=\/l-stat.livejournal.net\//d' /tmp/addresses
    sed -i '/address=\/c.allegrostatic.pl\//d' /tmp/addresses
    sed -i '/address=\/adv.gpm-digital.com\//d' /tmp/addresses
    sed -i '/address=\/yastatic.net\//d' /tmp/addresses
    sed -i '/address=\/qip.ru\//d' /tmp/addresses

    killall -SIGHUP dnsmasq





      • Второй вариант
    Добавляем в пользовательский файл конфигурации http://192.168.1.1/Advanced_DHCP_Content.asp данный параметр, указывающий дополнительный host-файл для Dnsmasq:


    Код:
    addn-hosts=/tmp/hosts
    Далее в http://192.168.1.1/Advanced_Scripts_Content.asp по вашему вкусу, добавляем следующие строки:

    Код:
    sleep 9
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    URLS="http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext \
    http://winhelp2002.mvps.org/hosts.txt \
    http://hosts-file.net/ad_servers.txt \
    http://someonewhocares.org/hosts/hosts \
    http://www.malwaredomainlist.com/hostslist/hosts.txt \
    https://adaway.org/hosts.txt"

    wget --no-check-certificate -T 10 -qO- $URLS | sed 's/\t/ /g' | sed 's/\r//' | sed 's/ \{1,\}/ /g' | sed 's/^127.0.0.1/0.0.0.0/g' | grep "^0.0.0.0" | cut -d " " -f 1,2 | tr A-Z a-z | sort -u > /tmp/hosts && logger "Hosts-file has been successfully updated."

    sed -i '/0.0.0.0 localhost/d' /tmp/hosts
    sed -i '/0.0.0.0 localhost.localdomain/d' /tmp/hosts
    sed -i '/0.0.0.0 l-stat.livejournal.net/d' /tmp/hosts
    sed -i '/0.0.0.0 c.allegrostatic.pl/d' /tmp/hosts
    sed -i '/0.0.0.0 yastatic.net/d' /tmp/hosts
    sed -i '/0.0.0.0 adv.gpm-digital.com/d' /tmp/hosts
    sed -i '/0.0.0.0 qip.ru/d' /tmp/hosts

    killall -SIGHUP dnsmasq
    Затем применяем/сохраняем все изменения и выполняем нужное действие для срабатывания пользовательского скрипта (я выбрал скрипт "Выполнить после полного запуска маршрутизатора", поэтому перезагружаю роутер).

Поделиться этой страницей

Top