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, 数据可视化, 机器学习, 诈骗检测, 逆向工具, 钓鱼检测