LINUX.ORG.RU

Выгрузка запрещенных сайтов из реестра и versionNum=2 (Python)


2

4

Добрый день!

Думаю не я один столкнулся с проблемой выгрузки реестра запрещенных сайтов в новом формате.

Многие использовали готовый скрипт:


#!/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!!!

Ответ на: комментарий от rogerw

мож эт конструктор?

в этом случае кодекс нормальных парней — разрешает это делать :-)

но я другое хочу сказать... что за библиотека такая? «zapretinfo»? где её взять? :-)

[regular-user@localhost ~]$ cd ~/Desktop/
[regular-user@localhost Desktop]$ pyvenv z
[regular-user@localhost Desktop]$ . z/bin/activate
(z) [regular-user@localhost Desktop]$ pip install zapretinfo
Downloading/unpacking zapretinfo
  Could not find any downloads that satisfy the requirement zapretinfo
Cleaning up...
No distributions at all found for zapretinfo
Storing debug log for failure in /home/regular-user/.pip/pip.log
(z) [regular-user@localhost Desktop]$ 
user_id_68054 ★★★★★ ()
Последнее исправление: user_id_68054 (всего исправлений: 3)
Ответ на: комментарий от rogerw

спасиб за ссылку.. ..теперь хоть ясно как оно работает :-)

однако — всё это не серьёзно как-то. :)

ни одного тэга нет в GIT-репозитории.

а пакет «suds» кажись является [discontinued]

user_id_68054 ★★★★★ ()
Ответ на: комментарий от rogerw

вот нахера в имени метода заглавные буквы !!!

Такое часто бывает в портированных приложениях. Особенно, портированных с Java.

anonymous ()

а я не понял, это какой-то особый список, не тот, что можно собрать с git? и если тот же, то накой пёс такой изврат?

anonymous ()
Ответ на: комментарий от dev-ice

да вот и дело то все в том что не в версии XML проблема, а как прикрутить к sendRequest параметр versionNum=2

Пипец. Админы ISP не могут параметр в запросе передать. Как ваша лавочка называется?

anonymous ()
Ответ на: комментарий от anonymous

Наша лавочка называется «Дусины Бусики» )))) Админа в провайдере 2 человека, клиентов пару сотен. Кто ж был готов к напору со стороны ведомств?))

dev-ice ()
Ответ на: комментарий от unixnik

http://eais.rkn.gov.ru/tooperators/

а чего накинулись? да - туповат и неквалифицирован, да - оператор это шарашкина контора, да - делает это через задницу

но должен делать подобное ибо закон

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от fornlr

фигасе какие заморочки.

- Тому, кто это придумал, надо в голову гвоздь забить.

- Я его презираю.

anonymous ()
Ответ на: комментарий от fornlr

пропущу половину мимо ушей, но доля правды есть, мы - не ростелеком, не эртелеком(которые по моим данным через ж. сделали, кроме версий) , не ТТК, как можем так и выкручиваемся

dev-ice ()
Ответ на: комментарий от dev-ice

мы - не ростелеком, не эртелеком(которые по моим данным через ж. сделали, кроме версий)

в случае с ЭР-Телеком прокатывает эта штука:

http://httpdistortion.org/

а у вас прокатывает оно?

user_id_68054 ★★★★★ ()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от anonymous

более того скажу, стандартизации нет никакой, и даже крупные провайдеры вешались как блочить URL, не затрагивая домен целиком, да так чтобы скорость на аплинках не падала. L7 сразу нет.

dev-ice ()
Ответ на: комментарий от anonymous

а в случае с моим провайдером ваще прокатывает смена DNS на 8.8.8.8

а ЭР-Телеком — подменяет информацию внутри ответных DNS-пакетов, которые идут от 8.8.8.8 [собственно подменяет - внутри любых DNS-пакетах]

хотя делает это не качественно. например только «A» запросы, но не трогает «ANY» (и остальные) запросы

user_id_68054 ★★★★★ ()
Ответ на: комментарий от user_id_68054

ФСК, Минюст, Прокуратура. списки генерируются несколькими службами

dev-ice ()
Ответ на: комментарий от user_id_68054

Бредовый список (или это неофициальный?): есть как и имена хостов, так и ресурсы на этих хостах, лишнее бы убрали; отдельные *.png тоже удивляют - нельзя что ли владельцу послать запрос о удалении, а уже потом если что блокировать весь ресурс.

anonymous ()
Ответ на: комментарий от anonymous

Бредовый список [...]: есть как и имена хостов, так и ресурсы на этих хостах, лишнее бы убрали

думаю это связано с тем чтобы провайдеры могли бы блокировать хотя бы как, кто как умеет. кто по ip, кто по домену, а кто по URI отдельно каждую страничку :-)

всё для комфорта блокировщиков. а уж выкинуть лишнее — каждый сам для себя сможет (у каждого лишнее — разное :))

или это неофициальный?

не официальный.

а в официальной инфы — я вообще не знаю.

мне официальный список ни кто не показывает :-) ..он же секретный :-D

user_id_68054 ★★★★★ ()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

мне официальный список ни кто не показывает :-) ..он же секретный :-D

Хм.. похоже на то, а было бы неплохо, если хотя можно было видеть актуальный на месяц назад.

anonymous ()

Таска актуальна? Есть перловый качальщик, могу дать на тестирование версию с versionNum (ключей на доступ уже нету).

gh0stwizard ★★★★★ ()
Ответ на: комментарий от Eddy_Em

должен

Если не ублюдок конченый, то единственное, что он должен — уволиться нахрен!

«Сломал хакер Вася интернет-провайдера. И сидит теперь, как дурак, без интернета».

sin_a ★★★★★ ()
Ответ на: комментарий от dev-ice

счас на стадии тестирования и подкидывания wsdl параметров. Как будет результат - напишу.

dev-ice ()
Ответ на: комментарий от gh0stwizard

если не сложно - куда-нить на файлообменник скиньте, я посмотрю что из него можно изьять для решения проблемы. спасибо

dev-ice ()

opener.sendRequest(XML_FILE_NAME,P7S_FILE_NAME,2) я использую перл у меня работает тестить можно по урлу http://vigruzki.rkn.gov.ru/services/OperatorRequestTest/?wsdl

Пока по основному урлу у них ни хрена не работает у самих.

Если в файле видишь строку типа «<reg:register updateTime=„2014-02-02T12:00:00+04:00“ updateTimeUrgently=„2014-02-01T11:00:00“ formatVersion=„2.0“» это оно самое.

А вооще роскомпозор офигел, они подсетями будут блокировать буржуйских хостеров кто их посылает, а это почти все зы... :)

С чем всех и поздравляю, по моему это «великий китайский фаервол» уже напоминает.

big-town ()
Ответ на: комментарий от big-town

они подсетями будут блокировать буржуйских хостеров

к IPv6 готовятся, что ли? :-)

user_id_68054 ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Если не ублюдок конченый, то единственное, что он должен — уволиться нахрен!

А жрать ты мне тоже принесешь? То что процедуру писали чудаки на букву «м» не отменяет необходимости ее соблюдать, чтобы находиться в рамках закона...

// сам - админ мелкого провайдера

Pinkbyte ★★★★★ ()

Выгрузка запрещенных сайтов из реестра и versionNum=2

В файле zapretinfo.py исправь result=client.service.sendRequest(xml,sert) на result=client.service.sendRequest(xml,sert,«2.0»)

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.