Это не мое. Использовались python и php скрипты c
http://forum.nag.ru/forum/index.php?showtopic=80677
Для корректной работы их пришлось немного модифицировать.
Задачи:
- Получить с сайта реестра запрещенных ресурсов выгрузку в формате xml
- Сделать парсинг — извлечь ip и url адреса из файла выгрузки
- Закинуть это на маршрутизатор mikrotik
1. Для получения будем использовать python-скрипты от автора Pavel Yegorov
zapretinfo.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__version__ = «0.0.4»
__author__ = «Pavel Yegorov»
import suds
from base64 import b64encode
#API_URL = «http://www.zapret-info.gov.ru/services/OperatorRequest/?wsdl»
API_URL = «http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl»
В нем мы изменили api_url на новый и версию на 2.2 в 39 строке
result=client.service.sendRequest(xml,sert,»2.2″)
zapret_checker.py
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
# yegorov-p.ru
from xml.etree.ElementTree import ElementTree
from datetime import datetime,timedelta
from zapretinfo import ZapretInfo
import time
import zipfile
from base64 import b64decode
XML_FILE_NAME = «/data/reestr/request.xml»
P7S_FILE_NAME = «/data/reestr/request.xml.sig»
VER = «2.2»
Где XML_FILE_NAME и P7S_FILE_NAME файл запроса и файл запроса, подписанный цифровой подписью. Последний может иметь расширения sign, sig, p7s.
Файл запроса должен быть в формате cp1251.
<?xml version=»1.0″ encoding=»windows-1251″?>
<request>
<requestTime>2012-10-01T01:01:01.000+04:00</requestTime>
<operatorName>имя оператора</operatorName>
<inn>ИНН оператора</inn>
<ogrn>ОГРН оператора</ogrn>
<email>обратная связь</email>
</request>
Как пишут на http://habrahabr.ru/sandbox/51575/ реально проверяются только ИНН и ОГРН. Я убедился, что можно сколь угодно раз посылать эти два файла и получать выгрузку. Хотя по идее, они должны сверять дату.
Файл провайдер подписывал в Крипто-ПРО. Ее можно установить в пробном режиме на 30 дней. Можно каждый раз создавать новый файл запроса (в вышеуказанных ссылках в скриптах он генерируется) и подписывать через openssl, как, например, здесьhttp://blog.timba.org.ua/post/1896.
Чтобы скрипт работал, должен быть установлен python2.6 или 2.7 (в версии 3 скрипт не работает. Я тестировал на 2.7) и модуль suds
Python2.7 ставим из портов
cd /usr/ports/lang/python27
make install clean
Модуль suds тоже из портов
cd /usr/ports/net/py-suds
make install clean
или вручную http://www.py-my.ru/post/4e818bd81d41c821a9000003#!
wget https://fedorahosted.org/releases/s/u/suds/python-suds-0.4.tar.gz
tar -xzf python-suds-0.4.tar.gz
cd python-suds-0.4/
python setup.py build
sudo python setup.py install
Присвоим скрипту права на выполнение и запускаем скрипт chmod +x zapret_checker.py ./zapret_checker.py В итоге сразу же отобразится идентификатор запроса, через некоторое время (7-10 минут) после фраз «Try it now…» появится фраза «Got in!«, что означает, что дамп реестра получен. Этот файл называется dump.xml.
2. Теперь перейдем к парсингу и закидыванию адресов в mikrotik. В прошлой версии статьи мы закидывали каждый адрес отдельным ssh запросом, что вызывало большое количество соединений по ssh и долгую загрузку всего листа с запрещенными адресами, который постоянно растет. Сейчас мы будем бросать список по протоколу ftp
2.1. Установим xml и lftp. Они необходимы для работы нового скрипта
cd /usr/ports/*/xml make install clean cd /usr/ports/*/lftp make install clean
2.2. Создадим в каталоге со скриптом каталог tmp
mkdir tmp
2.3. Создадим новый скрипт с расширением sh
ee new_script.sh
2.4. Добавим в него (по статье http://forum.nag.ru/forum/index.php?showtopic=79836&st=926 ) следующее
#!/bin/sh cd /data/reestr rm /data/reestr/tmp/mt_zapretip.auto.rsc echo -e "/ip firewall address-list remove numbers=[find list=blocklist]" > /data/reestr/tmp/mt_zapretip.auto.rsc echo -e "/ip firewall address-list\r" >> /data/reestr/tmp/mt_zapretip.auto.rsc /usr/local/bin/xml pyx /data/reestr/dump.xml | sort | uniq | grep ^- | sed 's,-,add list=blocklist address=,g;s,$,,g' >> /data/reestr/tmp/mt_zapretip.auto.rsc /usr/local/bin/lftp -u utm, -e "put /data/reestr/tmp/mt_zapretip.auto.rsc ; bye" IPадрес_микротика
Присвоим скрипту права на выполнение. Перед запуском заходим на микротик через winbox, в раздел IP-Services, включаем ftp и добавляем IP сервера со скриптом в список разрешенных. Возвращаемся на сервер, запускаем скрипт. В каталоге Files микротика должен появиться файл mt_zapretip.auto.rsc , который выполнится автоматически.
chmod +x new_script.sh
./new_script.sh
3. Закидываем скрипты в cron.
crontab -e
Добавляем
45 9 * * * root cd /data/reestr/; /data/reestr/zapret_checker.py
0 10 * * * root cd /data/reestr/; /data/reestr/new_script.sh
Между скриптами 15 минутный перерыв, так как между запросом и выгрузкой необходимо подождать несколько минут.
Все скрипты в архиве…reestr_mikrotik, кроме new_script.sh
От автора: не знаю, как будет дальше, но надзор который роском все ужесточает и ужесточает требования к реестру запрещенных ресурсов. Следующим шагом, как мне кажется, станет блокировка сайтов по url и по словам в url. Для создания этой блокировки можно почитать следующую статью https://habrahabr.ru/post/187574/
Октябрь 21, 2016 в 12:43
У меня изучение этих скриптов все равно закончилось переходом на страницу автора
https://github.com/yegorov-p/python-zapret-info