Боремося з рекламою в браузері і Skype за допомогою Mikrotik - asp24.ru
Набридла нав'язлива реклама в Skype? Для власників Mikrotik є зручний трюк, за допомогою якого можна відключити рекламу в Skype відразу на всіх ваших пристроях. І все пара рядків :)
/ Ip firewall address- list add address = rad.msn.com list = ads_skype add address = apps.skype.com list = ads_skype / ip firewall filter add action = reject chain = forward comment = "DROP Skype ADS" dst-address- list = ads_skype log = no reject-with = icmp-network-unreachable
Не забудьте підняти забороняє правило вище дозволяють. Після перезапуску Skype, реклама більше вас не потривожить. З мінусів слід зазначити той факт, що "головна сторінка" Skype стане недоступною.
У деяких реклама при цьому не відключається. У такому випадку потрібно досвідченим шляхом підібрати один з наступних доменів, з яких може здійснюватися подгрузка рекламного контента.
add address = adriver.ru list = ads_skype add address = api.skype.com list = ads_skype add address = static .skypeassets.com list = ads_skype add address = devads.skypeassets.net list = ads_skype add address = devapps.skype.net list = ads_skype add address = qawww.skypeassets.net list = ads_skype add address = qaapi.skype.net list = ads_skype add address = preads.skypeassets.net list = ads_skype add address = preapps.skype.net list = ads_skype add address = ads1.msads.net list = ads_skype add address = flex.msn.com list = ads_skype
Чистимо інтернет від настирливої реклами (AD Blocker для MikroTik)
Переадресовуючи клієнта при запиті «рекламного» домену, наприклад, на loopback (127.0.0.1 - 127.255.255.255), замість котента реклами клієнт отримає благодатний «нічого» (зрозуміло, за умови, що у нас не працює локальний веб-сервер який слухає локалхост ). Механізм фільтрації досить старий і не позбавлений недоліків. Наприклад, не можна вказати маски хостів (* .ad-domain.tld) або «вирізати» рекламу, банери якої хостятся на запитуваних ресурсах. Але зате не прив'язаний до якогось або протоколу і досить простий в експлуатації. Більш того, якщо його використовувати, наприклад, на домашньому або офісному маршрутизаторі, який використовується в якості DNS сервера, реклама успішно поріжеться на всіх гаджетах, де IP нашої залізяки прописаний першим в якості DNS сервера.
Але що якщо у нас замість роутера з кастомной прошивкою використовується ... MikroTik (RouterOS), функціонал якого накладає деякі обмеження? Під катом ви дізнаєтеся яким чином вдалося успішно "конвертувати" файл хостів в придатний для нього формат, як автоматизувати цю справу і що для хабралюдей як бонус був створений невеликий сервіс якраз для автоматизації цього процесу (маленький, абсолютно безкоштовний і з відкритим кодом) .
налаштовуємо MikroTik
Налаштування самої залізяки навряд чи викличе будь-які труднощі. Зазначимо IP маршрутизатора в якості першого DNS сервера в DHCP - «IP» → «DHCP Server» → «Networks» →% default config%. Першим прописуємо IP самого MikroTik-а, натискаємо «OK»:
DNS сервер працює «з коробки», і можна навіть не міняти його стокові настройки:
Єдина цікава для нас кнопка - «Static» ( «Статичні маршрути»), в яких ми повинні прописати «рекламні» домени, вказавши куди такі запити перенаправляти.
Конвертуємо файл хостів
Файл хостів має формат:
127.0.0.1 localhost 127.0.0.1 domain-a.tld 127.0.0.1 domain-b.tld
Формат скрипта для MikroTik, який використовує статичні DNS маршрути:
/ Ip dns static add address = 127.0.0.1 name = localhost add address = 127.0.0.1 name = domain-a.tld add address = 127.0.0.1 name = domain-b.tld
Для отримання актуальних списків першого і перетворення їх в другій ми виконаємо прості команди в короби на, наприклад, робочому столі (bash):
- Викачуємо списки і акуратно складаємо їх під іменами ./hosts_list.1, ./hosts_list.2 і т.д .:
$ Src = ( 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext' 'https://adaway.org/hosts.txt'); i = 0; for file in $ {src [*]}; do i = $ ((i + 1)); wget --no-check-certificate -O "./hosts_list. $ i" "$ file"; done; - Грепан все що починається на '127.0.0.1', видаляємо коменти, залишаємо тільки імена доменів, прибираємо дублікати, прибираємо порожні рядки і оформляємо кожен домен у вигляді команди для імпорту:
$ In = "./ hosts_list. *" && out = "./adblock_dns.rsc" && host = '127.0.0.1'; echo "/ ip dns static"> $ out && grep '127.0.0.1' $ in | grep -v '^ #' | cut -d '' -f 2 | sort -u | grep. | sed "s / ^ / add address = $ host name = /" >> $ out && rm -f $ in; wc -l $ out;
Так, треба б використовувати регулярку і взагалі все переробити, але найголовніше - я передав тобі свою думку, далі справа за тобою
На виході у нас вийде файл adblock_dns.rsc, який не зайвим буде додатково перевірити на коректність вмісту.
Імпортуємо в MikroTik
- Викачуємо списки і акуратно складаємо їх під іменами ./hosts_list.1, ./hosts_list.2 і т.д .:
$ Src = ( 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext' 'https://adaway.org/hosts.txt'); i = 0; for file in $ {src [*]}; do i = $ ((i + 1)); wget --no-check-certificate -O "./hosts_list. $ i" "$ file"; done; - Грепан все що починається на '127.0.0.1', видаляємо коменти, залишаємо тільки імена доменів, прибираємо дублікати, прибираємо порожні рядки і оформляємо кожен домен у вигляді команди для імпорту:
$ In = "./ hosts_list. *" && out = "./adblock_dns.rsc" && host = '127.0.0.1'; echo "/ ip dns static"> $ out && grep '127.0.0.1' $ in | grep -v '^ #' | cut -d '' -f 2 | sort -u | grep. | sed "s / ^ / add address = $ host name = /" >> $ out && rm -f $ in; wc -l $ out;
Так, треба б використовувати регулярку і взагалі все переробити, але найголовніше - я передав тобі свою думку, далі справа за тобою
Імпортуємо в MikroTik
Для того, щоб імпортувати отриманий файл, ми чіпляємося до маршрутизатора по ftp, заливаємо adblock_dns.rsc, після чого чіпляємося за ssh або відкриваємо термінал, в якому виконуємо:
- Робимо резервну копію (отриманий бекап краще зберегти у себе на машині):
- Якщо у тебе в таблиці немає важливих маршрутів, то можемо грохнути всі наявні записи:
/ Ip dns static remove [/ ip dns static find] - Імпортуємо долучення:
- Прибираємо за собою:
/ File remove adblock_dns.rsc
Тепер можеш (опціонально) перезавантажити MikroTik, перевірити коректність отримання адрес DNS серверів по DHCP і спробувати відкрити будь-якої ресурс, який раніше був затоплений рекламою - її має стати відчутно менше.
Емпірично доведено що при імпортуванні ~ 5500 записів Mikrotik hAP lite (650MHz @ RAM 32 Mb) встає майже колом при спробі в GUI відкрити таблицю статичних маршрутів.перезавантаження допомагає
Автоматизація
Один з найпростіших варіантів автоматизації - скрипт на баші, який по крону підтримує в актуальному стані adblock_dns.rsc, що знаходиться у відкритому доступі по, скажімо, ftp. Його основа була вже описана вище, залишилося тільки оформити його на твою розсуд (необхідна окрема машина).
Ще один варіант - це використання MetaRouter на самому або сусідньому MikroTik-е, на якому встановлений той же OpenWRT (позбавляємося від необхідності в окремій машині; цей варіант не розписаний детально через брак гідного MikroTik-а під руками).
Другий скрипт (на MikroTik) забирає його (adblock_dns.rsc), робить бекап і, якщо і файл Завантажити успішно, і бекап зберігся успішно, його імпортує, попередньо (увага) грюкнувши всі наявні маршрути:
: Local hostScriptUrl "ftp: // user: login @ ftp_host: 21 / adblock_dns.rsc"; : Local scriptName "adblock_dns.rsc"; : Local backupFileName "before_stopad"; : Local log Prefix "[StopAD]"; do {/ tool fetch mode = ftp url = $ hostScriptUrl dst-path = ( "./". $ scriptName); : If ([: len [/ file find name = $ scriptName]]> 0) do = {/ system backup save name = $ backupFileName; : Delay 1s; : If ([: len [/ file find name = ($ backupFileName. ". Backup")]]> 0) do = {/ ip dns static remove [/ ip dns static find]; / Import file-name = $ scriptName; / File remove $ scriptName; : Log info "$ logPrefix AD block script imported, backup file (\" $ backupFileName .backup \ ") created"; } Else = {: log warning "$ logPrefix Backup file not created, importing AD block script stopped"; }} Else = {: log warning "$ logPrefix Backup file not downloaded, script stopped"; }} On-error = {: log warning "$ logPrefix AD block script download FAILED"; };
бонус
А що робити, якщо у тебе вдома / офісі / гаражі стоїть MikroTik і хочеться або просто порізати рекламу, або автоматизувати оновлення хостів, не піднімаючи ніякі метароутери і хости з файлами по ftp, от щоб просто і без проблем?
Правильно, потрібно щоб це підняв хто то за тебе. І як бонус - така штука вже піднята.
Сенс полягає в наступному - тобі достатньо перейти на потрібну сторінку, вказати свої настройки і отримати URL, за яким буде доступний скрипт з зазначеними тобою настройками. Там же буде надано і исходник готового скрипта для тебе. Можливості, які реалізовані на даний момент:
- Вибір зі списку публічних файлів-хостів (спасибі AdAway для Android);
- Хочеться зазначити свої джерела? Без проблем! (Можна, наприклад, вказати три публічних хост-файлу і два своїх, розташованих на тому-ж gist.github.com , Отримавши таким чином задоволене зручний засіб управління статичними маршрутами на підопічних маршрутизаторах);
- Настроюється адреса (IP v4) перенаправлення;
- Вказівка обмеження (ліміту) кількості записів в підсумковому скрипті (для того щоб «випадково» не покласти «слабку» залізяку);
- Вказівка своїх маршрутів (будуть просто додані першими в генерований скрипт);
- Можливість вказівки виключень - потрібні домени ніколи не будуть «заблоковані»;
- Досить зручна генерація готового скрипта для MikroTik;
Парсер написаний на PHP (зажадає php5-curl), ліцензія MIT, вихідні коди доступні за посиланням mikrotik-hosts-parser. Скільки сервіс проживе - не беруся загадувати, але сподіваюся що досить довго.
ссилочку:
Адреса: stopad.cgood.ru
Резервна майданчик: stopad.kplus.pro
матеріали: один і два
Php?Php?