Проект [[https://github.com/StevenBlack/hosts github.com/StevenBlack/hosts]] предлагает простой подход для блокировки рекламы и вредоносных сайтов, не требующий установки дополнений и работающий в любых операционных системах и браузерах. Суть метода в размещении черного списка с доменами рекламных сетей в файле /etc/hosts. При попытке загрузки рекламного блока имя связанного с ним домена резолвится в несуществующий адрес 0.0.0.0 и реклама не отображается из-за недоступности сервера.Адрес 0.0.0.0 используется вместо обычно практикуемого 127.0.0.1 так как попытка соединения с ним сразу возвращает ошибку без ожидании истечения таймаута. В настоящее время в БД находится более 27 тысяч записей, составленных на основе популярных публичных списков блокировки, в том числе [[http://adaway.org/hosts.txt adaway.org]], [[http://winhelp2002.mvps.org/hosts.htm mvps.org]],
[[http://www.malwaredomainlist.com/ malwaredomains.com]], [[http://someonewhocares.org/hosts/ someonewhocares.org]] и [[http://pgl.yoyo.org/adservers/ yoyo.org]]. При этом разработчики пытаются добиться разумного компромисса, избежать ложных срабатываний и слишком большого разрастания базы (например, похожий список http://hosts-file.net содержит более 300 записей).Список постоянно обновляется, поэтому для поддержания /etc/hosts в актуальном состоянии предлагается специальный скрипт updateHostsFile.py, который можно прописать в crontab, а можно время от времени запускать вручную.
После обновления /etc/hosts следует перезапустить службу резолвинга:
Debian/Ubuntu
sudo /etc/rc.d/init.d/nscd restartFedora Linux, Arch Linux, Manjaro:
sudo systemctl restart NetworkManager.service
Другие Linux с systemd:
sudo systemctl restart network.service
OS X:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponderWindows:
ipconfig /flushdns
URL:
Обсуждается: http://www.opennet.me/tips/info/2938.shtml
хмм, ...
А службы резолвинга то зачем перезапускать? (Молчу о том как это предлагается сделать, ужс)
Чтобы кэш почистить.
IMHO hosts должен обрабатываться первым. Допускаю, что браузер может так не думать и использовать какой-то свой кэш, но тогда его и надо перезапускать.
> IMHO hosts должен обрабатываться первым. Допускаю, что браузер может так не думать
> и использовать какой-то свой кэш, но тогда его и надо перезапускать.Все верно. После изменения hosts необходимо перезапускать браузер
> А службы резолвинга то зачем перезапускать? (Молчу о том как это предлагается сделать, ужс)У вас плохо http://stackoverflow.com/a/11716345 получается молчание. Пытайтесь ещё.
Вы испугались всего лишь "покрытия" автором статьи множества возможных вариантов конфигураций систем читателей. Спокойнее, Владимир! Вы не понимаете - это неприятно, но излечимо.
оооо!!! как это мило0.0.0.0 localhost.localdomain
а в чем проблема-то? это не стандартное имя
А если сделать блочное устройство по типу как /dev/urandom, файлик hosts удалить, вместо него оставить символическую ссылку на /dev/hosts. А уже программно обрабатывать stdin и stdout обращения и выдавать результат основываясь на данных из какой-нибудь локальной или удалённой БД. Было бы круто.
fuse вам в помощь
nsswitch.conf
Что-то напоминает... не проще сделать DNS сервер, который будет для некоторых доменов выдавать 0.0.0.0 ?
adsuck?
> Проект [[https://github.com/StevenBlack/hosts github.com/StevenBlack/hosts]] предлагает
> простой подход для блокировки рекламы и вредоносных сайтов, не требующий установки
> дополнений и работающий в любых операционных системах и браузерах. Суть метода
> в размещении черного списка с доменами рекламных сетей в файле /etc/hosts.
> В настоящее время в БД находится более 27 тысяч записей, составленных на основе популярных публичных списков блокировки, в том числе
> http://pgl.yoyo.org/adservers/Гм, как раз сегодня использовал этот список. Добавлял очередные регекспы с рекламой в squid. Поискал, как SSL-помойки блокировать, нашёл https://sfxpt.wordpress.com/2011/02/21/the-best-ad-blocking-.../ с настройками dnsmasq и ссылкой на pgl.yoyo.org/adservers.
Для моего локального dnsmasq хватило 2ух команд, всё остальное уже было "как надо":
# wget -O /etc/dnsmasq.d/block.ads.list 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=dnsm...
howintro=0&mimetype=plaintext'
# service dnsmasq restartЯ не заморачивался и долго не ковырялся, использовал "как есть".
Этот список можно получить и в других форматах (hosts, bind и т.п.).
>>в БД находится более 27 тысяч записей,
>добиться разумного компромисса, избежать ложных срабатываний и слишком большого разрастания базы (например, похожий список http://hosts-file.net содержит более 300 записей).Список для dnsmasq с записями вида
address=/google-analytics.com/127.0.0.1
"накрывает" и все поддомены (не знаю, как с этим у hosts). Сегодня в нём 2439 строки.
А какой подход более производительный? Hosts или dnsmasq?
> А какой подход более производительный? Hosts или dnsmasq?Наверное, если бы мне надо было отдавать тыщу мильярдов резаных запросов в секунду, я бы не поставил себе первое и самое простое из того, что заработало у меня, провёл бы анализ, сравнение "существующих технологий"ТМ, погонял тесты -- кто ж из претендентов "более производительный". Но мне не надо -- я не знаю, кто из них "более".
Кто хочет скрестить ужа с ежом: можно гит клон, а потом в DNSMasq добавить через addn-hosts=
ещё можно использовать блокировку целых подсетей с непонятным содержанием через направления роутинга этих сетей за левый шлюз. Например смотрим на каком ip у нас сидит "Вулкан удачи", через whois выясняем какая подсеть числится за этой компанией и направлением роутинг этой подсети на соседний ipшник , который свободен. Типа route -p add 104.16.75.40 mask 255.255.255.0 192.168.1.13 и досвидания галимын антимашки этих вулканов. Периодически сохранять эту таблицу роутингов,чтобы потом использовать в случае переустановки, да и всё. А ещё лучше не сипользовать шлюз по умолчанию на своём компьютере, а прописать все сети по котором ходишь (их не так уж много) в эту таблицу роутинга и тогда точно вероятность заражения вирусами и атаками из интернета снизится в миллионы раз!
Если отключить все сетки https://www.cloudflare.com , а еще акамай и google, то интернет просто превратится в удачную номепаге.
И если мне не изменяет склероз
route -p add 104.16.75.40 mask 255.255.255.0 192.168.1.13 - как то виндово и не верно .
правильней бы писать адрес сети 104.16.75.0
ну и кроме того, даже в винде можно отправить роут в null, а не рисковать что сработает next hub
next hub = next hop
> next hub = next hopугу, виноват. но смысл остался:)
виндово, но верно!
Пример, который выводит команда route в Винде
route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2
узел^ ^маска ^шлюз метрика^ ^
интерфейс^
Метрика не обязательна. Поэтому мой вариант верен!
Тут же не только сидят пользователи, но и админы,в том числе и админы Windows! Поэтому и написал виндовый вариант!
>[оверквотинг удален]
> ^маска ^шлюз
> метрика^ ^
>
>
>
>
> интерфейс^
> Метрика не обязательна. Поэтому мой вариант верен!
> Тут же не только сидят пользователи, но и админы,в том числе и
> админы Windows! Поэтому и написал виндовый вариант!прошу заметить что в команде именно адрес сети, а не один из ее хостов ( ставить винду чтобы проверить а кушает ли они вместо сети один их IP диапазона - лень, я недавно снес win10 c компа, когда победил работу с NEF2 файлами в darktable).
Про netctl и другие etcnet автор не слышал?
Опять IPv6 забыли добавить в "простое решение" (в https://github.com/StevenBlack/hosts/issues/47 предлагается удвоить этот список для шестой версии).
>При попытке загрузкирекламного блока имя связанного с ним домена резолвится в несуществующий адрес
0.0.0.0 и реклама не отображается из-за недоступности сервера.Дальше не читал.
Лажа какая-то...
Что в этом списке, что в упомянутом в комментариях выше http://pgl.yoyo.org/adservers/, многие домены упомянуть просто как domain.com, без субдоменов и без www.
Соответственно, в hosts это не работает и смысла не имеет никакого, т.к. большинство рекламного контента идет таки с поддоменов.
> Лажа какая-то...
> Что в этом списке, что в упомянутом в комментариях выше http://pgl.yoyo.org/adservers/,
> многие домены упомянуть просто как domain.com, без субдоменов и без www.
> Соответственно, в hosts это не работает и смысла не имеет никакого, т.к.
> большинство рекламного контента идет таки с поддоменов.Я писал, что в dnsmasq всё дерево "накрывается". Сейчас проверил: hosts (и его у меня dnsmasq читает) не "накрывает"; <<правильный>> адрес из 4 нулей в dnsmasq работатет.
=== Протокол:
До теста:
$ host blacklist.localdomain.com
blacklist.localdomain.com has address 98.124.199.21+++
Тест№1: "0.0.0.0 blacklist.localdomain.com" в /etc/hosts.$ host blacklist.localdomain.com
blacklist.localdomain.com has address 0.0.0.0
$ host -t NS blacklist.localdomain.com
blacklist.localdomain.com has no NS record
$ host -t NS localdomain.com
localdomain.com name server dns4.name-services.com.
localdomain.com name server dns5.name-services.com.
localdomain.com name server dns1.name-services.com.
localdomain.com name server dns2.name-services.com.
localdomain.com name server dns3.name-services.com.
$ host -t NS x.x.x.blacklist.localdomain.com
x.x.x.blacklist.localdomain.com has no NS record
$ time host -t NS x.x.x.blacklist.localdomain.com
x.x.x.blacklist.localdomain.com has no NS recordreal 0m0.013s
user 0m0.008s
sys 0m0.000s
$ time host x.x.x.blacklist.localdomain.com
x.x.x.blacklist.localdomain.com has address 98.124.199.21real 0m0.451s
user 0m0.008s
sys 0m0.000s
$ _
+++
Тест№2: "address=/localdomain.com/0.0.0.0" в dnsmasq.$ host blacklist.localdomain.com
blacklist.localdomain.com has address 0.0.0.0
$ host -t NS blacklist.localdomain.com
blacklist.localdomain.com has no NS record
$ host -t NS localdomain.com
localdomain.com has no NS record
$ time host -t NS x.x.x.blacklist.localdomain.com
x.x.x.blacklist.localdomain.com has no NS recordreal 0m0.012s
user 0m0.008s
sys 0m0.000s
$ time host x.x.x.blacklist.localdomain.com
x.x.x.blacklist.localdomain.com has address 0.0.0.0real 0m0.012s
user 0m0.008s
sys 0m0.000s
$ _PS: 2Maxim Chirkov: Таг [CUT/] (читайте под катом...[+]) || [SPOILER]+[/SPOILER] || [+]...[/+] для сворачивания части/хвоста длинного комментария? Ну не класть же логи %) вторым комментарием в ответ на первый, в самомм деле?
О чем ты, дорогой? Причем здесь dnsmasq и нули?Заголовок статьи видел? Там именно про /etc/hosts говорится.
Этот список не работает через /etc/hosts в принципе.
> О чем ты, дорогой? Причем здесь dnsmasq и нули?*>>>> Что в этом списке, что в упомянутом в комментариях выше http://pgl.yoyo.org/adservers/
*>> Я писал, что в dnsmasq всё дерево "накрывается".Ну, ты ж про мой комментарий помянул? Я там писал про dnsmasq.
Не заметил?
> Этот список не работает через /etc/hosts в принципе.
Дарахой, я вполне с тобой согласен:
*>>проверил: hosts [,,,] не "накрывает"
Извини, что так непонятно и длинно _согласился_. Я ж не знал!!1111!!!!!!111
для тора всё равно работать не будет, так как он использует днс серверы в тор-сети
Неплохо бы файл этот большой файл hosts загнать в unbound как приблизительно прописано здесь http://forum.zyxmon.org/topic848-unbound-rekursivnyi-rezolve...
https://github.com/jodrell/unbound-block-hosts