docs: up readme

This commit is contained in:
Глеб Новицкий 2025-05-16 08:56:02 +03:00
parent 9788b5aa4e
commit 69b22c8c30
4 changed files with 68 additions and 20 deletions

View File

@ -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 Описание проекта
```
### Основные функции
* Мониторинг 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) | Автоматизация периодических задач |

View File

@ -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'}
},

View File

@ -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

View File

@ -18,7 +18,8 @@ def main():
'--pool=solo',
'-Q', 'telegram',
'--without-heartbeat',
'--without-gossip'
'--without-gossip',
# '-B'
]
)
except Exception as e: