laksh-me4/phishguard

GitHub: laksh-me4/phishguard

基于机器学习的钓鱼 URL 检测系统,通过提取 URL 结构特征并结合多模型训练与威胁情报关联,在不访问目标网站的前提下预测其安全性。

Stars: 0 | Forks: 0

# 🛡️ 钓鱼 URL 检测系统 一个机器学习项目,用于分析 URL 并预测其是 **安全** 还是 **钓鱼** 网站 —— 全程无需打开该网站。 ## 📁 项目结构 ``` phishing-detector/ │ ├── features.py ← Extracts 12 numeric features from any URL ├── train_model.py ← Trains + compares ML models, saves best one ├── app.py ← Streamlit web interface (run this to use the app) ├── model.pkl ← Saved trained model (created after training) ├── phishing_site_urls.csv← Dataset (add your Kaggle CSV here) ├── model_evaluation.png ← Confusion matrix + accuracy chart ├── feature_importance.png← Which features matter most (Random Forest) └── README.md ← This file ``` ## 🚀 如何运行(分步指南) ### 1. 安装依赖 ``` pip install pandas numpy scikit-learn streamlit matplotlib seaborn ``` ### 2. 添加你的数据集 将名为 `phishing_site_urls.csv` 的 Kaggle CSV 文件放置在此文件夹中。 它需要包含两列:`url` 和 `label`(0 = 正常,1 = 钓鱼)。 如果你跳过此步骤,系统将自动生成一个小型演示数据集。 ### 3. 训练模型 ``` python train_model.py ``` 这将执行以下操作: - 从所有 URL 中提取特征 - 训练 Logistic Regression + Random Forest - 打印两者的准确率 - 将最佳模型保存为 `model.pkl` - 显示评估图表 ### 4. 启动 Web 应用 ``` streamlit run app.py ``` 在浏览器中打开 http://localhost:8501。 ## 🧠 从每个 URL 提取的特征 | 特征 | 检查内容 | |-----------------------|--------------------------------------------| | URL 长度 | 过长的 URL 很可疑 | | 是否包含 HTTPS | 正常网站会使用 HTTPS | | 是否包含 IP 地址 | 使用 IP 而非域名 = 可疑 | | 是否包含 @ 符号 | 常用于隐藏真实域名 | | 点的数量 | 点过多 = 可疑的子域名 | | 连字符数量 | 类似 amaz0n-secure-login.xyz 风格的域名 | | 域名长度 | 短域名通常是合法的 | | 子域名数量 | 过多的子域名很可疑 | | 可疑关键词 | "login"、"verify"、"account"、"password" | | 非标准端口 | URL 中出现 :8080 很可疑 | | 斜杠数量 | 非常深的 URL 路径 | | 域名中的数字 | amaz0n → 用数字替换字母 | ## 📊 使用的模型 | 模型 | 类型 | 备注 | |---------------------|---------------|-------------------------------| | Logistic Regression | 线性 | 简单、快速、可解释 | | Random Forest | 集成树 | 准确率更高,能显示特征重要性| 表现最好的模型将被自动保存。 ## 🌐 部署(可选 — 用于在线分享) 1. 将你的项目推送到 GitHub 2. 访问 https://share.streamlit.io 3. 连接你的 GitHub 仓库 4. 将主文件设置为 `app.py` 5. 点击 Deploy — 免费! ## 🎓 技术 - **Python 3.8+** - **pandas / numpy** — 数据处理 - **scikit-learn** — 机器学习 - **Streamlit** — Web 界面 - **matplotlib / seaborn** — 图表 - **re / urllib** — URL 解析 ## 💡 扩展思路 - 添加 WHOIS 查询(域名年龄 — 新域名很可疑) - 添加 VirusTotal API 集成以进行实时扫描 - 添加浏览器扩展 - 部署到 Render.com 获取免费托管 - 尝试使用 XGBoost 以获得更高的准确率
标签:Apex, Kubernetes, Python, 人工智能, 数据科学, 无后门, 机器学习, 用户模式Hook绕过, 资源验证, 逆向工具