mani23112006/Scanly
GitHub: mani23112006/Scanly
一个结合 NLP 机器学习、规则引擎与 URL 启发式分析的全栈钓鱼和诈骗消息检测平台,提供实时可解释的风险评分。
Stars: 1 | Forks: 0
# SCANLY
一个由 AI 驱动的诈骗检测系统,通过结合**机器学习 (NLP)**、**基于规则的检测**以及 **URL 钓鱼分析**的混合方法,分析文本消息和 URL,从而提供实时、可解释的诈骗风险评分。
# 功能
- 使用机器学习(TF-IDF + Naive Bayes)进行 AI 驱动的诈骗检测
- 基于规则的诈骗关键词检测
- 使用启发式分析进行 URL 钓鱼检测
- 混合诈骗风险评分
- 通过匹配关键词提供可解释的预测
- 使用 FastAPI 构建的 REST API
- 使用 Pydantic 进行输入验证
- MongoDB 集成
- 交互式 API 文档 (Swagger UI)
- 使用 Joblib 进行模型持久化
- React 前端*(开发中)*
# 技术栈
## 后端
- Python
- FastAPI
- Pydantic
- Uvicorn
- MongoDB
- PyMongo
- Motor
## 机器学习
- Scikit-learn
- Pandas
- NumPy
- Joblib
## 前端
- React
- Vite
- JavaScript
## 数据库
- MongoDB Community Server
# 项目结构
```
scanly/
│
├── docs/
│ ├── DAY-01.md
│ ├── DAY-02.md
│ ├── DAY-03.md
│ ├── DAY-04.md
│ ├── DAY-05.md
│ ├── DAY-06.md
│ └── DAY-07.md
│
├── scanly-backend/
│ ├── ml/
│ │ ├── dataset.csv
│ │ ├── preprocess.py
│ │ ├── train.py
│ │ ├── model.pkl
│ │ └── vectorizer.pkl
│ │
│ ├── main.py
│ ├── models.py
│ ├── rules.py
│ ├── url_checker.py
│ ├── db.py
│ ├── requirements.txt
│ ├── .gitignore
│ └── .env
│
└── scanly-frontend/
├── src/
├── package.json
└── vite.config.js
```
# 当前 API 接口
| 方法 | 接口 | 描述 |
|---------|----------|-------------|
| GET | `/` | 后端状态 |
| GET | `/health` | 健康检查 |
| POST | `/scan` | 分析文本和 URL 的诈骗指标 |
# 请求示例
```
{
"text": "You won a free prize! Claim your OTP now urgently."
}
```
# 响应示例
```
{
"status": "success",
"input_text": "You won a free prize! Claim your OTP now urgently.",
"final_score": 67,
"category": "Suspicious",
"ml_score": 99,
"rule_score": 60,
"url_score": 0,
"matched_keywords": [
"prize",
"otp",
"urgent"
],
"explanation": "Some suspicious patterns found. Be cautious. | Keywords: prize, otp, urgent | ML model confidence: 99% scam probability"
}
```
# 检测流程
```
User Input
│
▼
FastAPI API
│
▼
Rule-Based Detection
│
▼
URL Phishing Analysis
│
▼
Machine Learning (TF-IDF + Naive Bayes)
│
▼
Hybrid Risk Scoring
│
▼
Risk Category
│
▼
JSON Response
```
# 机器学习流程
```
dataset.csv
│
▼
preprocess.py
(Clean Text)
│
▼
TF-IDF Vectorizer
(Text → Numerical Features)
│
▼
Multinomial Naive Bayes
│
▼
Evaluate Model
│
▼
Save
├── model.pkl
└── vectorizer.pkl
│
▼
Predict Scam Probability
```
# 进度
| 天数 | 状态 | 描述 |
|-----|:------:|-------------|
| 第 1 天 | ✅ | 项目搭建 (React + FastAPI) |
| 第 2 天 | ✅ | MongoDB 本地设置 |
| 第 3 天 | ✅ | REST API 和 Pydantic 验证 |
| 第 4 天 | ✅ | 基于规则的诈骗检测引擎 |
| 第 5 天 | ✅ | URL 钓鱼检测引擎 |
| 第 6 天 | ✅ | NLP 数据集准备与预处理 |
| 第 7 天 | ✅ | TF-IDF + Naive Bayes 模型训练及后端集成 |
详细的每日文档可在 **docs/** 目录中找到。
# 路线图
- [x] 后端搭建
- [x] MongoDB 集成
- [x] REST API
- [x] 基于规则的检测
- [x] URL 钓鱼检测
- [x] NLP 数据集预处理
- [x] 机器学习垃圾信息检测
- [x] 模型持久化
- [ ] 保存扫描历史
- [ ] 基于反馈的持续学习
- [ ] React 仪表板
- [ ] 用户身份验证
- [ ] 部署 (Render + Vercel)
# 运行项目
## 后端
```
cd scanly-backend
pip install -r requirements.txt
python -m uvicorn main:app --reload
```
后端
```
http://localhost:8000
```
Swagger UI
```
http://localhost:8000/docs
```
## 训练 ML 模型
```
cd scanly-backend
python ml/train.py
```
这将生成:
```
ml/
├── model.pkl
└── vectorizer.pkl
```
## 前端
```
cd scanly-frontend
npm install
npm run dev
```
前端
```
http://localhost:5173
```
# 未来改进
- 深度学习 (LSTM/BERT) 垃圾信息检测
- 实时 URL 信誉 API
- 基于用户反馈的模型重训
- 带有扫描历史和分析的仪表板
- 用于钓鱼检测的浏览器扩展
- 电子邮件诈骗检测
# 许可证
本项目的开发旨在用于教育、黑客松和作品集展示目的。
标签:Apex, AV绕过, FastAPI, React, Syscalls, 数据可视化, 机器学习, 诈骗检测, 逆向工具, 钓鱼检测