====== Mikrotik: блокируем рекламу с помощью StopAD ====== Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор – официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект. [[https://курсы-по-ит.рф/lp-mikrotik-mtcna?utm_source=wiki-rtza&utm_medium=cpc&utm_campaign=5| Узнать подробности]] Живет эта полезная штука здесь: https://stopad.kplus.pro/ Основная идея проста: загружать список неприемлемых ресурсов Интернета (реклама, телеметрия и прочее говно) на Mikrotik в список статических адресов DNS. Эдакий упрощенный вариант (без красивых графиков) клевой штуки PiHole: https://pi-hole.net/ Списки для блокировки: https://firebog.net/ Убер-список на 1.4 млн: https://raw.githubusercontent.com/CamelCase11/UnifiedHosts/master/hosts.all Добавление большого числа блокируемых хостов может серьезно притормозить Mikrotik! Скрипт для маршрутизатора - для генерации следует заполнить поля на сайте https://stopad.kplus.pro/ и получаете "все в одном". ## StopAD - Script for blocking advertisements, based on your defined hosts files ## For changing any parameters, please, use this link: https://stopad.kplus.pro/ ## ## @github ## @version 2.0.2 ## ## Setup this Policy for script: [X] Read [X] Write [X] Policy [X] Test :local hostScriptUrl "https://stopad.kplus.pro/script/source?format=routeros&version=2.0.2&sources_urls=https%3A%2F%2Fcdn.rawgit.com%2Ftarampampam%2Fstatic%2Fmaster%2Fhosts%2Fblock_shit.txt,http%3A%2F%2Fwww.crazyws.fr%2FWindowsSpyBlocker%2Fhosts%2Fwin7%2Fspy.txt,http%3A%2F%2Fpgl.yoyo.org%2Fadservers%2Fserverlist.php%3Fhostformat%3Dhosts%26showintro%3D0%26mimetype%3Dplaintext&excluded_hosts=localhost"; :local scriptName "stop_ad.script"; :local backupFileName "before_stopad"; :local logPrefix "[StopAD]"; do { /tool fetch check-certificate=no mode=https 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 comment=ADBlock]; /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 AD block script not downloaded, script stopped"; } } on-error={ :log warning "$logPrefix AD block script download FAILED"; }; ===== Как мне всё это дело прикрутить к моему MikroTik-у? ===== Более чем просто — необходимо добавить (System → Scripts → Add New) указанный выше скрипт, а так же добавить задание в планировщик (System → Scheduler → Add New) для его периодического запуска. Если если вы задали имя скрипта AutoADBlock, то в планировщике в поле On Event укажите: /system script run AutoADBlock. Права доступа: [X] Read [X] Write [X] Policy [X] Test. ===== Выдача кэшируется? ===== В данный момент каждый запрашиваемый (внешний) ресурс кэшируется на 7200 секунд. Всё остальное — обрабатывается в реалтайме. ===== Какие ещё есть ограничения? ===== Ограничения хоть и носят больше формальный характер, но всё таки они есть: * Максимальное количество внешних источников — 8 (URL должен быть не более 256 символов); * Максимальное количество исключений — 32; * Максимальный размер файла на источнике — 2048 Кб. (а так же поле content_type должно соответствовать text/plain); ===== Применимо только к маршрутизаторам MikroTik (RouterOS)? ===== На данный момент — да. Но если потребуется дополнительный функционал — пишите здесь. ===== У меня в таблице DNS есть нужные мне ресурсы. Как быть с ними? ===== Так как перед импортированием скрипта потребуется уничтожить все имеющиеся маршруты. Вы можете задать служебные (ваши) маршруты предварительно и они будут включены в итоговый скрипт. Таким образом ваши маршруты будут сохранены. ===== Откуда источники хостов? ===== Мы используем открытые и обновляемые источники, указанные выше. Более того, вы можете указать свои источники (записи в которых имеют формат "%ip_address% %host_name%") доступные "извне" по протоколам: http, https, ftp. ===== Запускаю указанный выше скрипт и ничего не происходит. Что делать? ===== Попробуйте выполнить в консоли /system script print from=%имя_скрипта% и проанализировать вывод. Работоспособность скрипта была протестирована на RouterOS v6.30.2. ===== Я указал свой источник, но он не обрабатывается. Почему? ===== Указанный вами адрес должен отвечать кодом 2xx (или 3xx — но не больше двух редиректов). Если при соблюдении этих условий он всё равно не обрабатывается, пожалуйста, напиши об этом вот тут: https://github.com/tarampampam/mikrotik-hosts-parser/issues/new