Zoro0830/phish-guard
GitHub: Zoro0830/phish-guard
一款基于规则引擎与 AI 大模型的 Chrome 扩展,实时分析网页并给出可解释的钓鱼网站判定。
Stars: 0 | Forks: 0
# 🛡️ Phish Guard
Phish Guard 实时分析网页,并告知您网站是**合法**、**可疑**还是**极可能是钓鱼网站**——并为每个判定提供明确理由。
## 截图
| ✅ 合法 | ⚠️ 可疑 | 🚨 钓鱼 |
|---|---|---|
|  |  |  |
| instagram.com | juice-shop.herokuapp.com | phishing-test.html |
## 工作原理
1. **content.js** 被注入到每个页面中,并收集信号:密码字段、表单、内联脚本和表单 action URL。
2. **service_worker.js** 接收信号并将其传递给规则引擎。
3. **rules.js** 根据这些信号对页面进行评分并给出判定。
4. 如果判定模棱两可且域名受信任,结果将被升级至 **Flask AI 后端**,该后端使用 **Llama 3 (通过 Groq)** 给出最终意见。
5. **popup.js** 显示判定结果、风险评分、置信度、威胁条以及每个信号的解释。
## 项目结构
```
Phish Guard/
├── backend/
│ ├── app.py # Flask API — AI review endpoint
│ └── requirements.txt
└── chrome-extension/
├── assets/
│ │ ├── icon16.png
│ │ ├── icon48.png
│ │ └── icon128.png
├── background/
│ ├── rules.js # Scoring & verdict logic
│ └── service_worker.js
├── content/
│ └── content.js # Page signal collector
├── popup/
│ ├── popup.html
│ ├── popup.css
│ └── popup.js
├── utils/
│ ├── brandRules.js
│ ├── brandUtils.js
│ └── urlUtils.js
└── manifest.json
```
## 开始使用
### 前置条件
- Python 3.9+
- Google Chrome
- 一个免费的 [Groq API key](https://console.groq.com)
### 第 1 步 — 运行后端
```
cd backend
pip install -r requirements.txt
```
设置您的 Groq API key:
**Windows (PowerShell)**
```
$env:GROQ_API_KEY="your_key_here"
python app.py
```
**Mac / Linux**
```
export GROQ_API_KEY="your_key_here"
python app.py
```
服务器运行在 `http://localhost:5000`。在使用扩展程序时,请保持此终端处于打开状态。
### 第 2 步 — 加载 Chrome 扩展程序
1. 打开 Chrome 并访问 `chrome://extensions`
2. 启用右上角的**开发者模式**
3. 点击**加载已解压的扩展程序**
4. 选择 `chrome-extension/` 文件夹
5. Phish Guard 盾牌图标将出现在您的工具栏中
### 第 3 步 — 进行测试
1. 访问任何网站(例如 `instagram.com`、`juice-shop.herokuapp.com`)
2. 点击 Chrome 中的 **Phish Guard** 图标
3. 点击**扫描当前页面**
4. 查看判定结果、评分和理由
## 评分逻辑
| 信号 | 严重程度 | 评分 |
|--------|----------|-------|
| 不受信任域名上的密码字段 | 高 | +15 |
| 不受信任域名上的登录表单 | 高 | +10 |
| 过多的内联 JavaScript | 中 | +5 |
| 检测到品牌冒充 | 严重 | +20 |
| 总分 | 判定结果 |
|-------------|---------|
| 0 – 14 | ✅ 可能合法 |
| 15 – 29 | ⚠️ 可疑 |
| 30+ | 🚨 极可能为钓鱼网站 |
## AI 升级
仅当满足**所有三个**条件时,才会调用 Flask 后端:
- 判定结果不为“可能合法”
- 域名在受信任列表中
- 置信度分数低于 0.6
这避免了在情况明确的案例中进行不必要的 API 调用。
使用的 AI 模型是通过 Groq API 调用的 **Llama 3 70B**。
## 技术栈
| 层级 | 技术 |
|-------|-----------|
| Chrome 扩展程序 | Manifest V3, Vanilla JS |
| 后台逻辑 | Service Worker |
| AI 后端 | Python, Flask, Groq SDK |
| AI 模型 | Llama 3 70B (通过 Groq) |
## 已知限制
- 必须在本地运行 Flask 后端才能进行 AI 审查。
- 受信任域名列表较小——尚未包含 Amazon、LinkedIn、Twitter 等大型网站。
- `brandRules.js`、`brandUtils.js` 和 `urlUtils.js` 目前为存根。
## 许可证
MIT
标签:DLL 劫持, Flask, 可解释AI, 大语言模型, 网络安全, 自定义脚本, 逆向工具, 钓鱼检测, 隐私保护