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发现, 反钓鱼, 威胁情报, 安全检测, 开发者工具, 数据可视化, 浏览器扩展, 调试辅助, 逆向工具