Прошло уже несколько дней, как работает единый реестр запрещенных ресурсов zapret-info.gov.ru. Все интернет-провайдеры России обязаны получать оттуда данные о заблокированных доменных именах и IP-адресах. К сожалению, сделать это не так-то просто, как хотелось бы. Вместо открытого списка с именами и адресами нас ожидает лишь форма проверки нахождения ресурса в реестре, причем, как полагается, с каптчей.

Естественно, что перебирать все ресурсы было бы глупо, поэтому, специально для провайдеров, есть раздел ручной и автоматической выгрузки реестра. Однако, не все так просто как хотелось бы. Чтобы получить реестр необходимо иметь файл запроса, цифровую подпись и стальные нервы.

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

Цифровая подпись


Итак, первое с чего следует начать, это с цифровой подписи. Центров выдачи сертификатов развелось достаточное количество, и такое ощущение, что вариантов самих же сертификатов не меньше. Первое что мы попробовали, это использовать сертификат, который используется нами на электронной бирже «Сбербанк-АСТ», естественно, что она не подошла. Оказывается, для выгрузки списка необходима квалифицированная электронная подпись, причем от аккредитованного Минкомсвязью удостоверяющего центра. Позвонив ближайшему к нам реселлеру торговому представителю одного из центров, мы узнали, что такие электронные подписи они еще не выдают. Позвонив непосредственно в центр нам сообщили, что такие подписи они продают, но не напрямую, а только через торговых представителей. Поговорив еще немного и с теми, и с теми, нам все-таки удалось узнать, как нам такую подпись получить и сколько она будет стоить.

Сразу хотелось бы объяснить, почему не обратились в другие центры. Дело в том, что для получения подписи необходимо личное присутствие, т.е. есть реальная необходимость ехать за документами и USB-токеном. Поездки по областям, конечно, только затягивают этот процесс.

Ну и несколько слов о том, чем же отличается такая подпись, от различных, именуемых «классик», «голд» и «платинум». Оказывается в ней есть поля-параметры 1.2.643.3.131.1.1 для ИНН и 1.2.643.100.1 для ОГРН. Удивительно, но все остальные сертификаты содержат ИНН и ОГРН в одном поле, что впрочем нисколько не мешает им однозначно идентифицировать владельца.

Файл запроса


Пока улаживаются все вопросы с электронной подписью можно сосредоточится на файле запроса. Формат запроса и принцип работы с ним описан в так называемой памятке оператору связи. 9 ноября в нее наконец-то добавили адрес для связи с техподдержкой (кому она теперь нужна), до этого вообще было не понятно с кем связываться, и приходилось все делать методом научного тыка.

Итак, запрос представляет собой XML-файл, содержащий время запроса, название организации, ИНН, ОГРН и контактный адрес электронной почты. В век, когда utf-8 является стандартом де-факто, нам предлагают использовать windows-1251 :(

<xml version="1.0" encoding="windows-1251"?>
<request>
        <requestTime>2012-01-01T01:01:01.000+04:00</requestTime>
        <operatorName>Наименование оператора</operatorName>
        <inn>1234567890</inn>
        <ogrn>1234567890123</orgn>
        <email>email@email.ru</email>
</request>


По всей видимости, реально разбираются только ИНН и ОГРН (сверяются с сертификатом, и базой операторов связи), все остальное может быть каким угодно, хотя указывать неверные ИНН и ОГРН мы не пробовали. Возможно, что остальные поля будут использоваться в дальнейшем, либо просто записываются в базу в качестве справочной информации. Шаблон файла запроса периодически обновляют, поэтому есть смысл иногда заглядывать в памятку, не изменилось ли чего.

Проверка подписи


Для того, чтобы проверить корректность подписи, можно воспользоваться сервисом проверки электронной подписи. Нас интересует раздел «Подтверждение подлинности ЭП электронного документа. ЭП — отсоединенная, в формате PKCS#7». На данном этапе мы потратили больше всего времени. Поначалу было не понятно, что же нужно загрузить в поля, затем оказалось, что подпись, которую мы использовали не будет проходить в реестре. Если кратко, то вам надо с помощью каких-либо средств подписать ваш файл запроса, тем самым получив новый файл, содержащий открепленную подпись. Затем, в качестве документа для проверки вам необходимо загрузить файл запроса (xml), а в качестве подписи для проверки — файл открепленной подписи (sig). Если все в порядке, то вы увидите информацию, что документ подписан и подпись действительна.

Кстати, каптча этого сервиса не всегда цифровая, бывают и буквы, а вот валидацию проходят только цифры, так что каждый третий запрос не удается :(

Результат


Если у вас есть файл запроса, его подпись и вы оператор связи, то вы готовы получить святая святых — реестр запрещенных ресурсов. Пока вручную. Прикрепляем к форме файл запроса, файл подписи, угадываем каптчу и отправляем запрос. Оказывается, что проверка проходит не моментально, вместо этого нам выдают идентификатор запроса в виде md5-хэша, который подставив в форму ниже мы можем периодически проверять. Если все было сделано правильно, то через несколько «Ваш запрос еще не обработан», вы увидите ссылку для загрузки реестра, в виде zip-архива, содержащего файл dump.xml — список в формате XML и dump.xml.sig — файл электронной подписи.

Формат XML файла подробно описан в памятке оператору связи.

Заключение


Если вы смогли выгрузить файл вручную, то проблем с выгрузкой в автоматическом режиме возникнуть не должно. На хабре уже упоминались скрипты для автоматизации этой процедуры.