docs: up readme
This commit is contained in:
parent
9788b5aa4e
commit
69b22c8c30
66
README.md
66
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 Описание проекта
|
||||||
|
```
|
||||||
|
### Основные функции
|
||||||
|
|
||||||
|
* Мониторинг 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) | Автоматизация периодических задач |
|
@ -25,7 +25,7 @@ app.conf.task_queues = (
|
|||||||
|
|
||||||
app.conf.beat_schedule = {
|
app.conf.beat_schedule = {
|
||||||
'monitor-telegram-channels': {
|
'monitor-telegram-channels': {
|
||||||
'task': 'tasks.tg_crawler.monitor_channel',
|
'task': 'tasks.tg_crawler.monitor_channels',
|
||||||
'schedule': 10.0,
|
'schedule': 10.0,
|
||||||
'options': {'queue': 'telegram'}
|
'options': {'queue': 'telegram'}
|
||||||
},
|
},
|
||||||
|
@ -27,20 +27,15 @@ class DriverCreator:
|
|||||||
).create_extension()
|
).create_extension()
|
||||||
|
|
||||||
def get_driver(self):
|
def get_driver(self):
|
||||||
# extension_path = self._switch_proxy()
|
extension_path = self._switch_proxy()
|
||||||
|
|
||||||
options = uc.ChromeOptions()
|
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("--headless=new")
|
||||||
options.add_argument("--disable-gpu")
|
options.add_argument("--disable-gpu")
|
||||||
options.add_argument("--disable-dev-shm-usage")
|
options.add_argument("--disable-dev-shm-usage")
|
||||||
options.add_argument("--no-sandbox")
|
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(
|
driver = uc.Chrome(
|
||||||
options=options,
|
options=options,
|
||||||
@ -48,9 +43,5 @@ class DriverCreator:
|
|||||||
# user_multi_procs=True
|
# 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
|
return driver
|
@ -18,7 +18,8 @@ def main():
|
|||||||
'--pool=solo',
|
'--pool=solo',
|
||||||
'-Q', 'telegram',
|
'-Q', 'telegram',
|
||||||
'--without-heartbeat',
|
'--without-heartbeat',
|
||||||
'--without-gossip'
|
'--without-gossip',
|
||||||
|
# '-B'
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
Loading…
Reference in New Issue
Block a user