Тема: Adblock

Решил тут на днях сделать блокирование рекламы средствами кинетика.

Собственно скрипт /media/DISK_A1/system/etc/adblock

#!/bin/sh

MOUNT="/media/DISK_A1/system"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib

start() {
    rm /var/hosts 
    wget  http://winhelp2002.mvps.org/hosts.txt -O  /var/hosts
    cat /media/DISK_A1/system/host >> /var/hosts
    killall -HUP dnsmasq
}


case "$1" in
    start)
        start
        ;;
    stop)
        ;;
    restart)
        start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac

В файл /media/DISK_A1/system/host можно вписать нужные упоминания ip и сервера.

127.0.0.1 localhost
192.168.1.1 KEENETIC

Задача крону

10 */1 * * * /media/DISK_A1/system/etc/adblock start

Отредактировано ELECTRO-NIC (2013-06-09 14:15:03)

2

Re: Adblock

dnsmasq точно будет «подхватывать» /var/hosts, а не /etc/hosts? Если да, то получится действительно самое простое средство блокировки доменов с рекламой.

Только «убивать» все процессы wget в системе при остановке как-то не правильно:

ELECTRO-NIC :

stop() { killall wget }

надо придумать другой способ, например, подстановку назад оригинального файла hosts.

Со всеми вытекающими...

3

Re: Adblock

ryzhov_al :

dnsmasq точно будет «подхватывать» /var/hosts, а не /etc/hosts?

У меня работает.

ryzhov_al :

Только «убивать» все процессы wget в системе при остановке как-то не правильно:

Можно тогда вообще  убрать

stop() { killall wget }

из скрипта.
Теперь нужно его както прописать в cron чтобы обновлялись домены.

Отредактировано ELECTRO-NIC (2012-11-18 20:56:03)

4

Re: Adblock

ryzhov_al :

dnsmasq точно будет «подхватывать» /var/hosts, а не /etc/hosts?

ответ в

 # ls -al /etc/h*
-rw-r--r--    1 root     root           17 Dec 22  2011 /etc/host.conf
lrwxrwxrwx    1 root     root           10 May 30 01:23 /etc/hosts -> /var/hosts

и

# mount
rootfs on / type rootfs (rw)
... 
none on /var type tmpfs (rw)
....

5

Re: Adblock

На сколько можно доверять этому списку  http://winhelp2002.mvps.org/hosts.txt ? и как часто нужно обновлять его ?
А /var в ОЗУ кинетика размещен или где ? просто не хочется флешку кинетика гробить частыми записями.

Отредактировано 23W (2012-11-19 17:34:55)

6

Re: Adblock

23W :

На сколько можно доверять этому списку 

Список взят из программы для андроид AdFree.

23W :

А /var в ОЗУ кинетика размещен или где ?

none on /var type tmpfs (rw)

Походу в оперативе.

7

Re: Adblock

ELECTRO-NIC :

Походу в оперативе.

Тогда очень интересно попробовать.

8

Re: Adblock

Пробовал данный файл подставлять, и ничего не даёт.
Идёт на те домены, что и положено, тоесть нету никакой замены. Что делаю не так? Скрипт запускал, а когда из моего компьютера делаю tracert на домены перечисленные в файле, то всё правильно развязывается. Тоесть результат нулевой.

9

Re: Adblock

У меня так же результат нулевой. Возможно dns не замечает обновления файла host и не использует его новую версия ?

Странно на кинетике в дроббоке команда nslookup ad.a8.net возвращает как и положено 127.0.0.1, а на Windows 8 клиенте та же команда возвращает 202.248.228.20. Винда, что кеширует у себя DNS? как ей дать команду от кинетика сбросить таблицу DNS ?

Отредактировано 23W (2012-11-20 00:53:09)

10

Re: Adblock

ipconfig /flushdns

11

Re: Adblock

LordMerlin :

ipconfig /flushdns

Не помогает. Windows 8 показывает что кеш сброшен, в качестве DNS сервера используется 192.168.1.1 (т.е. кинетик) и все-равно резолвит ad.a8.net  правильно. Значит проблема все же в кинетике ?

12

Re: Adblock

у кого-то получилось использовать кинетик в качестве adblocker-а ?

13

Re: Adblock

23W, http://forum.zyxmon.org/topic183-prozra … roksi.html

14

Re: Adblock

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

# dnsmasq --help
Usage: dnsmasq [options]

Valid options are:
....
-H, --addn-hosts=path                   Specify a hosts file to be read in addition to /etc/hosts.
....

dnsmasq перезапускается при событиях link_up, ppp_up. Смотрите заводские скрипты в /bin - dns.sh, link_up.sh, ppp_up.sh
Подобный топик на форуме Олега
http://wl500g.info/showthread.php?28971 … nscrypt%29

15

Re: Adblock

Zyxmon :

Для того, чтобы все работало с файлом hosts нужно перезапустить dnsmasq.

SIGHUP

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn...
Keenetic Giga & WD Mybook Live user

16

Re: Adblock

ZimniY, давайте другим поможем и подскажем. Если dnsmasq понимает SIGHUP, то нужно добавить в скрипт нечто подобное
kill -HUP `/var/run/dnsmasq.pid`

17

Re: Adblock

Zyxmon :

давайте другим поможем и подскажем. Если dnsmasq понимает SIGHUP, то нужно добавить в скрипт нечто подобное

Я с телефона писал - с третьего раза запостить смог и забил расписывать. Да, dnsmasq понимает SIGHUP и перечитывает по нему все файлы и конфиги.

Zyxmon :

kill -HUP `/var/run/dnsmasq.pid`

Можно не так:

killall -1 dnsmasq

Возможно, понадобится пакет psmisc

Отредактировано ZimniY (2012-11-24 19:21:03)

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn...
Keenetic Giga & WD Mybook Live user

18

Re: Adblock

И я очипятался cat  пропустил. Нужно cat /var.....

19

Re: Adblock

killall -HUP dnsmasq

работает. спасибо!

20

Re: Adblock

Давайте окончательный скрипт напишем и задачу для крона ?

Например так:

#!/bin/sh

MOUNT="/media/DISK_A1/system"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib

start() {
    rm /var/hosts 
    wget  http://winhelp2002.mvps.org/hosts.txt -O  /var/hosts
    cat /media/DISK_A1/system/host >> /var/hosts
    killall -HUP dnsmasq
}


case "$1" in
    start)
        start
        ;;
    stop)
        ;;
    restart)
        start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac

и задача крону:

10 */1 * * * /media/DISK_A1/system/etc/adblock start

и файл DISK_A1\system\host:

127.0.0.1 localhost
192.168.1.1 KEENETIC

Отредактировано 23W (2012-11-26 11:08:57)

21

Re: Adblock

Стрёмная штука, надо хотя бы проверять все записи на 127.0.0.1 перед вставкой в хостс, иначе могут такую бяку подсунуть...

22

Re: Adblock

Star Per :

Стрёмная штука, надо хотя бы проверять все записи на 127.0.0.1 перед вставкой в хостс, иначе могут такую бяку подсунуть...

Не могли бы Вы выразить Вашу мысль более развёрнуто?

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn...
Keenetic Giga & WD Mybook Live user

23

Re: Adblock

ZimniY :

Не могли бы Вы выразить Вашу мысль более развёрнуто?

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

24

Re: Adblock

ну дыра же, без проверки что попало в hosts совать.

25

Re: Adblock

Вообще то, специализированные сайты с hosts-файлами уже дают готовых вариант.
Я хотел создать похожий скрипт, только с большим списком (общее число записей = 100000), но меня опередили (этой темы не видел).

#!/bin/sh

MOUNT="/media/DISK_A1/system"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib

start() {
    echo 'Starting!'
    rm /var/hosts
    wc -l /var/hosts
    wget http://winhelp2002.mvps.org/hosts.txt -O /var/hosts
    wc -l /var/hosts
    wget http://hosts-file.net/ad_servers.asp -O /media/DISK_A1/system/root/hosts.1
    cat /media/DISK_A1/system/root/hosts.1 >> /var/hosts
    wc -l /var/hosts
    wget http://adaway.sufficientlysecure.org/hosts.txt -O /media/DISK_A1/system/root/hosts.2
    cat /media/DISK_A1/system/root/hosts.2 >> /var/hosts
    wc -l /var/hosts
    wget http://sysctl.org/cameleon/hosts -O /media/DISK_A1/system/root/hosts.3
    cat /media/DISK_A1/system/root/hosts.3 >> /var/hosts
    wc -l /var/hosts
    wget http://someonewhocares.org/hosts/hosts -O /media/DISK_A1/system/root/hosts.4
    cat /media/DISK_A1/system/root/hosts.4 >> /var/hosts
    wc -l /var/hosts
    wget http://www.malwaredomainlist.com/hostslist/hosts.txt -O /media/DISK_A1/system/root/hosts.5
    cat /media/DISK_A1/system/root/hosts.5 >> /var/hosts
    wc -l /var/hosts
    wget http://securemecca.com/Downloads/hosts.txt -O /media/DISK_A1/system/root/hosts.6
    cat /media/DISK_A1/system/root/hosts.6 >> /var/hosts
    wc -l /var/hosts
    wget http://www.hostsfile.org/Downloads/hosts.txt -O /media/DISK_A1/system/root/hosts.7
    cat /media/DISK_A1/system/root/hosts.6 >> /var/hosts
    wc -l /var/hosts
    cat /media/DISK_A1/system/hosts >> /var/hosts
    wc -l /var/hosts
    echo 'Hosts-file result :'
    wc -l /var/hosts
    rm -rf /media/DISK_A1/system/root/hosts.*
    echo 'Work done!'
    
}
    
stop() {
    killall wget
}
    
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac