subbuadari/Phishing-Website-Detector

GitHub: subbuadari/Phishing-Website-Detector

一个基于机器学习集成的钓鱼网站检测系统,结合实时仪表板与可解释性分析,提供 URL 风险评分。

Stars: 0 | Forks: 0

# 🛡️ PhishGuard AI — 钓鱼网站检测器 **PhishGuard AI** 是一个由机器学习模型 ensemble 提供支持的全栈、生产级钓鱼网站检测系统。它将高精度的 AI 后端与基于 Flask 和现代 CSS/SVG 动画的实时 **Quantum Security Dashboard** 相结合。 ## 🚀 关键特性 - **AI Ensemble Classifier** — 通过软投票结合随机森林、XGBoost、LightGBM 和逻辑回归,实现更高的准确性。 - **LSTM Benchmark** — 包含一个基于 PyTorch 的 LSTM 模型,用于与集成方法比较性能。 - **Real-Time Inference** — 通过基于浏览器的仪表板即时分析任意 URL。 - **Quantum Security Dashboard** — 一个像素完美、带有动画的 UI,包含: - SVG 圆形仪表盘,带有“旋转”绘制动画。 - 玻璃拟态卡片与霓虹强调条纹。 - 实时词法强度、主机可靠性和全局威胁评分。 - 颜色编码的威胁状态(青色表示安全,红色表示钓鱼)。 - **SHAP 可解释性** — 用于模型可解释性的 SHAP 值可视化。 - **消融研究** — 对单个特征贡献的系统性分析。 ## 🧠 AI 架构 ### 集成模型 主要分类器使用 `VotingClassifier`(软投票)结合以下模型: | 模型 | 作用 | |---|---| | 随机森林 | 捕捉非线性特征交互 | | XGBoost | 高准确度的梯度提升树集成 | | LightGBM | 快速、内存高效的梯度提升 | | 逻辑回归 | 用于校准的线性基线 | 最终预测由所有四个模型的**平均类别概率**得出,使系统更稳健且不易过拟合。 ### LSTM 基准 (`lstm_benchmark.py`) 一个基于 PyTorch 的序列 LSTM 模型,在相同特征集上训练,用于与集成方法比较性能。 ## 🔬 特征工程 系统使用 `src/features.py` 从每个 URL 中提取 **14 个结构和词法特征**: | # | 特征 | 描述 | |---|---|---| | 1 | `url_length` | URL 的总字符长度 | | 2 | `num_dots` | `.` 分隔符的数量(子域) | | 3 | `num_hyphen` | `-` 字符的数量 | | 4 | `num_at` | `@` 的数量(常见于钓鱼) | | 5 | `num_question` | `?` 的数量(查询字符串) | | 6 | `num_equal` | `=` 的数量(参数赋值) | | 7 | `num_and` | `&` 的数量(链式参数) | | 8 | `num_percent` | `%` 的数量(URL 编码) | | 9 | `num_slash` | `/` 的数量(路径深度) | | 10 | `num_www` | 是否存在 `www` 子域 | | 11 | `num_http` | `http` 出现的次数 | | 12 | `num_https` | `https` 出现的次数 | | 13 | `has_ip` | 是否使用 IP 地址而非域名 | | 14 | `path_length` | URL 路径组件的长度 | ## 📊 实时仪表板指标 分析 URL 时,仪表板会计算并显示: | 指标 | 描述 | |---|---| | **安全评估** | 来自集成模型 `predict_proba` 的整体 AI 置信度(0–100) | | **词法强度** | URL 结构质量评分(对长度、连字符、特殊字符进行惩罚) | | **主机可靠性** | 协议和域信任评分(奖励 HTTPS,惩罚 IP) | | **全局威胁评分** | 直接从 AI 概率输出缩放的威胁强度 | | **主机名** | 输入 URL 的基础域名 | | **协议** | HTTP 与 HTTPS 检测 | | **异常数** | 可疑特殊字符(`@`、`%`、`&`、`=`)的数量 | | **分析引擎** | 使用的 AI 模型:`集成 AI(RF+XGB+LGBM)` | ## 🗂️ 项目结构 ``` PhishGuard-AI/ ├── src/ # Shared Python package │ ├── __init__.py │ └── features.py # 14-feature URL extraction logic │ ├── templates/ │ └── index.html # Quantum Security Dashboard (Flask/Jinja2) │ ├── models/ │ └── phishing_ensemble_model.pkl # Trained VotingClassifier (generated by app.py) │ ├── app.py # Model training & evaluation pipeline ├── app1.py # Alternate training configuration ├── web_app.py # Flask web server & real-time inference ├── lstm_benchmark.py # PyTorch LSTM benchmark model ├── interpretability_shap.py # SHAP explainability visualizations ├── ablation_study.py # Feature ablation study script ├── ablation_study_results.csv # Results of the ablation study ├── model_comparison_results.csv # Comparison of all model accuracies ├── url_dataset.csv # Main training dataset (87,000+ URLs) ├── requirements.txt # Python dependencies ├── .gitignore # Ignores models, cache, and environment files └── README.md # This file ``` ## ⚙️ 设置与安装 ### 先决条件 - Python 3.8+ - pip ### 1. 克隆仓库 ``` git clone cd Phishing-Website-Detector-using-LightGBM-XGBoost-Random-Forest-and-Logistic-Regression ``` ### 2. 安装依赖 ``` pip install -r requirements.txt ``` **依赖包括:** ``` flask, pandas, numpy, scikit-learn, xgboost, lightgbm, joblib, torch, shap, matplotlib ``` ### 3. 训练模型 运行训练流水线以生成集成模型: ``` python app.py ``` 这将: - 加载并预处理 `url_dataset.csv` - 训练 VotingClassifier 集成 - 将模型保存到 `models/phishing_ensemble_model.pkl` - 打印准确率、分类报告和混淆矩阵 ### 4. 启动仪表板 ``` python web_app.py ``` 打开浏览器并导航至: ``` http://127.0.0.1:5000 ``` ## 🖥️ 仪表板使用 1. 在搜索栏中输入任意 URL(例如 `https://www.google.com`)。 2. 点击 **Analyze URL**。 3. 仪表板将显示: - **安全评估量规** — 从 0 到 AI 评分的动画 SVG 弧形绘制。 - **URL 详情卡片** — 主机名、协议、状态、风险、异常数和分析引擎。 - **词法强度** — 带脉冲霓虹指示器的分段条形图。 - **主机可靠性** — WHOIS 处理状态、域名年龄和服务器信任。 - **全局威胁评分** — 带 CLEAN/DANGEROUS 标签的威胁强度。 ## 🔧 附加脚本 | 脚本 | 用途 | |---|---| | `ablation_study.py` | 测试模型在特征子集上的性能,以识别最具影响力的特征 | | `interpretability_shap.py` | 生成 SHAP 汇总和条形图用于模型可解释性 | | `lstm_benchmark.py` | 在相同数据集上训练和评估 PyTorch LSTM 用于比较 | ## 📈 模型性能 结果存储在 `model_comparison_results.csv` 中。集成模型 consistently consistently outperforms individual classifiers by leveraging the complementary strengths of all four algorithms. ## 🛠️ 技术栈 | 层级 | 技术 | |---|---| | **后端** | Python、Flask | | **机器学习模型** | Scikit-Learn、XGBoost、LightGBM | | **深度学习** | PyTorch(LSTM 基准) | | **可解释性** | SHAP | | **前端** | HTML5、CSS3(玻璃拟态)、SVG 动画 | | **模板** | Jinja2 | | **数据** | Pandas、NumPy | ## 📌 已知限制 - **域名年龄**:`domain_age` 值由 AI 预测推断(而非实时 WHOIS API)。集成 WHOIS API(例如 DomainTools)将提供确切的注册日期。 - **开发服务器**:使用 Flask 开发服务器进行本地测试。对于生产部署,请使用 **Gunicorn** 或 **Waitress** 等 WSGI 服务器。 - **特征范围**:这 14 个特征纯粹是结构/词法的。未来迭代可以添加基于内容和基于图的特征以提高鲁棒性。 ## 🔮 后续改进 - [ ] 集成实时 WHOIS API 以获取准确的域名年龄。 - [ ] 添加基于内容的特征(页面文本、表单操作、重定向)。 - [ ] 在云平台上部署(例如 Render)并使用 Gunicorn。 - [ ] 扩展数据集以包含更多近期钓鱼 URL。 - [ ] 添加用户认证和 URL 扫描历史记录日志。
标签:AI钓鱼检测, Flask, LightGBM, LSTM, Python, PyTorch, SEO钓鱼检测, SHAP可解释性, SVG动画, URL检测, XGBoost, 仪表盘, 凭据扫描, 后端开发, 实时威胁分析, 恶意URL检测, 无后门, 机器学习集成模型, 浏览器仪表盘, 消融研究, 特征提取, 玻璃态设计, 生产级系统, 网络安全, 逆向工具, 逻辑回归, 量子安全仪表盘, 钓鱼网站防御, 随机森林, 隐私保护