lfzer0h/udjat
GitHub: lfzer0h/udjat
一个基于多模态 AI 的浏览器实时零日钓鱼检测与阻断代理。
Stars: 0 | Forks: 0
❌ 每 Token 成本较高。 | | **GPT-4o** | OpenAI / OpenRouter | ~97.2% | ~400 - 600 | ✅ 语义识别极为稳定且出色。
❌ 对大规模用户成本较高。 | | **Gemini 2.5 Pro** | OpenRouter | ~96.5% | ~500 - 800 | ✅ 对复杂视觉线索与品牌检测有优越推理。
❌ 推理速度慢于 Flash 系列。 | | **GPT-4o-mini** | OpenAI / OpenRouter | ~95.5% | ~7,000 - 10,000 | ✅ 极高的性能/成本比,适合高吞吐。
❌ 法医分析细节稍弱。 | | **Gemini 2.5 Flash** | OpenRouter | ~94.8% | ~12,500+ | ✅ 极致速度与超低成本,适合实时分流。
❌ 更适合标准钓鱼;可能遗漏边缘混淆。 | | **GLM-4V / Qwen2-VL** | Zhipu / DashScope | ~91.2% | ~2,500 - 3,500 | ✅ 成本极具优势,内置 OCR 优秀。
❌ 在非常规域名上偶有结构偏差。 | | **Llama 3.3 / LLaVA** | Ollama(本地) | ~75% - 85% | 无限(硬件决定) | ✅ 绝对隐私(零信任),数据永不离开本地网络。
❌ 未经特定微调效果较低。 | ### 2.2 AI 提供商 — 直接 API **所有提供方均通过官方 API 直接调用。Udjat 与 API 之间不存在任何封装、代理或中间层。** * **Google Gemini(`providers/gemini.js`):** 使用官方 `@google/generative-ai` SDK,返回原生 JSON。 * **OpenAI(`providers/openai.js`):** 使用官方 `openai` SDK,支持 image_url base64 上传。 * **Anthropic(`providers/anthropic.js`):** 使用官方 `@anthropic-ai/sdk`。注意图像源结构不同。 * **OpenRouter(`providers/openrouter.js`):** 使用官方 `openai` SDK 并自定义 `baseURL`。对 429 错误自动重试。 * **Ollama(`providers/ollama.js`):** 使用官方 `openai` SDK 指向 `localhost:11434`。100% 本地私有。 ## 🛠️ 3. 配置与管理 ### 3.1 设置向导 — 交互式配置 配置后端的最简单方式: ``` cd backend npm run setup # launches the interactive wizard ``` 该向导会逐步生成 `.env` 文件,隐藏 API 密钥并验证端口。 ### 3.2 白名单管理 #### 3.2.1 本地用户白名单 - **快捷方式**:点击 Udjat 图标 → **“将本域加入白名单”**。 - **管理**:打开**选项**面板(右键图标 → 选项)可查看、添加或移除域名。 - **持久化**:保存在 `chrome.storage.local`。 #### 3.2.2 集中式白名单管理 Udjat 支持通过远程文本文件(如 GitHub Raw 托管)管理全局可信域名列表。 - **配置**:在 `backend/.env` 中设置 `WHITELIST_URL`。 - **继承**:将 `google.com` 加入白名单会覆盖所有子域。 - **平台保护**:为防止绕过,UGC 平台(如 `github.io`、`s3.amazonaws.com`)的信任继承被显式阻止。 - **同步**:自动每 **24 小时** 刷新。 ### 3.3 使用 Ollama(本地 AI — 无 API 密钥) 1. **安装 Ollama**:`curl -fsSL https://ollama.com/install.sh | sh` 2. **拉取模型**:`ollama pull llava`(推荐视觉模型) 3. **配置 Udjat**:在设置向导中选择“Ollama”。 ### 3.4 手动安装与配置 若不使用自动化脚本: #### 后端 ``` cd backend npm install npm run setup npm start ``` #### 扩展 1. 打开 `chrome://extensions`。 2. 启用**开发者模式**。 3. 点击**加载已解压的扩展程序** → 选择 `extension/` 文件夹。 ## 🏗️ 4. 系统架构(深度解析) ### 4.1 通用架构 **模型:客户端侧捕获 + AI 路由代理** ``` ┌─────────────────────────────────────────────────────────────────┐ │ BROWSER (Chrome) │ │ │ │ ┌──────────────────────────┐ ┌───────────────────────────┐ │ │ │ background.js │ │ content.js │ │ │ │ (MV3 Service Worker) │◄─►│ (Content Script) │ │ │ │ │ │ │ │ │ │ onBeforeNavigate: │ │ - UDJAT_GET_DOM_TEXT │ │ │ │ quick decisions │ │ extract title+body+forms │ │ │ (allowlist/cache) │ │ - Analysis overlay │ │ │ │ │ │ - Verdict panel │ │ │ │ onCompleted: │ │ - Nag system │ │ │ │ captureVisibleTab() │ │ │ │ │ │ GET_DOM_TEXT │ └───────────────────────────┘ │ │ │ SHOW_OVERLAY │ │ │ │ callBackend(...) │ ┌───────────────────────────┐ │ │ └────────────┬─────────────┘ │ options.html / .js │ │ │ │ │ - Configure backend URL │ │ │ ┌────────────▼─────────────┐ │ - Enterprise deployment │ │ │ │ popup.html / .js │ └───────────────────────────┘ │ │ │ - Backend status │ │ │ │ - Active verdict │ │ │ │ - History · Nag config │ │ │ └──────────────────────────┘ │ └───────────────────┬─────────────────────────────────────────────┘ │ POST /api/analyze │ { url, screenshotBase64, extractedText } │ ┌───────────────────▼─────────────────────────────────────────────┐ │ BACKEND — AI Triage Proxy (Node.js) │ │ │ │ Express API (/api/health · /api/analyze) │ │ ├── 1. Cache Check │ │ ├── 2. Heuristic Triage │ │ └── 3. AI Bridge (Gemini, GPT-4o, Claude, Ollama) │ └─────────────────────────────────────────────────────────────────┘ ``` ### 4.2 文件结构 ``` udjat/ ├── backend/ │ ├── server.js # Express Entry point │ ├── src/ │ │ ├── ai/ # Strategic AI providers │ │ ├── sandbox/ # Puppeteer fallback sandbox │ │ └── prompt.js # Unified JSON Prompt └── extension/ ├── background.js # Capture engine ├── content.js # UI Overlay & Extraction ├── options.html # Admin Panel └── block.html # Phishing block page ``` ### 4.3 完整导航流程与消息 1. **[onBeforeNavigate]**:快速检查(白名单/缓存)。 2. **[onCompleted]**:完整分析。 - `captureVisibleTab()` → 清洁截图。 - `UDJAT_GET_DOM_TEXT` → 标题 + 正文 + 表单。 - `UDJAT_SHOW_OVERLAY` → 阻塞用户交互。 - `POST /api/analyze` → 后端分流与 AI 评估。 3. **结果**:处理裁决(重定向至阻断页 或 隐藏覆盖层)。 #### 扩展 ↔ 内容脚本消息 | 消息 | 方向 | 动作 | |------|------|------| | `UDJAT_SHOW_OVERLAY` | SW → CS | 显示分析旋转器 | `UDJAT_SHOW_VERDICT` | SW → CS | 显示结果(UNKNOWN/降级) | | `UDJAT_START_NAG` | SW → CS | 启动周期性警告 | | `UDJAT_BYPASS_AND_GO` | Block → SW | 用户接受风险 | ### 4.4 扩展 UI 与硬件限制 * **8 位图标**:Chrome MV3 仅接受 8 位 PNG 作为 `setIcon`。16 位 PNG 会完全透明。 * **运行在 document_start**:确保覆盖层在 HTML 解析完成前出现。 ## 🛰️ 5. 专家参考与部署 ### 5.1 后端 API #### GET /api/health 检查后端状态与活跃 AI 提供商。 #### POST /api/analyze **请求:** `{ "url": "https://suspicious.site" }` **响应:** ``` { "verdict": "MALICIOUS", "score": 82, "reason": "Brand impersonation + suspicious TLD.", "provider": "GEMINI", "latencyMs": 3100 } ``` ### 5.2 环境变量 在 `backend/.env` 中设置: * `AI_PROVIDER`: GEMINI、OPENAI、ANTHROPIC 等。 * `WHITELIST_URL`: 可信列表远程文件路径。 * `HOST`/`PORT`: 服务器网络配置。 ### 5.3 通过反向代理使用 HTTPS Udjat 后端是一个纯 HTTP 服务器,不原生处理 TLS。生产环境若需 HTTPS(公开服务器或企业 SSL 解密),建议在前端部署反向代理。 ``` Chrome Extension ──HTTPS──► nginx / Caddy ──HTTP──► Express :8000 ``` 扩展通过 HTTPS 与代理通信;代理终止 TLS 并将纯 HTTP 转发给本地 Express。无需修改 Udjat 源码。 ### 5.4 企业部署模型(独立服务器 + 多客户端) Udjat 可天然支持企业级分析。你可以部署单台后端服务器并让多个 Udjat 扩展指向它: 1. **部署后端**:在独立服务器(公网或 VPN 可访问)上部署。 2. **配置 HTTPS**:按第 5.3 节使用 Nginx/Caddy 提供安全端点。 3. **配置客户端**:在 Udjat 扩展**选项面板**中,将 `http://127.0.0.1:8000` 替换为服务器地址(如 `https://udjat.yourcompany.com`)。  这允许集中式安全引擎使用单一 API 密钥与共享情报保护整个设备舰队。 ### 5.5 设计与安全决策 * **故障关闭**:任何内部错误均返回 `UNKNOWN`(警告),绝不返回 `SAFE`。 * **混合沙箱后备**:若扩展发送失败,后端触发集成 Puppeteer 沙箱进行独立捕获。 * **Chromium 重生**:为保持稳定性,后端沙箱每 100 次使用后回收 Chromium,防止内存泄漏。 * **无遥测**:分析完全私密,数据仅到达你的后端与所选的 AI 提供商。 ### 5.6 企业就绪性与维护 * **结构化日志**:便于接入 SIEM(Splunk/ELK)。 * **标准 JSDoc**:全代码库遵循专业 JSDoc 标准,便于审计。 * **速率限制**:保护后端免遭 DoS 与预算耗尽。 ## ⚖️ 6. 许可证 本项目根据 **MIT 许可证** 授权。 ## 🏷️ 关键词与标签 `ai-phishing` `antiphishing` `cybersecurity-agent` `security-llm` `zero-day-detection` `ollama-security` `multimodal-ai-agent` `phishing-prevention` `automated-security-analyst` `browser-security-extension`
标签:AI代理, AI安全, AI风险缓解, AI驱动, AMSI绕过, Apex, Chat Copilot, Eye of Horus, LLM评估, MITM代理, Ollama, Udjat, URL启发式, 供应商无关, 内联判决, 前端安全, 反规避, 反钓鱼, 品牌冒充检测, 多模态AI, 多重验证, 威胁检测, 安全防护, 实时检测, 推理分析, 本地AI, 机器学习, 浏览器拦截, 网络钓鱼防护, 自定义脚本, 视觉识别, 隐私安全, 零日钓鱼, 零遥测