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