Skip to content

Выгрузка списка запрещённых сайтов с сайта Роскомнадзора в plain text файлы

Notifications You must be signed in to change notification settings

zztopper/rknget

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание (Description)

0. Весь код написан целиком на python3.6 с использованием библиотек из дистрибутивов. Временами возможна совместимость с python3.4.

1. Проект изначально предназначался для одного из московских провайдеров. При обнаружении конфиденциальной информации просьба сообщить автору.

2. Из-за кривых выгрузок РКН правила обработки могут содержать особую, уличную магию.

3. Для корректной выгрузки Вам нужно обладать подписанным request.xml на имя Вашей организации. (Логика РКН в этом плане абсолютно не понятна. Информация общедоступна, а для раздачи файла dump.xml.zip достаточно лишь содержать приличный вебсервер и хороший канал связи.)

Требования (Requirements):
    zeep (rknget)
    urllib (rknget)
    xml (rknget)
    zipfile (rknget)
    pyYaml (для всех программ)
    json (для всех программ)
    psycopg2 (web api)
    sqlalchemy (web api)

Установка серверной части:
0. Prerequisites
0.1. Из-за большой буферизации 3-уровневого приложения и питоньего жора сервер довольно требователен к ресурсам (см. документацию).
0.2. Минимальные требования: 2 vcpu 2.4 GHz, 3 GB RAM, 100 iops storage.
0.3. Желательные требования: 4 vcpu 2.6 GHz, 6 GB RAM, 500 iops storage.
1. DB
1.1. Разверните СУБД (например, postgres). 1 ГБ памяти и 5 ГБ хранилища будет достаточно.
1.2. Создайте БД и пользователя для неё, настройте права на подключение.
1.3. Загрузите дамп в БД (пока только postgres) для создания таблиц, индексов, ключей.
2. Application
2.1. Установите python3.4 или выше и библиотеки через pip.
2.2. Разверните вебсервер с поддержкой CGI.
2.3. Поднимите session timeout хотя бы 300 sec.
2.4. Загрузите из репозитория каталог rkn в каталог CGI.
3. Checkout
3.1. Настройте подключение к БД в файле rkn/dbconn.py
3.2. Можете проверить подключение запросом:
http://hostname:port/cgi-bin/rknget/rkn/webapi.py?module=api.monitoring&method=testConn
3.3 Можете настроить SSL, хотя проверка сертификата клиентом принудительно игнорируется.

Установка модулей:
1. Загрузите из репозитория каталог с модулем и rkn/webconn.py
2. Не забудьте поставить python и модули к нему.
3. Отредактируйте config.yml
4. Настройте запуск скрипта по cron.
5. Выдайте права пользователю скрипта, если это необходимо.

Проблемы:

- Скрипты съедают слишком много памяти.
- Это возникает из-за тройной буферизации файла дампа: сначала он закачивается через сервис SOAP, затем передаётся на вебсервер, потом передаётся в парсер.
- Что делать? На моём сервере нет столько памяти.
- После перехода на трёхзвенную архитектуру я написал kngetdirect.py, бэкпортированный специально для работы с базой "локально".

- Я дебажил скрипт, и теперь он не запускается.
- Программа делает в таблице Log PID-подобную запись. Это сделано для избежания двойного запуска. Поставьте forcerun=True или переименуйте файл программы.

- Слишком много ложных срабатываний АС Ревизор.
- Вопрос имплементации блокировок сильно зависит от конфигурации ваших сети и сервисов.

- В базе некорректные данные.
- К сожалению, в дампе тоже много недочётов. Никто не фильтрует контент по ту сторону баррикад. Приходится изворачиваться с URL Encoding.

- В базе не хватает данных.
- Программа отбрасывает заведомо невалидные ip, ipsubnet, non-http(s) proto urls.

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

- На этапе парсинга вылазит ошибка.
- На момент написания программа парсит всё то, что соответствует текущему формату дампа.

- У меня не работает на SomethingDB.
- Набор скриптов делался под PostgreSQL, извините.

- Скрипт поломал ServiceName, и тот не запускается.
- Дважды извините. Тыжпрограммист, сынтегрируй, побольше палок и фекалий.


Дисклеймер (Disclaimer)

0. Вы можете использовать код в своих целях "как есть", на свой страх и риск. Автор не несёт ответственности за отстреленные ноги и заявления по собственному, а также не даёт гарантии, что полученные дампы будут благополучно съедены вашими DPI, MITM, проксями, резолверами, поделками на bash/perl/php/python/etc.

Ссылки (References)

http://vigruzki.rkn.gov.ru/docs/description_for_operators_actual.pdf

About

Выгрузка списка запрещённых сайтов с сайта Роскомнадзора в plain text файлы

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages