39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
|
|
1 | |
Mikrotik BlackList Parser (Mikrotik StopAD)10.06.2019, 13:37. Показов 6272. Ответов 5
Метки mikrotik stopad (Все метки)
Всем привет!
Будучи счастливым обладателем роутера Mikrotik задался рядом частных задач, блокировкой определенных доменов, Код
################################################################################## # ~~~~ # # -= MikrotikBLParse =- # # -=(c) LitleKinder SoftWare (c) CopyRight 1998-2019 =- # # Email: oleksandr.nosar@gmail.com # # ~~~~ # ################################################################################## 1. Идея: В какой-то момент времени познакомился с замечательным проектом https://stopad.cgood.ru/ Который выполняет одну-единственную функцию — генерирует скрипт для маршрутизаторов MikroTik Router OS), импортируя который, производится блокировка "рекламных" (и не только) доменов (далее по тексту - "ДОМЕНОВ", на основании как публичных, так и указанных вами хост-листов. Скрипт, предоставленный автором проекта (у меня лично) работает через раз. В этой связи я решил оптимизировать, дописать, условершенствовать механихм парсинга, и механизм создания скриптов для блокировки "ДОМЕНОВ"... Чего нет в MikroTik StopAD, и что есть в MikrotikBLParse. * скрипт файл генерирутеся по любому колличеству "ДОМЕНОВ"; * предусмотрено разделение списка "ДОМЕНОВ" по колличеству записей, 5-10-20тыс; * предусмотрена очистка консоли (в роутере Mikrotik)по окончанию работы скрипта; * предусмотрены паузы при загрузке скрипта (в роутере Mikrotik); * предусмотрено сохранение настроек программы (в ini файл); 2. Назначение: Созадние скрипта блокировки "ДОМЕНОВ", вида. { /ip dns static add address=127.0.0.1 name=101com.com comment=My_...; add address=127.0.0.1 name=101order.com comment=My_...; 3. Принцип работы: После первого запуска программа создает файл MikrotikBlackList.ini. в директории Sys. в котором необходимо (прописать все настройки) в трех разных категориях: [WEB Link] [Checked Link] [Script] По умолчанию категрии получают значения: [WEB Link] Pase WEB Link_01 = http://winhelp2002.mvps.org/hosts.txt Pase WEB Link_02 = ......................................................... Pase WEB Link_05 = [Checked Link] Check_00 = No ...................... Check_19 = No [Script] Script_File_Name = Stop_AD_ Script_File_Ext = script Script_Size = 10000 Script_Delay = 5 Script_Ext_Small = No Script_Comm_Pref = My_BlackList Script_Comm_Suff = ADBlock Host_Name = 127.0.0.1 Чуть подробней, о каждой строке в Ini файле: Pase WEB Link_01 = {ВЕБ ссылка для парсинга, может быть любая} Pase WEB Link_02 = {ВЕБ ссылка для парсинга, может быть любая} Pase WEB Link_03 = {ВЕБ ссылка для парсинга, может быть любая} Pase WEB Link_04 = {ВЕБ ссылка для парсинга, может быть любая} Pase WEB Link_05 = {ВЕБ ссылка для парсинга, может быть любая} Check_00 = No {Парсить ВЕБ ссылки, предлагаемые по умолчанию} ...................... Check_19 = No {Парсить ВЕБ ссылки, предлагаемые по умолчанию} Ссылки, определены по умолчанию и будут отображаться при наведении курсора на чекбоксы в главном окне программы. Script_File_Name = {Имя файла скрипта, который будет создан по окончанию работы программы} Script_File_Ext = {Расширение файла скрипта, будет создан по окончанию работы программы} Script_Size = {Колличество строк в каждом скрипте *} Script_Delay = {Задержка перед загрузкой файла скрипта **} Script_Ext_Small = {Не создавать комментарии в файлах скриптов} Script_Comm_Pref = {Комментарий к блокировке - префикс ***} Script_Comm_Suff = {Комментарий к блокировке - суффикс ***} Host_Name = {Куда заворачивать весь блокируемый контент *****} 3. С чего начать: После запуска программы необходимо отметить чекбоксы, (по ссылкам, которых) мы хотим получить спи- сок "ДОМЕНОВ" к блокировке. Пример, чекбокс (ADS), результам станет загрука доменов по ссылке: https://blocklist.site/app/dl/ads Пример, чекбокс (ADS + SPAM), результам станет загрука "ДОМЕНОВ" по ссылкам: https://blocklist.site/app/dl/ads https://blocklist.site/app/dl/spam Если выбрать (отметить) чекбокс {my from Ini}, то парсинг будет производится по всем ссылкам, определенным блоком [WEB Link] в Ini файле. Значения будут браться из параметров Pase WEB Link_01...05, при условии, что они определены Вами. Далее, запуск парсинга - кнопка {START}. В диалоговом окне {LOG} отобразится процесс парсинга, и возможные ошибки. В результате, парсинга, будут скачаны все списки по выбранным ранее ВЕБ ссылкам в директорию .\Tmp. После этого программа проанализирует все скаченные "ДОМЕНЫ" на предмет повторяемости (дубли) и удалит их. Результаты будут записаны в деректорию .\Rez. Создаваемые файлы будут иметь вид: .\Rez\{текущаядата+текущеевремя}\{Script_File_Name}+{Script_File_Ext} Пример парсинга чекбокса {youtube}. Парсится ссылка {https://blocklist.site/app/dl/youtube}: .\Rez\05.06.19(13.20.34)\Stop_AD_0001.script со следующим содержимым: ## Script generated 05.06.19 13:20:34 ## Script format: routeros ## ## Hosts list sources: ## > ## > https://blocklist.site/app/dl/youtube ## ## Excluded hosts: ## > localhost ## Begin Script { /ip dns static add address=127.0.0.1 name=r3---sn-o097znlk.googlevideo.com comment=My_...; add address=127.0.0.1 name=r5---sn-n4v7knlk.googlevideo.com comment=My_...; add address=127.0.0.1 name=r5---sn-n4v7sn7y.googlevideo.com comment=My_...; add address=127.0.0.1 name=r5---sn-vgqskned.googlevideo.com comment=My_...; add address=127.0.0.1 name=r6---sn-o097znl6.googlevideo.com comment=My_...; ........................................................................... ВСЕГО 213 ссылок на 05/06/2019 ........................................................................... add address=127.0.0.1 name=r6---sn-n4v7sn7l.googlevideo.com comment=My_...; /system logging action set memory memory-lines=1; /system logging action set memory memory-lines=65000; :log info ""; :log info ">> Complete load file: Stop_AD_0001.script"; :log info ">> Please wait 5sec..."; :log info ""; } ## End Script .\Rez\05.06.19(13.20.34)\Stop_AD_Main.script со следующим содержимым: ## ## Script generated 05.06.19 13:20:34 ## Script format: routeros ## ## Main script ## Plese copy and paste this text in Script, and run it... ## Begin Script { /ip dns static remove [/ip dns static find comment=My_BlackList_ADBlock]; /system logging action set memory memory-lines=1; /system logging action set memory memory-lines=65000; :log info ""; :log info ">> Please wait 5 sec..."; :delay 5s; /import file-name=Stop_AD_0001.script; :delay 5s; /file remove Stop_AD_0001.script; } ## End Script То есть будут созданы два файла. Имена которых определены переменной {Script_File_Name}, с рас- рением, определенным переменной {Script_File_Ext}. В первом находится готовый скрипт, который нужно загрузить в роутер Mikrotik, посредством WinBox. Помимо имени, определнного вышеуказанными переменными, файл содержит индекс, в данном случае {0001}. Таким образом полное имя файла формир- ется в виде: {Script_File_Name} + {Index} . {Script_File_Ext}. Пример: Stop_AD_0001.script ................... Stop_AD_0253.script *Что такое индекс? Вернемся к настройке {Script_Size} {Колличество строк в каждом скрипте} Предпо- ложим {Script_Size} имеет значение 10 000 (по умолчанию). В результате парсинга, выбранных ссылок, будет скачано 55 000 доменов. Программа сформирует и разобьет все скаченные спсики доменов на 6 файлов. 55 000 / 10 000 = 5,5. Первый файл получит имя: Stop_AD_0001, второй Stop_AD_0002. И так далее. Зачем разбивать на файлы с заданным {Script_Size}, колличеством списков "ДОМЕНОВ" для блокировки. Разбивка производится с одной единственной целью, во время загрузки скриптов не сильно нагружать роутер. Теперь вернемся к "головному" файлу, который вместо индеса имеет корень {MAIN}. При установках по умолчанию его имя будет: Stop_AD_Main.script. Даннй файл необходим для загрузки всех сгенерирован- ных файлов списков "ДОМЕНОВ". Ниже по тексту, примерный листинг данного файла: { /ip dns static remove [/ip dns static find comment=My_BlackList_ADBlock]; /system logging action set memory memory-lines=1; /system logging action set memory memory-lines=65000; :log info ""; :log info ">> Please wait 5 sec..."; :delay 5s; /import file-name=Stop_AD_0001.script; :delay 5s; /file remove Stop_AD_0001.script; /import file-name=Stop_AD_0001.script; :delay 5s; /file remove Stop_AD_0001.script; } В первых строках строках очищается консоль, далее пауза, импорт первого файла. Удаление первого файла, пауза, импорт второго файла и так далее... **Зачем нужны паузы перед загрузкой скрипта? Опять таки, для уменьшения нагрузки на роутер во время загрузки файлов скриптов Stop_AD_0001.script, Stop_AD_0001.script, Stop_AD_0.. Напомню, пауза опре- деляется переменной {Script_Delay}{ в сек}. В самом скрипте, это выглядит {:delay 5s;} По кончании работы программы, будет предложено удалить две директории: .\Trs .\Tmp В первой директории (.\Trs)содержатся два файла: .\Trs\MikrotikBlackList_Add_{CurrentData} .\Trs\MikrotikBlackList_Del_{CurrentData} Которые отображают логику работы программы. В первый файл заносится информации, о том какие ссылки были добавлены. И причина добавления, пример: { INFO } Add string {galacticcentral.org} Reason for add this item: new WEB Link Во втором, тоже, но по удаленным ссылкам, пример: { INFO } Removed string {} Reason for deleting this item: min lenght Во второй директории (.\Tmp) содержатся все спарсенные файлы. Особой ценности не представляют, мо- жно удалять. 4. Гарантии, лицензия, отказ от ответственности: Программа поставляется на условиях 'КАК-ЕСТЬ', Тоесть я снимаю всякую ответственность за возможные ошибки, содержащиеся в программе и последствия вызванные таковыми. 5. Если есть идеи: Пишем на oleksandr.nosar@gmail.com Описательная часть, (написана/описана) крайне быстро и скомкано, так как все делалось исключительно под себя/для себя. Если будут вопросы и желание пообщаться, всегда к Вашим услугам - Telegramm, Viber (+380675467603) 6. Известные проблемы: Данная программа писалась и тестировалась на Win10 x64 (10.0.14393). Работоспособность на других системах не гарантируется. Не запускать из папок, в которых содержится кириллица! Если программа не запустится, то нужно зарегистрировать библиотеки: .\Dll\comdlg32.ocx .\Dll\Mscomctl.ocx .\Dll\Msinet.ocx .\Dll\Mswinsck.ocx .\Dll\Tabctl32.ocx Пример регистрации: regsvr32.exe /s comdlg32.ocx 7. Если Вам очень понравилось моя программа и есть желание отблагодарить: Ни в коем случае не стоит пренебречь данным желанием;) Яндекc Деньги: 410013190712045 WebMoney : R282691465680, Z330585249900 QiWi : +380675467603
2
|
10.06.2019, 13:37 | |
Ответы с готовыми решениями:
5
Непонятное поведение MikroTik hEX и MikroTik hAP Объединить Mikrotik - Netis - Mikrotik Mikrotik TO Mikrotik (VPN) Mikrotik hAP lite + Mikrotik hAP lite раздача интернета по сети |
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
|
|
10.06.2019, 14:12 [ТС] | 2 |
скрин рабочего процесса
0
|
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
|
||||||
10.06.2019, 14:33 [ТС] | 3 | |||||
Пример листинга:
0
|
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 182
|
|
22.11.2019, 21:19 | 4 |
kreotodr,
Можешь написать для особо одаренных , как перекинуть и запустить это все дело на микроте! т.е , да отлично , создал список файлов Кликните здесь для просмотра всего текста
/import file-name=Stop_AD_0001.scr; /import file-name=Stop_AD_0002.scr; /import file-name=Stop_AD_0003.scr; /import file-name=Stop_AD_0004.scr; /import file-name=Stop_AD_0005.scr; /import file-name=Stop_AD_0006.scr; /import file-name=Stop_AD_0007.scr; /import file-name=Stop_AD_0008.scr; /import file-name=Stop_AD_0009.scr; /import file-name=Stop_AD_0010.scr; /import file-name=Stop_AD_0011.scr; /import file-name=Stop_AD_0012.scr; /import file-name=Stop_AD_0013.scr; /import file-name=Stop_AD_0014.scr; /import file-name=Stop_AD_0015.scr; /file remove Stop_AD_0015.scr; , вот только я не могу понять , сне в корень микрота все скинуть , а потом вручную каждый подтянуть , Можешь подробный инструктаж экспорта в микрот с компа рассказать
0
|
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
|
|
24.11.2019, 12:02 [ТС] | 5 |
1. необходимо переписать все в память Микротика.
2. запустить головной скрипт на выполнение. 3. скрипт подтянет все сам... Если не понятно стучись в телеграмм @the_Kote хотя все это вроде как писал в ридми.. Код
Теперь вернемся к "головному" файлу, который вместо индеса имеет корень {MAIN}. При установках по умолчанию его имя будет: Stop_AD_Main.script. Даннй файл необходим для загрузки всех сгенерирован- ных файлов списков "ДОМЕНОВ". Ниже по тексту, примерный листинг данного файла: { /ip dns static remove [/ip dns static find comment=My_BlackList_ADBlock]; /system logging action set memory memory-lines=1; /system logging action set memory memory-lines=65000; :log info ""; :log info ">> Please wait 5 sec..."; :delay 5s; /import file-name=Stop_AD_0001.script; :delay 5s; /file remove Stop_AD_0001.script; /import file-name=Stop_AD_0001.script; :delay 5s; /file remove Stop_AD_0001.script; } В первых строках строках очищается консоль, далее пауза, импорт первого файла. Удаление первого файла, пауза, импорт второго файла и так далее...
1
|
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
|
|
25.02.2020, 15:27 [ТС] | 6 |
Обновление от 25-02-2020
0
|
25.02.2020, 15:27 | |
25.02.2020, 15:27 | |
Помогаю со студенческими работами здесь
6
Mikrotik mikrotik Mikrotik и Фемтосота Антивирус на Mikrotik Видеонаблюдение на Mikrotik Mikrotik script Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |