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绕过, 资源验证, 逆向工具