Добрый день!
Думаю не я один столкнулся с проблемой выгрузки реестра запрещенных сайтов в новом формате.
Многие использовали готовый скрипт:
#!/usr/bin/env 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 = "zapros.xml"
P7S_FILE_NAME = "zapros.xml.p7s"
#Если файлик ранее выгружался, то пробуем получить из него данные
try:
    ts=ElementTree().parse("dump.xml").attrib['updateTime']
    dt = datetime.strptime(ts[:19],'%Y-%m-%dT%H:%M:%S')
    fromFile=int(time.mktime(dt.timetuple()))
except:
    fromFile=0
opener=ZapretInfo()
#print opener.sendRequest(XML_FILE_NAME,P7S_FILE_NAME)
#Проверяем, изменился ли файлик
if opener.getLastDumpDate()/1000<>fromFile:
    #Файлик изменился. Отправляем запрос на выгрузку
    request=opener.sendRequest(XML_FILE_NAME,P7S_FILE_NAME)
    #Проверяем, принят ли запрос к обработке
    if request['result']:
        #Запрос не принят, получен код
        code=request['code']
        print 'Got code %s' % (code)
        print 'Trying to get result...'
        while 1:
            #Пытаемся получить архив по коду
            request=opener.getResult(code)
            if request['result']:
                #Архив получен, скачиваем его и распаковываем
                print 'Got it!'
                file = open('result.zip', "wb")
                file.write(b64decode(request['registerZipArchive']))
                file.close()
                zip_file = zipfile.ZipFile('result.zip', 'r')
                zip_file.extract('dump.xml', '')
                zip_file.close()
                break
            else:
                #Архив не получен, проверяем причину.
                if request['resultComment']=='запрос обрабатывается':
                    #Если это сообщение об обработке запроса, то просто ждем минутку.
                    print 'Not ready yet.'
                    time.sleep(60)
                else:
                    #Если это любая другая ошибка, выводим ее и прекращаем работу
                    print 'Error: %s' % request['resultComment']
                    break
    else:
        #Запрос не принят, возвращаем ошибку
        print 'Error: %s' % request['resultComment']
else:
    print 'No updates'
Все до недавнего времени было хорошо и комфортно, но силовики ввели некий параметр versionNum=2, который предоставляет выгрузку реестра в новом формате (небольшие изменения в контенте):
4. Для автоматизированного получения выгрузки в новом формате будет модифицирован веб-сервис – для метода sendRequest будет введен новый необязательный параметр versionNum. Если этот параметр не указан, либо указано значение versionNum=1, то будет возвращаться выгрузка в текущем формате, которая будет содержать данные только по реестрам 1-3. При указании versionNum=2 будет возвращаться выгрузка в новом формате, содержащая данные по всем реестрам. В течение некоторого времени (1-2 месяца) будет поддерживаться предоставление выгрузки как в старом, так и в новом формате. На стороне Роскомнадзора будет происходить мониторинг обращений и определение используемой версии. Операторам связи необходимо будет как можно оперативное модернизировать своё ПО и перейти на использование нового формата выгрузки. После завершения переходного периода запрос выгрузки в старом формате будет запрещен – при подаче запроса на получение выгрузки без указания номера версии или при указании versionNum=1 будет выдаваться сообщение о невозможности предоставления выгрузки в данном формате. При таких изменениях в веб-сервисе во время переходного периода существующий у операторов связи софт для получения выгрузки продолжит работать корректно, что позволит осуществить плавный переход к новому формату без прекращения блокировок по действующим реестрам 1-3.
В большинстве случаев админы мало знакомы с Питоном и сейчас у многих ступор куда и как в sendRequest впихнуть данный параметр.
Гуру help!!!


