Скрипт для автоматической загрузки списка запрещенных сайтов: 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 (успешный), цикл завершается. Значения кодов ошибок можно посмотреть в официальной документации, по ссылке.
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 :)
В продакшин блокировку, основанную на загрузке данных через посредника не выпустишь. В http://sourceforge.net/p/z-i/ данные грузит не Роскомнадзор, а критикующая его группа анонимов. В один прекрасный момент обновление базы может загнуться или там может появиться троянская информация (например, своруют пароль от sourceforge и добавят в список блокировки кремль.ру).
Да - такой вариант возможен, Вы правы.
если нет то вот как должен выглядеть 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
Вы поаккуратнее с тестированием. Были уже замечены случаи блокирования на их сайте при слишком частом обновлении. Так чта... :)
Неправильная тема, должно быть "Скрипт для автоматической загрузки списка сайтов маршрутизируемых в сеть TOR"
На блокировку таки нарвались?
Причины оказались аналогичны этим 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 день потрачен ;).
просто умиляет.
навсамом деле конешно "мего проффесеониальный связьнадзор" предлагает именно так и делать. только что будет если сервер хакнули и под пись ушла на сторону?
видимо осознав бредовость затеи с хранием ключа на сервере они пошли на встречу (признали свой дибилизм) - дату в xml запросе можно не менять, а один раз подписать и на сервере хранить подписанный запрос, вместо хранения приватьной подписи, что позволяет вернуть её на законное место - в сейф руководдителя конторы.
cat dump.xml |sed 's/^.*http/http/g' | grep -o "http://[.\a-z\.]*" > file.txt
Но в итоге там есть такие записи
http://mail http:// http://it И т.п. Плеазе хелп!
[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 на себя самого ругается кто знает как решить? или код уже не актуален?
Такая же проблема