Skip to content

Автоматическая выгрузка реестра запрещенных сайтов с zapret-info.gov.ru

Собственно, то, что получилось заставить работать и оно работает:

Правим файл /etc/openssl/openssl.cnf

Это пишем вверху:

openssl_conf = openssl_def

Это - внизу:

[openssl_def]
engines = engine_section

[engine_section]
gost = gost_section

[gost_section]
engine_id = gost
dynamic_path = /usr/lib/openssl/engines/libgost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

Создаем файл req.xml (должен быть в кодировке cp1251):

<?xml version="1.0" encoding="windows-1251"?>
<request>
<requestTime>2012-12-29T16:01:01.000+04:00</requestTime>
<operatorName>Наименование оператора</operatorName>
<inn>1234567890</inn>
<ogrn>1234567890123</ogrn>
<email>[email protected]</email>
</request>

 

Где-то берём файл ЭЦП, обзываем его zapret-info.pem, подписываем наш файл req.xml

openssl smime -sign -in req.xml -out req.xml.sig -binary -signer zapret-info.pem -outform PEM

На выходе получаем подписанный криптоключом файл req.xml.sig

Качаем скрипт для работы с реестром. Вот тут - http://forum.nag.ru/forum/index.php?showtopic=79836&st=460&p=771480&#entry771480

Или тут, локально - zapret-info

Скрипт ломится на адрес API http://zapret-info.gov.ru и получает файл реестра.

Правим файл zapret_checker.py, меняем req.xml.p7s на req.xml.sig

 

Ставим pip:

apt-get install python-module-pip

Ставим эгг suds:

pip install suds

Запускаем скрипт:

python zapret_checker.py

Видим что-то вроде

Got code блаблаблатутпишетсякодприсвоенныйзапросу
Trying to get result...
Not ready yet.

Сообщение "Not ready yet" будет повторяться до тех пор пока не будет получен файл списка.

Через время видим месседж "Got it!" и можем наблюдать файлы result.zip и dump.xml, извлеченный из result.zip.

...

PROFIT

P.S.: Про парсинг файла напишу попозже.

UPD: Парсер - тут

UPD: Роскоцензура поменяла адрес выгрузки, подробнее - в этом посте. Надо поменять в скрипте адрес, больше ничего не меняется.

Leave a Reply

Your email address will not be published. Required fields are marked *

π