From 69b22c8c30d93d546ba1ecaf6a099a76953723c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BB=D0=B5=D0=B1?= Date: Fri, 16 May 2025 08:56:02 +0300 Subject: [PATCH] docs: up readme --- README.md | 68 ++++++++++++++++++++++++++++++++++++---- celery_app.py | 2 +- driver/driver_creator.py | 15 ++------- initiator.py | 3 +- 4 files changed, 68 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 08ea064..4a7f3fe 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,68 @@ + +# Tempora + Новицкий Глеб Павлович Терехов Павел Сергеевич +Система мониторинга утечек данных предназначена для выявления инцидентов, связанных с публикацией конфиденциальной информации в открытых источниках (форумы, даркнет, Telegram-каналы). Система осуществляет непрерывный сбор, анализ и визуализацию упоминаний, связанных с потенциальными утечками. + +Проект разработан в рамках учебной практики студентом направления «Информационная безопасность автоматизированных систем». ``` - ____________ ______ ____ ___ ___ -/_ __/ __/ |/ / _ \/ __ \/ _ \/ _ | - / / / _// /|_/ / ___/ /_/ / , _/ __ | -/_/ /___/_/ /_/_/ \____/_/|_/_/ |_| - +├── Driver/ Основной компонент для работы с веб-ресурсами +│ ├── chrome_proxy.py Работа с Chrome через undetected-chromedriver + прокси +│ └── driver_creator.py Создание и настройка экземпляра драйвера +├── Tasks/ Модуль задач парсинга +│ ├── forum_crawler.py Парсинг данных с форумов +│ └── tg_crawler.py Парсинг Telegram-каналов +├── Utils/ Вспомогательные утилиты +│ └── logg.py Логирование работы системы +├── Web/ Веб-интерфейс +│ ├── Static/ CSS/JS/Изображения +│ ├── Templates/ HTML-шаблоны +│ └── app.py Flask приложение +└── Основные файлы: + ├── .env Конфигурации, секреты приложения + ├── .gitignore Игнорируемые файлы для Git + ├── celery_app.py Конфигурация Celery + ├── celery_beat.py Планировщик задач Celery + ├── initiator.py Точка входа + ├── requirements.txt Зависимости Python + └── README.md Описание проекта ``` - \ No newline at end of file +### Основные функции + +* Мониторинг 3 телеграм каналов, одного форума + +* Визуализация данных на веб-интерфейсе +* Централизованное логирование и уведомления об ошибках + + +### Запуск проекта + +pip install -r requirements.txt + +В отдельных окнах + +python celery_beat.py +python initiator.py + +### Зависимости + +| Библиотека | Назначение | Область применения | +| -------------------------- | --------------------------------------------------------------------- | -------------------------------------------- | +| `requests` | HTTP-клиент для отправки запросов и получения ответов | Парсинг, работа с API | +| `setuptools` | Инструмент для упаковки Python-проектов и управления зависимостями | Сборка, установка пакетов | +| `python-dotenv` | Загрузка переменных окружения из файла `.env` | Конфигурация, безопасное хранение секретов | +| `tls-client` | Кастомный HTTP-клиент с поддержкой TLS и антибот-защиты | Парсинг сайтов с защитой | +| `undetected-chromedriver` | Модифицированный ChromeDriver, обходящий антибот-защиту | Веб-скрапинг с защитой (Cloudflare и др.) | +| `selenium` | Управление браузером для автоматизации действий | Парсинг, тестирование веб-интерфейсов | +| `grpc_interceptor_headers` | Расширение gRPC-перехватчиков с поддержкой заголовков | gRPC API, метаданные | +| `telethon` | Асинхронная библиотека для работы с Telegram API через MTProto | Мониторинг Telegram-каналов | +| `schedule` | Простое планирование задач в Python | Локальный запуск задач по расписанию | +| `psycopg2-binary` | PostgreSQL-драйвер для Python | Работа с СУБД PostgreSQL | +| `docker` | Python-интерфейс к Docker Engine API | Управление контейнерами программно | +| `asyncio` | Базовая библиотека Python для асинхронного программирования | Асинхронные задачи, неблокирующий ввод/вывод | +| `pytz` | Работа с часовыми поясами | Корректная работа с временем | +| `flask` | Легковесный веб-фреймворк | Веб-интерфейсы, REST API | +| `apscheduler` | Планировщик задач с расширенными возможностями (cron, interval, date) | Автоматизация периодических задач | \ No newline at end of file diff --git a/celery_app.py b/celery_app.py index 0d0d5a5..31b077b 100644 --- a/celery_app.py +++ b/celery_app.py @@ -25,7 +25,7 @@ app.conf.task_queues = ( app.conf.beat_schedule = { 'monitor-telegram-channels': { - 'task': 'tasks.tg_crawler.monitor_channel', + 'task': 'tasks.tg_crawler.monitor_channels', 'schedule': 10.0, 'options': {'queue': 'telegram'} }, diff --git a/driver/driver_creator.py b/driver/driver_creator.py index 22213e6..75ebc92 100644 --- a/driver/driver_creator.py +++ b/driver/driver_creator.py @@ -27,20 +27,15 @@ class DriverCreator: ).create_extension() def get_driver(self): - # extension_path = self._switch_proxy() + extension_path = self._switch_proxy() options = uc.ChromeOptions() - # options.add_argument(f"--load-extension={extension_path}") # временно + options.add_argument(f"--load-extension={extension_path}") # временно # options.add_argument("--headless=new") options.add_argument("--disable-gpu") options.add_argument("--disable-dev-shm-usage") options.add_argument("--no-sandbox") - # options.add_argument("--disable-webgl") - # options.add_argument("--disable-software-rasterizer") - # options.add_argument("--disable-extensions") - - # prefs = {"profile.managed_default_content_settings.javascript": 2} - # options.experimental_options["prefs"] = prefs + driver = uc.Chrome( options=options, @@ -48,9 +43,5 @@ class DriverCreator: # user_multi_procs=True ) - # driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { - # "source": "Object.defineProperty(navigator, 'javaEnabled', {get: () => false});" - # }) - # driver.execute_cdp_cmd("Emulation.setScriptExecutionDisabled", {"value": True}) return driver \ No newline at end of file diff --git a/initiator.py b/initiator.py index 31919f2..4b2d07f 100644 --- a/initiator.py +++ b/initiator.py @@ -18,7 +18,8 @@ def main(): '--pool=solo', '-Q', 'telegram', '--without-heartbeat', - '--without-gossip' + '--without-gossip', + # '-B' ] ) except Exception as e: