N4P1x/Night-Watch

GitHub: N4P1x/Night-Watch

一个生产级暗网威胁情报平台,通过自动化采集和分析多源暗网数据,实现 IOC 提取、威胁行为者追踪和实时安全告警。

Stars: 0 | Forks: 0

# Night-Watch - 暗网威胁情报平台 一个可用于生产环境的网络威胁情报平台,用于监控暗网威胁、勒索软件泄露和网络犯罪活动。通过 Tor 隐藏服务、勒索软件博客、黑客论坛、市场、Paste 站点和表层网络来源收集并分析情报。 ## 功能 - **自动化数据采集** — 通过 Tor 和表层网络抓取勒索软件博客、黑客论坛、暗网市场、Paste 站点、Telegram 频道和新闻源 - **IOC 提取** — 自动提取 17 种以上的指标类型:IP、域名、URL、电子邮件、加密货币钱包、文件哈希 (MD5/SHA1/SHA256)、CVE ID 等 - **威胁行为者追踪** — 针对勒索软件组织和网络犯罪集团进行档案管理,包括别名、TTP、关联的恶意软件/工具以及基础设施追踪 - **实时告警** — 可针对关键词匹配、新威胁和 IOC 出现配置告警,支持 WebSocket 推送和可选的电子邮件通知 - **交互式仪表板** — 基于 React 的单页应用,包含图表、地图和实时更新 - **可扩展架构** — 基于 Docker Compose 的微服务,结合 Celery 任务队列、Redis 缓存以及 PostgreSQL + MongoDB 存储 - **基于角色的访问控制** — 支持多用户,具有管理员、分析师和查看者角色 - **情报源凭证加密** — 使用 Fernet 加密存储经过身份验证的情报源凭证 - **暗网匿名性** — 所有暗网流量均通过 Tor 路由,并自动进行线路轮换。 ## 截图 | | | |---|---| | ![仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0e133dfdf5191103.png) | ![泄露](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/9cd73b8a69191110.png) | | ![威胁行为者](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/91e4992373191121.png) | ![IOC](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c5316c5af4191129.png) | | ![情报源](https://raw.githubusercontent.com/N4P1x/Night-Watch/main/media/sources.png) | ![告警](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b9fa6fcbb3191208.png) | | ![登录](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/33d43ea459191217.png) | ![设置](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/48ebbbd3fa191226.png) | ## 架构 ``` night-watch/ ├── backend/ │ ├── api/ # FastAPI application │ │ ├── main.py # App entry point │ │ ├── deps.py # Dependencies (auth, rate limiter) │ │ └── routers/ # Modular route handlers │ │ ├── auth.py # Authentication │ │ ├── threat_actors.py # Threat actor CRUD │ │ ├── leaks.py # Leak management │ │ ├── iocs.py # IOC management │ │ ├── sources.py # Source management │ │ ├── posts.py # Forum posts │ │ ├── alerts.py # Alert viewer │ │ ├── stats.py # Dashboard statistics │ │ ├── scrape.py # Scrape trigger/status │ │ └── websocket.py # WebSocket endpoint │ ├── core/ # Configuration and database │ │ ├── config.py # Pydantic settings │ │ └── database.py # SQLAlchemy + MongoDB setup │ ├── models/ # SQLAlchemy ORM models │ │ ├── user.py # Users table │ │ ├── alert.py # Alerts table │ │ ├── threat_actor.py # Threat actors table │ │ ├── leak.py # Leaks table │ │ ├── ioc.py # IOCs table │ │ ├── source.py # Sources table │ │ ├── post.py # Posts table │ │ └── audit_log.py # Audit logs │ ├── schemas/ # Pydantic v2 validation schemas │ ├── scrapers/ # Web scraping engine │ │ ├── base.py # Base scraper + scraping engine │ │ ├── extractors.py # IOC extraction (17+ patterns) │ │ └── tor_scraper.py # Tor-based scraper │ ├── services/ # Business logic layer │ │ ├── auth_service.py │ │ ├── ioc_service.py │ │ ├── leak_service.py │ │ ├── threat_actor_service.py │ │ ├── source_service.py │ │ ├── post_service.py │ │ ├── alert_service.py │ │ ├── stats_service.py │ │ ├── scrape_service.py │ │ ├── cache_service.py │ │ └── audit_service.py │ ├── workers/ # Celery background tasks │ │ └── tasks.py # Scrape, rotate Tor, cleanup │ ├── alembic/ # Database migrations │ ├── tests/ # Pytest test suite │ └── seed.py # Database seeder ├── frontend/ │ ├── src/ │ │ ├── pages/ # React page components │ │ │ ├── Dashboard.tsx │ │ │ ├── Leaks.tsx │ │ │ ├── ThreatActors.tsx │ │ │ ├── IOCs.tsx │ │ │ ├── Sources.tsx │ │ │ ├── Alerts.tsx │ │ │ ├── Settings.tsx │ │ │ ├── Login.tsx │ │ │ └── Register.tsx │ │ ├── components/ # Reusable components │ │ │ ├── Layout.tsx # Sidebar + header │ │ │ ├── Toast.tsx # Notification toasts │ │ │ └── ErrorBoundary.tsx # Error handling │ │ ├── contexts/ # React contexts │ │ │ ├── AuthContext.tsx │ │ │ ├── WebSocketContext.tsx │ │ │ └── ThemeContext.tsx │ │ └── utils/ │ │ ├── api.ts # Axios instance │ │ └── constants.ts # App constants │ ├── package.json │ ├── vite.config.ts │ └── tailwind.config.js ├── docker/ │ ├── tor.Dockerfile # Tor container │ ├── torrc # Tor configuration │ └── nginx.frontend.conf # Nginx config ├── database/ │ ├── postgresql/ # DB initialization scripts │ └── mongodb/ # MongoDB initialization ├── config/ # Environment templates ├── scripts/ # Utility scripts ├── docker-compose.yml # Development stack ├── docker-compose.prod.yml # Production stack ├── docker-compose.simple.yml # Minimal stack └── nginx-night-watch.conf # Nginx config (bare-metal) ``` ## 技术栈 ### 后端 | 组件 | 技术 | |-----------|-----------| | API 框架 | FastAPI (Python 3.11+) | | ORM | SQLAlchemy 2.0 | | 验证 | Pydantic v2 | | 任务队列 | Celery 5.3 + Redis | | 主数据库 | PostgreSQL 15 | | 文档存储 | MongoDB 6 | | 缓存 | Redis 7 | | WebSocket | FastAPI WebSocket | | 抓取引擎 | httpx + BeautifulSoup4 + Playwright | | HTTP 客户端 | httpx (异步, SOCKS5) | | 认证 | JWT (python-jose) + bcrypt | | 数据库迁移 | Alembic | ### 前端 | 组件 | 技术 | |-----------|-----------| | UI 框架 | React 18 + TypeScript | | 构建工具 | Vite 5 | | 样式 | Tailwind CSS 3.4 | | 路由 | React Router DOM 6 | | 数据获取 | @tanstack/react-query 5 | | HTTP 客户端 | Axios | | 图表 | Chart.js + Recharts | | 地图 | Leaflet / react-leaflet | | 动画 | Framer Motion | | WebSocket | socket.io-client | | UI 基础组件 | @headlessui/react | ### 基础设施 | 组件 | 技术 | |-----------|-----------| | 容器化 | Docker + Docker Compose | | 反向代理 | Nginx (alpine) | | 监控 | Prometheus + Grafana | | 匿名化 | Tor (SOCKS5 + control) | ## 快速开始 ### 前置条件 - Docker 和 Docker Compose(推荐) - 或 Python 3.11+、Node.js 20+、PostgreSQL 15、MongoDB 6、Redis 7、Tor ### Docker 部署(推荐) ``` # Clone 仓库 git clone https://github.com/N4P1x/Night-Watch.git cd Night-Watch # 复制 environment 配置 cp config/.env.example .env # 使用你的配置编辑 .env (生成一个 SECRET_KEY) # SECRET_KEY=your-secure-random-key # DATABASE_URL=postgresql://night-watch:your-password@postgres:5432/night-watch # 启动所有服务 docker-compose up -d ``` 访问平台: - **前端**:http://localhost:3000 - **API**:http://localhost:8000 - **API 文档** (Swagger):http://localhost:8000/docs - **API 文档** (ReDoc):http://localhost:8000/redoc ### 手动安装 ``` # 运行 setup 脚本 (安装 system deps, Python packages, Node modules) ./setup.sh # 启动所需服务 sudo systemctl start postgresql mongodb redis tor # 运行 database migrations PYTHONPATH=. alembic -c backend/alembic.ini upgrade head # 启动 backend PYTHONPATH=. uvicorn backend.api.main:app --reload --port 8000 # 在单独的终端中,启动 frontend cd frontend && npm run dev ``` ### 环境变量 | 变量 | 必填 | 默认值 | 描述 | |----------|----------|---------|-------------| | `SECRET_KEY` | 是 | 自动生成(开发环境) | JWT 签名密钥 | | `DATABASE_URL` | 是 | `postgresql://dwtip:dwtip_secure_password@localhost:5432/dwtip` | PostgreSQL 连接字符串 | | `MONGODB_URL` | 否 | `mongodb://localhost:27017/dwtip` | MongoDB 连接字符串 | | `REDIS_URL` | 否 | `redis://localhost:6379/0` | Redis 连接字符串 | | `TOR_PROXY` | 否 | `socks5://localhost:9050` | Tor SOCKS5 代理 | | `TOR_CONTROL` | 否 | `localhost:9051` | Tor 控制端口 | | `ALGORITHM` | 否 | `HS256` | JWT 算法 | | `ACCESS_TOKEN_EXPIRE_MINUTES` | 否 | `30` | JWT token 过期时间 | | `SMTP_HOST` | 否 | `smtp.gmail.com` | 邮件 SMTP 主机 | | `SMTP_PORT` | 否 | `587` | 邮件 SMTP 端口 | | `SMTP_USER` | 否 | — | SMTP 用户名 | | `SMTP_PASSWORD` | 否 | — | SMTP 密码 | | `ALERT_EMAIL` | 否 | — | 告警邮件接收者 | | `SENTRY_DSN` | 否 | — | Sentry 错误追踪 DSN | | `LOG_LEVEL` | 否 | `INFO` | 日志级别 | | `TELEGRAM_API_ID` | 否 | `0` | Telegram API ID | | `TELEGRAM_API_HASH` | 否 | — | Telegram API hash | | `MAX_WORKERS` | 否 | `4` | 最大并发抓取器 | | `SCRAPE_INTERVAL_MINUTES` | 否 | `15` | 定期抓取间隔 | | `TOR_CIRCUIT_ROTATE_INTERVAL` | 否 | `300` | Tor 线路轮换(秒) | | `ALLOWED_ORIGINS` | 否 | `http://localhost:3000` | CORS 允许的来源 | | `ENVIRONMENT` | 否 | `development` | 部署环境 | | `RATE_LIMIT_REQUESTS_PER_MINUTE` | 否 | `1000` | API 速率限制 | | `DEEPDARKCTI_PATH` | 否 | 自动检测 | deepdarkCTI 数据路径 | ## API 参考 所有 API endpoint 均以 `/api/v1` 为前缀。通过 `Authorization: Bearer ` header 或 `access_token` cookie 进行身份验证。 ### 身份验证 | 方法 | 路径 | 认证 | 描述 | |--------|------|------|-------------| | `POST` | `/auth/register` | 否 | 注册新用户(第一位用户将成为管理员) | | `POST` | `/auth/login` | 否 | 登录(OAuth2 密码模式),返回 JWT | | `POST` | `/auth/logout` | 是 | 登出(将 token 加入黑名单) | | `GET` | `/auth/me` | 是 | 获取当前用户资料 | | `PUT` | `/auth/me` | 是 | 更新用户资料 | ### 威胁行为者 | 方法 | 路径 | 角色 | 描述 | |--------|------|-------|-------------| | `GET` | `/threat-actors` | 任意 | 列出威胁行为者(搜索、分页) | | `POST` | `/threat-actors` | 管理员、分析师 | 创建威胁行为者 | | `GET` | `/threat-actors/{id}` | 任意 | 获取威胁行为者详情 | | `PUT` | `/threat-actors/{id}` | 任意 | 更新威胁行为者 | | `DELETE` | `/threat-actors/{id}` | 管理员 | 删除威胁行为者 | ### 泄露 | 方法 | 路径 | 角色 | 描述 | |--------|------|-------|-------------| | `GET` | `/leaks` | 任意 | 列出泄露(按严重程度、状态、来源、搜索进行筛选) | | `POST` | `/leaks` | 管理员、分析师 | 创建泄露(通过 WebSocket 广播) | | `GET` | `/leaks/{id}` | 任意 | 获取泄露详情 | | `DELETE` | `/leaks/{id}` | 管理员 | 删除泄露 | ### 攻陷指标 (IOC) | 方法 | 路径 | 角色 | 描述 | |--------|------|-------|-------------| | `GET` | `/iocs` | 任意 | 列出 IOC(按类型、搜索、白名单状态进行筛选) | | `POST` | `/iocs` | 管理员、分析师 | 创建 IOC | | `POST` | `/iocs/bulk` | 任意 | 批量创建 IOC | | `GET` | `/iocs/{id}` | 任意 | 获取 IOC 详情 | | `PUT` | `/iocs/{id}` | 任意 | 更新 IOC | | `DELETE` | `/iocs/{id}` | 管理员 | 删除 IOC | ### 情报源 | 方法 | 路径 | 角色 | 描述 | |--------|------|-------|-------------| | `GET` | `/sources` | 任意 | 列出数据源(按类型、激活状态、onion 进行筛选) | | `POST` | `/sources` | 管理员 | 添加数据源 | | `GET` | `/sources/names` | 任意 | 获取所有源名称 | | `GET` | `/sources/types` | 任意 | 获取可用的源类型 | | `GET` | `/sources/{id}` | 任意 | 获取源详情 | | `PUT` | `/sources/{id}` | 任意 | 更新源 | | `DELETE` | `/sources/{id}` | 管理员 | 删除源 | | `POST` | `/sources/import-deepdarkcti` | 否 | 从 deepdarkCTI 导入源 | ### 帖子 | 方法 | 路径 | 认证 | 描述 | |--------|------|------|-------------| | `GET` | `/posts` | 是 | 列出帖子(按来源、行为者、搜索进行筛选) | | `POST` | `/posts` | 是 | 创建帖子 | | `GET` | `/posts/{id}` | 是 | 获取帖子详情 | | `PUT` | `/posts/{id}` | 是 | 更新帖子 | | `DELETE` | `/posts/{id}` | 是 | 删除帖子 | ### 告警 | 方法 | 路径 | 角色 | 描述 | |--------|------|-------|-------------| | `GET` | `/alerts` | 任意 | 列出告警(按已读、严重程度进行筛选) | | `POST` | `/alerts` | 管理员、分析师 | 创建告警(通过 WebSocket 广播) | | `PUT` | `/alerts/{id}` | 任意 | 更新告警(标记为已读/已忽略) | | `POST` | `/alerts/read-all` | 是 | 将所有告警标记为已读 | | `DELETE` | `/alerts/{id}` | 管理员 | 删除告警 | ### 统计 | 方法 | 路径 | 认证 | 描述 | |--------|------|------|-------------| | `GET` | `/stats/dashboard` | 是 | 仪表板统计(计数、趋势) | ### 抓取 | 方法 | 路径 | 角色 | 描述 | |--------|------|-------|-------------| | `GET` | `/scrape/status` | 是 | 获取当前抓取状态 | | `GET` | `/scrape/health` | 是 | 获取抓取健康指标 | | `POST` | `/scrape/trigger` | 管理员 | 触发抓取 | | `POST` | `/scrape/stop` | 管理员 | 停止当前的抓取 | ### WebSocket | 路径 | 认证 | 描述 | |------|------|-------------| | `/ws` | JWT 子协议 | 实时更新(新泄露、告警) | | `/api/v1/scrape/ws/stats` | JWT 子协议 | 实时抓取统计 | ## 数据库模型 ### PostgreSQL 表(17 张表) | 表 | 描述 | |-------|-------------| | `users` | 具有角色(管理员/分析师/查看者)、告警偏好的平台用户 | | `alerts` | 具有严重程度、匹配关键词、已读/已忽略状态的用户告警 | | `threat_actors` | 包含别名、TTP、恶意软件、基础设施威胁行为者档案 | | `threat_actor_aliases` | 行为者别名历史 | | `leaks` | 包含受害者信息、严重程度、状态、提取的 IOC 的数据泄露记录 | | `leak_tags` | 泄露分类标签 | | `iocs` | 包含类型、值、置信度、威胁评分的攻陷指标 | | `ioc_tags` | IOC 分类标签 | | `ioc_relations` | IOC 之间的关系图谱 | | `sources` | 包含选择器、凭证、健康状态的数据源配置 | | `source_health` | 源健康追踪(响应时间、错误率) | | `posts` | 包含已提取实体的已抓取论坛帖子和内容 | | `post_attachments` | 来自帖子的文件附件 | | `audit_logs` | 用户操作审计追踪 | ### MongoDB 集合(5 个集合) | 集合 | 描述 | |------------|-------------| | `raw_data` | 带有分类的原始抓取 HTML/内容 | | `screenshots` | 页面截图 | | `alerts_mongo` | 基于 MongoDB 的告警 | | `sessions` | 用户会话(TTL 24h) | | `feed_items` | RSS/订阅源项目 | ## IOC 提取 平台自动从抓取的内容中提取 17 种以上的指标类型: | 类型 | 示例 | 置信度 | |------|---------|------------| | IPv4 地址 | `192.168.1.1` | 高 | | IPv6 地址 | `2001:db8::1` | 高 | | 域名 | `malicious.com` | 高 | | URL | `https://example.com/path` | 高 | | Onion URL | `http://xyz.onion` | 高 | | 电子邮件 | `attacker@example.com` | 中 | | BTC 钱包 | `1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa` | 高 | | ETH 钱包 | `0x742d35Cc6634C0532925a3b844Bc9e7595f3bD09` | 高 | | XMR 钱包 | `44AFFq5kSiGBoZ4...` | 高 | | CVE | `CVE-2024-12345` | 高 | | MD5 | `d41d8cd98f00b204e9800998ecf8427e` | 中 | | SHA1 | `da39a3ee5e6b4b0d3255bfef95601890afd80709` | 中 | | SHA256 | `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` | 中 | | 私钥 | `-----BEGIN RSA PRIVATE KEY-----` | 高 | | API 密钥 | `sk_live_...` | 高 | 功能: - 结合上下文的置信度评分(通过附近的关键词提升) - 白名单过滤(RFC1918、常见域名) - 通过 type:value 指纹去重 - 噪声过滤(二进制内容、不可打印的上下文) - 标签丰富化(dark-web、onion、加密货币、凭证) - 通过跨源频率追踪计算威胁评分(0-10) ## 抓取引擎 ### 工作原理 1. **来源发现** — 在数据库中配置来源的 URL、类型、抓取间隔和 Tor 使用标志。平台还可以从 DeepdarkCTI 数据中导入 `.onion` URL。 2. **调度** — Celery beat 调度定期抓取(默认:每 15 分钟)。`SourceManager` 根据各个来源自己的抓取间隔决定哪些源到期。 3. **内容获取** — `ScrapingEngine` 使用以下方式获取内容: - 使用 **httpx** 结合 SOCKS5 代理获取 Tor 源 - 使用 **Playwright** 渲染 JavaScript 页面(生产环境) - **RSS/Atom** 订阅源检测和文章爬取 - 随机 User-Agent 和类似浏览器的 header,以实现反指纹追踪 4. **内容处理** — `ContentClassifier` 对内容类型进行分类(勒索软件、数据泄露、凭证转储等)。`ContentExtractor` 将 HTML 解析为可读文本。 5. **IOC 提取** — `AdvancedIOCExtractor` 运行 17 种以上的正则表达式模式,进行白名单过滤、上下文评分、去重和丰富化。 6. **泄露检测** — `LeakExtractor` 使用关键词匹配和模式分析识别勒索软件受害者、数据泄露和凭证泄露。 7. **持久化** — 结果保存到 PostgreSQL(IOC、泄露、帖子)以及可选的 MongoDB(原始内容、截图)中。 8. **告警** — 高严重性的发现会触发告警和 WebSocket 广播。可选地,通过 SMTP 发送电子邮件告警。 ### 架构特性 - **断路器** — 针对每个域名的断路器模式可防止过度请求无响应的源 - **指数退避** — 3 次带有指数退避的重试尝试 - **并发控制** — asyncio.Semaphore 限制并行请求 - **健康追踪** — 源可靠性百分比、连续失败计数 - **Tor 线路轮换** — 每 5 分钟自动发送 `NEWNYM` 信号 ## 生产环境部署 ### Docker Compose(生产环境) ``` docker-compose -f docker-compose.prod.yml up -d ``` 生产环境栈增加了: - **Celery Worker** — 2 个副本,内存限制为 2GB - **抓取器** — 专用的抓取器容器,内存限制为 4GB,用于 JS 渲染 - **Prometheus** — 在端口 9090 上收集指标 - **Grafana** — 在端口 3030 上提供监控仪表板 - 资源限制、健康检查、只读 root 文件系统 ### 裸金属服务器 包含的 `nginx-night-watch.conf` 提供了用于生产环境部署的 Nginx 配置: ``` # 从 frontend/dist 提供 frontend 服务 # 代理 /api 到 localhost:8000 # 代理 /ws 并设置长 timeout (86400s) # Security headers, gzip, static caching ``` ### 安全注意事项 - **Tor 路由** — 所有暗网流量均通过 Tor 路由,并具有严格的出口策略 - **凭证加密** — 使用 Fernet 对称加密对情报源凭证进行静态加密 - **JWT 身份验证** — 基于 token 的认证,30 分钟过期 - **密码策略** — 需要 8 个以上字符,包含大小写字母、数字和特殊字符 - **暴力破解保护** — 5 次失败尝试 = 锁定 15 分钟(基于 Redis) - **速率限制** — 可配置的基于 IP 的速率限制(默认:1000 请求/分钟) - **基于角色的访问控制** — 三个级别:管理员、分析师、查看者 - **审计日志** — 所有管理员操作均记录 IP 和 user agent - **IP 保护** — 绝不记录 IP 地址 - **API 安全** — 除了注册/登录/健康检查外,所有 endpoint 都需要身份验证 ## 运行测试 ``` # Backend 测试 (pytest) cd backend pip install pytest pytest-mock pytest-asyncio httpx pytest tests/ -v # Frontend 类型检查 cd frontend npx tsc --noEmit # Frontend 构建验证 npm run build ``` ### CI/CD GitHub Actions 工作流 (`.github/workflows/ci.yml`): - Python 3.14:ruff linting、mypy 类型检查、pytest - Node 20:TypeScript 编译、Vite 构建 Pre-commit hooks: ``` pip install pre-commit pre-commit install ``` ## 添加自定义情报源 ### 配置 可通过 API 或直接在数据库中输入配置来配置情报源: ``` { "name": "Custom Ransomware Blog", "type": "ransomware_blog", "url": "http://example.onion", "uses_tor": true, "scrape_interval_minutes": 30, "selectors": { "victim_card": ".victim-item", "victim_name": ".company-name", "date": ".publish-date" } } ``` ### 可用的源类型 - `ransomware_blog` — 勒索软件团伙泄露站点 - `hacker_forum` — 网络犯罪论坛 - `marketplace` — 暗网市场 - `paste_site` — 类似 Pastebin 的服务 - `telegram` — Telegram 频道/群组 - `news_feed` — 网络安全新闻 - `rss` — RSS/Atom 订阅源 - `twitter` — 社交媒体 - `reddit` — Subreddit - `other` — 自定义来源 ### 创建自定义抓取器 1. 在 `backend/scrapers/` 中创建一个新的抓取器类,继承 `BaseScraper` 2. 实现所需的方法:`scrape()`、`extract_iocs()`、`extract_leaks()` 3. 在 `backend/scrapers/__init__.py` 中注册抓取器 4. 通过 API 或数据库配置源 ## WebSocket 集成 可通过 WebSocket 获取实时更新: ``` const token = localStorage.getItem('token'); const ws = new WebSocket(`ws://localhost:8000/ws?token=${encodeURIComponent(token)}`); ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log('New update:', data); }; ``` WebSocket 会广播: - 新的泄露发现 - 新的告警创建 - 抓取状态更新 - 抓取统计信息(实时) ## 初始管理员访问权限 没有默认凭证。第一个注册的账号会自动提升为 **管理员**。随后的所有注册默认为 **查看者**,直到被现有的管理员提升。 ## 脚本 | 脚本 | 用途 | |--------|---------| | `setup.sh` | 安装系统依赖、Docker、Tor、Python 包、Node 模块 | | `start.sh` | 启动开发服务器(后端 + 前端) | | `stop.sh` | 停止开发服务器 | | `backend/seed.py` | 使用初始数据填充数据库 | | `scripts/scrape_tor.py` | 独立的 Tor 抓取器脚本 | | `scripts/advanced_scraper.py` | 带有线路轮换的高级抓取器 | ## 许可证 MIT 许可证 — 有关详细信息,请参阅 LICENSE 文件。 ## 免责声明 此工具仅设计用于合法的安全研究和威胁情报目的。用户有责任确保遵守其所在司法管辖区的所有适用法律和法规。未经授权访问计算机系统是非法的。在监控任何系统或网络之前,请务必获得适当的授权。
标签:AV绕过, FastAPI, IOC提取, 威胁情报, 安全运营, 开发者工具, 微服务架构, 扫描框架, 搜索引擎查询, 数据泄露, 暗网监控, 测试用例, 特征检测, 自动化情报收集, 自定义请求头, 请求拦截, 逆向工具