🇹🇷 Türkçe Dokümantasyon | 🇬🇧 English Documentation | 🇷🇺 Russian Documentation | 🇨🇳 Chinese Documentation
Important
EyeOfWeb был разработан исключительно для академических исследований, образования и моделирования сценариев безопасности. Использование этого программного обеспечения на реальных людях без их согласия, несанкционированный сбор или хранение персональных данных может нарушать KVKK (Закон Турции о защите персональных данных), GDPR (Общий регламент по защите данных ЕС) и другие национальные/международные законы о конфиденциальности и может привести к серьезным юридическим санкциям.
Разработчики проекта не несут никакой прямой или косвенной юридической, финансовой или уголовной ответственности за любое незаконное или неэтичное использование программного обеспечения. Вся юридическая и этическая ответственность лежит на конечном пользователе, использующем программное обеспечение.
EyeOfWeb has been developed strictly for academic research, education, and legal security simulations. Unauthorized use, collection, or storage of personal data on real individuals may violate KVKK (Turkish Data Protection Law), GDPR, and other international privacy laws, resulting in serious legal penalties.
The developers assume no direct or indirect legal, financial, or criminal liability for any illegal or unethical use of the software. The end-user bears full legal and ethical responsibility.
- 🐳 Быстрый старт с Docker
- Краткий обзор
- Основные функции и возможности
- Техническая архитектура
- Технологический стек
- Структура проекта
- Руководство по установке
- Варианты конфигурации
- Лицензия
- Благодарности и участники
- Скриншоты интерфейса
| Файл / File | Описание / Description |
|---|---|
| doc/DOCKER.md | 🐳 Руководство по установке и управлению Docker |
| doc/CRAWLER.md | 🕷️ Руководство пользователя Crawler (Турецкий) |
| doc/CRAWLER_EN.md | 🕷️ Crawler user guide (English) |
| doc/CHANGELOG.md | 📝 Журнал изменений / Changelog |
Tip
Самый быстрый способ начать работу - использовать Docker! Docker is the fastest way to get started!
Примечание / Note: Образ Docker по умолчанию использует версию Torch CPU для экономии места. Вам может потребоваться изменить установку Torch в src/Dockerfile для использования GPU.
Note: The Docker image uses the Torch CPU version by default to save space. You may need to modify the Torch installation in src/Dockerfile for GPU usage.
# 1. Клонировать репозиторий
git clone https://github.com/MehmetYukselSekeroglu/eye_of_web.git
cd eye_of_web/src
# 2. Запустить с помощью Docker Compose
sudo docker compose up -d --build
# 3. Следить за логами
sudo docker compose logs -f webДоступ: http://localhost:5000
Администратор по умолчанию: admin / admin123_changeme
| Сервис / Service | Порт | Описание / Description |
|---|---|---|
| Веб-приложение | 5000 | Основной веб-интерфейс / Main web interface |
| PostgreSQL | 5432 | Реляционная база данных / Relational database |
| Milvus | 19530 | Векторная база данных / Vector database |
| Crawler Worker | - | Фоновый сканер / Background crawler |
📖 Для детальной установки: doc/DOCKER.md
EyeOfWeb — это комплексная и профессиональная платформа разведки безопасности, которая объединяет методологии разведки по открытым источникам (OSINT) с технологиями биометрического анализа нового поколения на основе глубокого обучения.
Система автономно сканирует визуальные данные из различных источников в Интернете (новостные порталы, блоги, RSS-каналы и т.д.), обнаруживает лица на этих изображениях, создает уникальный математический вектор (эмбеддинг) для каждого лица и индексирует эти векторы в высокопроизводительной векторной базе данных (Milvus). Параллельно метаданные, такие как источник, дата и уровень риска обнаруженных лиц, сохраняются в реляционной базе данных (PostgreSQL).
Благодаря этой «гибридной архитектуре баз данных» EyeOfWeb может выполнять расширенный анализ, такой как поиск личности 1:N, сравнение лиц 1:1, анализ социальных сетей/связей и профилирование персон среди миллиардов данных о лицах за миллисекунды.
Ниже подробно описаны все основные функции, определенные в модуле src/app/routes/web.py и доступные через пользовательский интерфейс/API.
Это самый мощный и сложный инструмент анализа EyeOfWeb. Он выполняет комплексный социометрический анализ на основе фотографий конкретного человека.
Маршрут: /comprehensive_person_analysis/<face_id>
Как это работает:
- Сбор цели и контекста: Собирается целевое лицо (
face_id) и ВСЕ другие лица, появляющиеся в тех же кадрах. - Стратегия "Cluster All" (Кластеризовать всех): Все собранные лица (включая цель) кластеризуются вместе с использованием продвинутого алгоритма жадной кластеризации. Это идеально отделяет целевого человека от двойников или ошибочных обнаружений.
- Идентификация кластера цели: Кластер, принадлежащий «Целевой Персоне», идентифицируется с использованием исходных данных лица и сходства эмбеддингов.
- Анализ отношений: Подсчитываются только случаи, когда лицо из «Кластера Цели» появляется на одном изображении с лицом из «Другого Кластера».
- Результаты: Этот метод устраняет проблемы ложных срабатываний (false positives) и самосовпадения (self-matching), обеспечивая наиболее точный социометрический анализ.
Сценарии использования:
- Картирование социального круга человека.
- Анализ того, в каких средах и с кем находится человек.
- Выявление паттернов связей (network patterns).
Выводы:
- Список связанных лиц (с репрезентативным изображением лица).
- Количество совместных появлений и размер группы для каждого связанного лица.
- Статистика анализа (всего обработано лиц, уникальных изображений и т.д.).
- Загружаемый PDF отчет (
/download/comprehensive_analysis_report).
Анализирует, как часто конкретное лицо появляется на одной фотографии с другими лицами, зарегистрированными в системе. Обеспечивает более быструю альтернативу Комплексному анализу персоны, но не выполняет группировку на основе сходства.
Маршрут: /deep_insight/<face_id>
Как это работает:
- Все изображения, содержащие целевое лицо (
face_id), извлекаются из PostgreSQL (таблицаImageBasedMain). - Перечисляются все другие лица, найденные вместе с целевым лицом на этих изображениях.
- Подсчитывается, на скольких различных изображениях каждое другое лицо появляется вместе с целевым лицом.
- Топ-10 наиболее часто встречающихся лиц перечисляются с подробной информацией.
EyeOfWeb предлагает различные режимы поиска для удовлетворения различных потребностей.
Маршрут: /search/image, /search/upload
Сравнивает лицо на фотографии, загруженной пользователем, со всеми записями в базе данных.
- Загруженное изображение проходит проверку безопасности.
- Генерируется 512-размерный вектор с использованием модели InsightFace.
- Поиск по этому вектору в базе данных Milvus с использованием
Cosine Similarity.
Маршрут: /search, /search/text
Поиск по структурным данным (метаданным) через PostgreSQL.
domain: Фильтрует результаты с определенного веб-сайта.start_date/end_date: Фильтр по диапазону дат обнаружения.risk_level: Фильтрация по уровню риска.category: Фильтрация по категории веб-сайта.
Маршрут: /search/similar/<face_id>
Ищет другие лица, похожие на лицо, уже зарегистрированное в базе данных (face_id).
Маршрут: /face/detection
Обнаруживает все лица на любом загруженном изображении, показывая bounding box, пол, возраст и оценку уверенности.
Маршрут: /face/comparison
Анализирует, совпадают ли первые лица на двух разных загруженных изображениях (сравнение 1:1).
EyeOfWeb поддерживает несколько коллекций Milvus и таблиц PostgreSQL:
| Имя коллекции / таблицы | Описание |
|---|---|
EyeOfWebFaceDataMilvus |
Основная коллекция векторов лиц, собранная системой. |
WhiteListFacesMilvus |
Коллекция вручную добавленных "распознанных" или "разрешенных" лиц. |
ExternalFaceStorageMilvus |
Лица, переданные из внешних источников (API и т.д.). |
CustomFaceStorageMilvus |
Пользовательская коллекция. |
Маршрут: /dashboard (Только для администраторов)
Центральный экран управления, показывающий статистику и состояние системы.
EyeOfWeb может создавать профессиональные отчеты в формате PDF для всех выполненных анализов (поиск изображений, комплексный анализ и т.д.).
EyeOfWeb использует гибридную архитектуру, которая обрабатывает структурные/реляционные данные и многомерные векторные данные отдельно.
| Компонент | База данных | Хранимые данные | Назначение |
|---|---|---|---|
| Память | PostgreSQL | Пользователи, компоненты URL, заголовки, хеши, даты, уровни риска | SQL-запросы, фильтрация, объединение (JOIN), метаданные |
| Мозг | Milvus | 512-d векторов лиц, 212-d векторов ландмарок | ANN поиск (HNSW), расчет сходства (Cosine Similarity) |
EyeOfWeb использует стандартную для индустрии библиотеку InsightFace и модель AntelopeV2.
Характеристики модели:
- Обнаружение лиц: RetinaFace
- Размер вектора: 512 измерений
- Атрибуты: Пол, Возраст, Очки, Оценка качества
- Аутентификация: Flask-JWT-Extended
- Управление сессиями: Flask-Session (Server-Side)
- Шифрование: Flask-Bcrypt
- Защита CSRF: Flask-WTF
- Ограничение скорости (Rate Limiting): Flask-Limiter
| Уровень | Технология | Версия / Примечания |
|---|---|---|
| Язык | Python | 3.8+ |
| Web Framework | Flask | 2.0+ |
| WSGI Server | Gunicorn / Waitress | Для Production |
| Реляционная БД | PostgreSQL | 13+ |
| Векторная БД | Milvus | 2.3+ |
| ML / AI | InsightFace (ONNX Runtime), NumPy, SciPy | Модель AntelopeV2 |
| Обработка изображений | OpenCV (cv2), Pillow (PIL) | |
| Безопасность | Flask-JWT-Extended, Flask-Bcrypt | |
| Web Crawling | Selenium, Playwright | Async/Multi-tab Support |
| Frontend | HTML5, CSS3, JavaScript, Jinja2 | Responsive UI |
| Контейнеризация | Docker, Docker Compose |
eye_of_web/
├── .git/ # Git version control
├── .gitignore # Files ignored by Git
├── LICENSE # MIT License
├── README.md # This documentation file
├── img/ # Static images (logo, etc.)
│ └── logo.png
│
└── src/ # Main source code directory
├── run.py # Flask application startup script
├── requirements.txt # Python dependencies
│
├── app/ # Flask Application Module (MVC Architecture)
│ ├── __init__.py # Flask application factory
│ ├── config/ # Application configuration files
│ ├── controllers/ # Business logic layer
│ ├── models/ # Database models / ORM
│ ├── routes/ # URL routing and endpoint definitions
│ ├── static/ # Static files (CSS, JS, images)
│ └── templates/ # Jinja2 HTML templates
│
├── config/ # System configuration files
│ ├── config.json # GPU mode configuration
│ └── cpu_config.json # CPU mode configuration
│
├── lib/ # Helper libraries and tools
│ ├── database_tools.py # PostgreSQL & Milvus operations
│ ├── init_insightface.py # InsightFace model initialization
│ └── pdf_generator.py # PDF report generation
│
└── sql/ # SQL schema and query files
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| OS | Ubuntu 18.04+ / Windows 10 WSL2 | Ubuntu 20.04+ / Debian 11+ |
| CPU | 4 Cores (x86_64) | 8+ Cores (AVX2 supported) |
| RAM | 8 GB | 16 GB или больше |
| GPU | Опционально | NVIDIA GPU (CUDA 11.x+), 4GB+ VRAM |
1. Системные зависимости (Ubuntu/Debian):
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y python3-dev python3-pip python3-venv git \
postgresql postgresql-contrib libpq-dev \
build-essential libssl-dev libffi-dev \
docker.io docker-compose
sudo systemctl enable docker && sudo systemctl start docker2. Клонирование исходного кода:
git clone https://github.com/MehmetYukselSekeroglu/eye_of_web.git
cd eye_of_web3. Создание виртуального окружения Python:
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install --upgrade pip
pip install -r src/requirements.txt4. Запуск базы данных Milvus (Docker):
wget https://github.com/milvus-io/milvus/releases/download/v2.3.0/milvus-standalone-docker-compose.yml -O docker-compose.yml
sudo docker-compose up -d5. Настройка PostgreSQL:
sudo systemctl start postgresql
sudo -u postgres psql << EOF
CREATE DATABASE eyeofweb;
CREATE USER eyeofwebuser WITH ENCRYPTED PASSWORD 'strong_password_here';
GRANT ALL PRIVILEGES ON DATABASE eyeofweb TO eyeofwebuser;
\q
EOF6. Генерация схем БД:
python src/MILVUS_SCHEMA_GENERATOR.py7. Запуск приложения:
python src/run.pyПерейдите по адресу http://localhost:5000 в браузере.
src/config/config.json (GPU Mode):
{
"insightface": {
"prepare": {
"ctx_id": 0,
"det_thresh": 0.6,
"det_size": [640, 640]
},
"main": {
"providers": ["CUDAExecutionProvider"],
"name": "antelopev2"
}
}
}src/config/cpu_config.json (CPU Mode):
{
"insightface": {
"prepare": {
"ctx_id": -1,
"det_thresh": 0.5,
"det_size": [160, 160]
},
"main": {
"providers": ["CPUExecutionProvider"],
"name": "antelopev2"
}
}
}Этот проект лицензируется в соответствии с MIT License.
Пожалуйста, смотрите файл LICENSE в корневом каталоге проекта для полного текста лицензии.
Мы хотели бы выразить благодарность всем, кто внес вклад в реализацию этого проекта.
| Имя | Uğur POLAT |
| Вклад | Академическое руководство, управление проектом, архитектурное видение и техническое консультирование |
| Имя | Enes Ülker |
| Вклад | Исследователь кибербезопасности / Cyber Security Researcher |
| Имя | Mehmet Yüksel ŞEKEROĞLU |
| Вклад | Full-stack разработка, интеграция модели ИИ, проектирование БД, системная архитектура и документация |









