Dxten/Phishing-URL-detector

GitHub: Dxten/Phishing-URL-detector

一个结合黑名单、模式匹配与行为分析的实时多层钓鱼URL检测系统,通过加权评分量化风险并支持浏览器扩展集成。

Stars: 0 | Forks: 0

# 🛡️ Phishing URL Detector 一个实时的多层钓鱼检测系统,利用高级模式匹配、威胁情报和行为分析来识别恶意 URL。 ## ✨ 功能 | 功能 | 描述 | |---------|-------------| | **⚡ 极速分析** | 通过 hash set + 优化的字符串算法实现 O(1) 黑名单查找 | | **🔍 多模式关键词搜索** | 使用 Aho-Corasick 自动机高效检测 35+ 个可疑关键词 | | **🧬 Typosquatting 检测** | Levenshtein 距离分析以捕获域名伪造(例如 `g00gle.com`) | | **🎯 高级模式匹配** | KMP & Boyer-Moore 算法用于复杂的 URL 结构分析 | | **📊 加权评分引擎** | 基于严重程度置信度的 13 分制威胁评估评分 | | **🔄 自动更新黑名单** | 每日从 PhishTank 和 OpenPhish API 同步 | | **📈 实时统计与历史记录** | 带有检测指标和持久化历史日志的仪表板 | | **📤 浏览器扩展支持** | Chrome/Edge 扩展,用于即时 URL 扫描 | | **📦 批量分析** | 单次请求最多分析 100 个 URL | | **⚠️ 报告与反馈** | 报告新的钓鱼 URL 以改进系统 | ## 🧠 检测方法论 检测器结合了 6 种互补技术: 1. **域名黑名单查找** — 针对精选钓鱼域名的 Hash-set O(1) 校验 2. **关键词匹配** — Aho-Corasick 自动机扫描可疑词汇(`login`、`verify`、`secure` 等) 3. **Typosquatting 分析** — Levenshtein 距离检测相似域名(`paypa1.com` 与 `paypal.com`) 4. **URL 结构验证** — 检查异常的路径深度、过多的参数、基于 IP 的主机以及混淆模式 5. **TLD 与子域名分析** — 标记可疑的 TLD(`.tk`、`.ml`、`.ga`)和不自然的子域名链 6. **白名单绕过预防** — 确保合法域名不被重定向或隐匿手段伪装 每种技术都会贡献一个加权分数(0–5 分)。最终风险级别判定如下: - `safe`:总分 ≤ 3 - `suspicious`:4–8 - `dangerous`:≥ 9 ## 🌐 系统架构 ``` graph LR A[Browser Extension] -->|Real-time scan| B[Backend API] C[Frontend Dashboard] -->|HTTP requests| B D[Threat Intelligence] -->|Auto-sync| B B --> E[(Detection Engine)] E --> F[Blacklist DB] E --> G[Keywords DB] E --> H[Scoring Engine] E --> I[Cache Layer] B --> J[Logs & History] ``` ## 🚀 快速开始 ### 前置条件 - Python 3.12+ - Node.js(可选,仅在增强前端时需要) ### 后端设置 ``` # 导航至 backend cd backend # 安装依赖 pip install --break-system-packages -r requirements.txt # 启动 API server python app.py ``` ### 前端设置 ``` # 在一个单独的终端中 cd frontend python3 -m http.server 8000 ``` ### 浏览器扩展(可选) 1. 打开 Chrome/Edge → `chrome://extensions` 2. 启用“开发者模式” 3. 点击“加载已解压的扩展程序” → 选择 `browser-extension/` 文件夹 4. 访问任意网页 — 扩展图标将显示实时风险状态 ## 📡 API 参考 所有 endpoint 接受/返回 JSON。Base URL:`http://localhost:5000/api` | Endpoint | Method | 描述 | |----------|--------|-------------| | `/` | `GET` | API 信息与可用 endpoint | | `/check` | `POST` | 分析单个 URL(`{ "url": "https://..." }`) | | `/batch` | `POST` | 分析多个 URL(`{ "urls": ["...", "..."] }`) | | `/stats` | `GET` | 获取检测统计数据(总数、安全、钓鱼比例、缓存命中率) | | `/history` | `GET` | 获取检测历史(支持 `?limit=50&risk_level=dangerous`) | | `/update-blacklist` | `POST` | 触发从威胁情报源手动更新黑名单 | | `/report` | `POST` | 报告新的钓鱼 URL(`{ "url": "...", "comment": "..." }`) | | `/health` | `GET` | 带有组件状态的健康检查 | | `/clear-cache` | `POST` | 重置检测缓存 | | `/analyze-detailed` | `POST` | 完整的算法分解 + URL 组件 | ### cURL 请求示例 ``` curl -X POST http://localhost:5000/api/check \ -H "Content-Type: application/json" \ -d '{"url": "https://secure-account-verify.tk/login"}' ``` ### 响应示例 ``` { "url": "https://secure-account-verify.tk/login", "timestamp": "2026-06-23T01:51:24.148889", "risk_level": "dangerous", "total_score": 14, "confidence": 0.98, "recommendation": { "icon": "🚨", "message": "High-risk phishing site. Do not enter credentials." }, "threats_detected": [ { "type": "blacklist_match", "severity": "critical", "description": "Domain 'secure-account-verify.tk' is in phishing blacklist", "score": 5 } ], "details": { "domain": "secure-account-verify.tk", "tld": "tk", "path_depth": 1, "query_params_count": 0, "has_ip_address": false, "is_https": true } } ``` ## 📁 项目结构 ``` Phishing-URL-detector/ ├── backend/ # Flask API & core detection logic │ ├── app.py # Main API server │ ├── detector.py # PhishingDetector class & analysis pipeline │ ├── algorithms.py # Aho-Corasick, KMP, Levenshtein implementations │ ├── scoring.py # Risk scoring & recommendation engine │ ├── utils/ # Validators, blacklist updater, helpers │ └── datasets/ # Local threat intel (keywords, URLs) ├── frontend/ # Static dashboard UI │ ├── index.html # Main UI │ ├── script.js # API interaction & rendering logic │ └── styles.css # Responsive styling ├── browser-extension/ # Chrome/Edge extension │ ├── manifest.json # Extension config │ ├── background.js # URL monitoring logic │ └── popup.js # Popup UI & reporting ├── datasets/ # Threat intelligence sources │ ├── keywords.json # Suspicious/dangerous keyword categories │ ├── phishing_urls.txt # Curated blacklist │ └── legitimate_urls.txt # Whitelist reference ├── logs/ # Persistent detection history & reports │ ├── detection_history.json │ └── reported_urls.json └── tests/ # Unit & integration tests ``` ## 🛡️ 威胁情报来源 - **PhishTank API**:实时钓鱼 URL 数据源 - **OpenPhish API**:经过验证的钓鱼域名数据库 - **精选关键词数据库**:35+ 个高保真可疑词汇(`login`、`verify`、`account`、`password` 等) - **手动报告**:通过 `/api/report` 实现社区驱动的黑名单扩展 ## 🧪 测试 运行后端单元测试: ``` cd backend pytest test_detector.py test_algorithms.py ``` 运行前端冒烟测试: ``` cd frontend # 手动验证 UI 是否在 http://localhost:8000 加载 ``` ## 📜 许可证 在 MIT 许可证下分发。查看 `LICENSE` 获取更多信息。 ## 🙏 鸣谢 - [Aho-Corasick 算法](https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm) - [PhishTank](https://www.phishtank.com/) - [OpenPhish](https://openphish.com/) - [tldextract](https://pypi.org/project/tldextract/) 用于域名解析 - [Flask](https://flask.palletsprojects.com/) & [Flask-CORS](https://flask-cors.readthedocs.io/)
标签:URL分析, URL发现, 反钓鱼, 威胁情报, 安全检测, 开发者工具, 数据可视化, 浏览器扩展, 调试辅助, 逆向工具