The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Автоматическое получение списка запрещенных сайтов от РОСКОМНАДЗОР с помощью Perl
Скрипт для автоматической загрузки списка запрещенных сайтов:

   use MIME::Base64;
   use SOAP::Lite;
   open REQ,'<request.xml'; 
   $req.=$_ while <REQ>; 
   close REQ;   
   encode_base64($req);

   open SIG,'<PKCS#7'; 
   $sig.=$_ while <SIG>;
   close SIG;

   $soap = SOAP::Lite->service('http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl');
   $r = $soap->getLastDumpDate(); 
   print "time: $r\\n";

   @r = $soap->sendRequest($req, $sig); 
   $code = $r[2]; 
   print "code: $code\\n";

   sleep 1, print "$_\\n" for 1..300;
   @r = $soap->getResult($code);
   open ZIP,'>register.zip'; 
   print ZIP decode_base64($r[$#r]); 
   close ZIP;


Дополнение:
Сервис рнк обновился, ниже пример автоматической выгрузки в соответствии с
изменёнными рекомендациями:

   use MIME::Base64;
   use SOAP::Lite;
   
   undef $/;

   open REQ,'</home/rkn/request.xml';
   $req = <REQ>;
   close REQ;
   encode_base64($req);

   open SIG,'</home/rkn/PKCS#7';
   $sig = <SIG>;
   close SIG;

   $dfv = '2.0';

   $soap = SOAP::Lite->service('http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl');
   $a = $soap->getLastDumpDate();
   @a = $soap->sendRequest($req, $sig, $dfv);

   while(1) {
        sleep 60;
        @b = $soap->getResult($a[2]);
        last if $b[2] ne 0;
   }

   if($b[2] eq 1){
        open ZIP,'>/home/lennotoecom/file.zip';
        print ZIP decode_base64($b[1]);
        close ZIP;
   }


Цикл выполняется раз в минуту (по рекомендации ркн),
каждый раз проверяя полученный от сервиса код ($b[2]),
пока переменная 0 цикл выполняется, как только код меняется на значения от -1
до -7(ошибки) или 1 (успешный),
цикл завершается.

Значения кодов ошибок можно посмотреть в официальной документации, по ссылке.
 
08.11.2013 , Автор: Lennotoecom
Ключи: perl, script, soap / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Perl / Полезные подпрограммы на Perl / Подпрограммы для WEB

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.2, VecH (ok), 20:07, 10/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Can't locate SOAP/Lite.pm
     
     
  • 2.3, slavon (??), 20:09, 10/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    cpan install SOAP::Lite
     
     
  • 3.5, Lennotoecom (ok), 02:46, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    + и убедитесь также что
    у вас есть библиотеки
    libssl-dev
    expat
    libexpat1-dev или lib64expat1-dev
     
     
  • 4.34, ркрцке (?), 01:42, 19/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    а может тсё же перловый соап поставить?
     

  • 1.4, sabitov (ok), 21:04, 10/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    IMHO, конечно, но лучше вот это:

    svn checkout svn://svn.code.sf.net/p/z-i/code-0/trunk z-i-code-0
    http://sourceforge.net/p/z-i/code-0/HEAD/tree/dump.csv?format=raw

    Чудесный цсв, и никаких XML :)

     
     
  • 2.6, Аноним (-), 09:05, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > svn checkout svn://svn.code.sf.net/p/z-i/code-0/trunk z-i-code-0
    > http://sourceforge.net/p/z-i/code-0/HEAD/tree/dump.csv?format=raw

    В продакшин блокировку, основанную на загрузке данных через посредника не выпустишь. В http://sourceforge.net/p/z-i/ данные грузит не Роскомнадзор, а критикующая его группа анонимов. В один прекрасный момент обновление базы может загнуться или там может появиться троянская информация (например, своруют пароль от sourceforge и добавят в список блокировки кремль.ру).

     
     
  • 3.7, Дядя_Федор (?), 11:08, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Все может быть намного печальнее. РКН фиксируют обращения провайдеров к своему реестру. Если обращения от кого-либо, кто есть в их базе нет - придет "письмо счастья" из РКН (случаи уже были, и не один). Аргументы о загрузке реестра из других источников в данном случае оправданием не является. Лишат лицензии с легкостью изумительной. А без лицензии - тут же статья о незаконной предпринимательской деятельности - паровозом.
     
     
  • 4.10, aurved (?), 14:26, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    письмо счастья придет и обязательно, но вроде возможен вариант -- договор официальный с другим  провайдером, который сам забирает "правильно" этот список блокировки и "светит" свои запросы, подписанные своей ЭЦП дважды в день в Роскомнадзоре.
     
     
  • 5.11, Дядя_Федор (?), 14:29, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > письмо счастья придет и обязательно, но вроде возможен вариант -- договор официальный
    > с другим  провайдером, который сам забирает "правильно" этот список блокировки
    > и "светит" свои запросы, подписанные своей ЭЦП дважды в день в
    > Роскомнадзоре.

    Да - такой вариант возможен, Вы правы.


     

  • 1.8, WisDem (??), 13:58, 11/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    что-то упорно пишет неверный алгоритм ЭП
    запрос мы уже подписанный отправляем, или он подписывается по мере прохождения скрипта?
     
     
  • 2.9, Lennotoecom (ok), 14:24, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    в скрипте ничего не подписывается.
    request.xml и PKCS#7 которые вы отправляете в скрипте у вас работают в ручном режиме?
    http://vigruzki.rkn.gov.ru/tooperators_form/

    если нет то вот как должен выглядеть request.xml
    он должен быть создан обязательно в windows-1251 кодировке

    <?xml version="1.0" encoding="windows-1251"?>
    <request>
    <requestTime>2013-11-07T08:05:00.000+04:00</requestTime>
    <operatorName>ООО "Рога и копыта"</operatorName>
    <inn>1111111111</inn>
    <ogrn>1111111111111</ogrn>
    <email>test@example.net</email>
    </request>

    файл открепленной электронной подписи в формате PKCS#7 создается, например с
    помощью криптоПРО командой
    csptest.exe -sfsign -sign -detached -add -in C:\Zapros_reestr.xml -out C:\Zapros_reestr.xml.sign -my mail@domen.ru


    что подробно рассказано тут
    http://itmemo.ru/2012/12/sozdanie-fayla-otkreplennoy-elektronnoy-podpisi-v-fo

     

  • 1.12, aurved (?), 14:29, 11/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тоже вот неплохой вариант, да еще некоторые вещи инетресно расписаны, например как вытащить закрытый ключ из носителя, а уж потом его на nix-сервер скопировать и там им подписывать запросы -- https://www.evernote.com/shard/s185/sh/ceb0b021-47e7-4c61-ab43-bc6db27fe919/c5
     
  • 1.13, WisDem (??), 14:51, 11/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    интересно, в ручном режиме час назад запустил, все прошло, сейчас упорно ошибку выдает. хм тестируем дальше
     
     
  • 2.14, Дядя_Федор (?), 16:00, 11/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > интересно, в ручном режиме час назад запустил, все прошло, сейчас упорно ошибку
    > выдает. хм тестируем дальше

    Вы поаккуратнее с тестированием. Были уже замечены случаи блокирования на их сайте при слишком частом обновлении. Так чта... :)


     

  • 1.15, pavlinux (ok), 21:39, 11/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Скрипт для автоматической загрузки списка запрещенных сайтов:

    Неправильная тема, должно быть "Скрипт для автоматической загрузки списка сайтов маршрутизируемых в сеть TOR"

     
  • 1.16, WisDem (??), 07:59, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    все заработало, после общения с тп)
     
     
  • 2.17, Дядя_Федор (?), 08:41, 12/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > все заработало, после общения с тп)

    На блокировку таки нарвались?


     

  • 1.19, Nope (?), 20:09, 12/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Wide character in subroutine entry at ./unlaw.pl line 25.
     
     
  • 2.20, Lennotoecom (ok), 10:39, 13/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    1. отправляемые файлы в ручном режиме работают?
    2. попробуйте только дату получить для начала через
    $soap = SOAP::Lite->service('http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl');
    $r = $soap->getLastDumpDate();
     

  • 1.28, ap_ (ok), 17:12, 27/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    С перловским SOAP::Lite (1.08) иногда в результатах пусто. Данным скриптом ошибка не отлавливается.

    Через tcpdump установлена ошибка вида SOAP-ENV:VersionMismatch и Wrong.Version

    Причины оказались аналогичны этим
    http://www.perlmonks.org/?node_id=650014
    https://rt.cpan.org/Public/Bug/Display.html?id=29505

    Помогло такое решение:
    перед
    $soap = SOAP::Lite->service ....
    указать
    $SOAP::Constants::PREFIX_ENV = 'SOAP-ENV';

    PS:1 день потрачен ;).

     
  • 1.30, Артадокс (?), 12:27, 04/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всем огромное спасибо за файлик, но пока допер что вместо open SIG,'<PKCS#7'; необходимо указать open SIG,'<файл_с_расширением.sign'; потратил много нервов :(((((((
     
  • 1.31, хрен_с_горы (?), 20:05, 08/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    гы-гы это авторы предлагают подпись на сервере хранить? один вопрос - вы идиоты?
     
  • 1.32, хрен_с_горы (?), 12:38, 09/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    да сам скрип напмсан либо пьным либо безумным конструкция
       $code = $r[2];
       print "code: $code\n";

    просто умиляет.

     
  • 1.33, пываппукпйцук (ok), 22:20, 10/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    дополню.

    навсамом деле конешно "мего проффесеониальный связьнадзор" предлагает именно так и делать. только что будет если сервер хакнули и под пись ушла на сторону?

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

     
  • 1.35, Alpha (?), 00:52, 14/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо бы поправить скриптик... С 1 августа 2014 изменился порядок выгрузка.
     
     
  • 2.36, Lennotoecom (??), 11:20, 14/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Я уже запостил, находится на модерации
     

  • 1.37, Артадокс (?), 17:07, 14/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Проблемммма: ребята подскажиет что делать
    1.Сдох жесткий с Debian - установил новый
    2.Залил скрипты со старого(бекапенные) рабочие
    3.Поставил SOAP::Lite 1.11
    в файле register.zip 1 байт......
    Не могу понять куда дальше смотреть.То что предлагал  ap_, 17:12, 27/11/2013 тоже делал....
    В тупике......
     
  • 1.38, Alpha (?), 00:01, 15/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Походу модераторам не очень интересно постить полезные темы... Чето как-то долго на модерации находится...
     
  • 1.39, Артадокс (?), 11:18, 15/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Огромное спасибо Lennotoecom всего тебе наилучшего, чтобы все было в кайф.....
    Задача решилась новым скриптом.... :))))
     
  • 1.40, Ogma (?), 12:41, 17/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Народ, где можно взять новый скрипт?
     
  • 1.41, Ogma (?), 12:42, 17/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А все увидел:)
     
  • 1.42, Walkorner (?), 11:25, 20/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Народ - никто не задумался как извлечь url из архива который скачиваеца в виде списка в отдельный файл?
    Я пробовал так

    cat dump.xml |sed 's/^.*http/http/g' | grep -o "http://[.\a-z\.]*" > file.txt

    Но в итоге там есть такие записи

    http://mail
    http://
    http://it

    И т.п.
    Плеазе хелп!

     
  • 1.43, Walkorner (?), 14:31, 04/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот те раз че никто ничего не предложит?????
    Да видно перевелись на земле добры молодцы ....
     
     
  • 2.45, Максим (??), 14:35, 28/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Добрый у вас заработал скрипт для загрузки списка запрещенных сайтов?
     

  • 1.44, Максим (??), 14:34, 28/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уже второй день бьюсь вылезает ошибка

    [ErrorCode: 0x00000000]
    Use of uninitialized value in subroutine entry at C:/Perl64/site/lib/SOAP/Lite.p
    m line 289.
    Use of uninitialized value in subroutine entry at C:/Perl64/site/lib/SOAP/Lite.p
    m line 289.

    при работе с данным способом, soap на себя самого ругается кто знает как решить? или код уже не актуален?

     
     
  • 2.46, Dmitry (??), 17:53, 19/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Уже второй день бьюсь вылезает ошибка
    > [ErrorCode: 0x00000000]
    > Use of uninitialized value in subroutine entry at C:/Perl64/site/lib/SOAP/Lite.p
    > m line 289.
    > Use of uninitialized value in subroutine entry at C:/Perl64/site/lib/SOAP/Lite.p
    > m line 289.
    > при работе с данным способом, soap на себя самого ругается кто знает
    > как решить? или код уже не актуален?

    Такая же проблема

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру