linaodh25/Malicious-URL-Detection-System
GitHub: linaodh25/Malicious-URL-Detection-System
基于 Playwright 浏览器沙箱和多层威胁情报的恶意 URL 动态检测系统,可对任意链接进行行为分析并输出量化风险评分。
Stars: 0 | Forks: 0
# 🛡️ 恶意 URL 检测沙箱:




| 🟢 安全 (CLEAN) | 🟠 可疑 (SUSPICIOUS) | 🔴 恶意 (MALICIOUS) |
|:---:|:---:|:---:|
| 评分 0 – 30 | 评分 31 – 69 | 评分 70 – 100 |
## 演示视频
[▶ 观看完整演示](https://www.youtube.com/watch?v=DAkPTsAi1RQ)
## 📄 报告
[阅读完整报告](./REPORT.pdf)
## 预览
## 环境要求
- Python 3.12+
- Docker Desktop — 必须处于运行状态
- `requirements.txt` 中列出的依赖项
## 安装说明
```
# 安装 dependencies
python -m pip install -r requirements.txt
python -m pip install docker
# 安装 Playwright 浏览器
playwright install chromium
# 构建 Docker 镜像(一次性)
docker build -t malicious-url-scanner .
# 创建输出文件夹
mkdir output
```
## 运行说明
```
python app.py
```
在浏览器中打开 **http://127.0.0.1:5000**。
## 工作原理
系统运行一个由两部分组成的 pipeline:
```
URL Input ──► Browser (Playwright) ──► evidence.json ──► Analysis Pipeline ──► Verdict
```
**Pipeline 1 — 证据收集**
在无头 Chromium 浏览器中访问 URL,Hook JavaScript 函数(`eval`、`document.write`、表单提交),记录所有网络请求,验证 TLS,并记录任何文件下载行为。
**Pipeline 2 — 威胁分析**
查询 VirusTotal、AbuseIPDB 和 URLhaus,应用 16 条启发式检测规则,并生成最终风险评分。
**每次扫描都在全新的 Docker 容器中运行 —— 宿主机永远不会被暴露。**
## 使用方法
1. 将任意 URL 粘贴到输入框中
2. 点击 **Scan URL**
3. 等待 20 – 60 秒,沙箱运行期间请耐心等待
4. 阅读结果
| 字段 | 描述 |
|---|---|
| **Score** | 0 到 100 的风险等级 |
| **Verdict** | CLEAN / SUSPICIOUS / MALICIOUS |
| **Signals** | 导致分数上升的具体原因 |
| **Technical Details** | 重定向、请求、TLS、cookies、持续时间 |
| **Screenshot** | 沙箱内部页面的外观截图 |
## 项目结构
| 文件 | 作用 |
|---|---|
| `app.py` | Flask Web 服务器 |
| `main.py` | Pipeline 编排器 |
| `browser.py` | Playwright 浏览器 + JS 监控 |
| `js_hooks.py` | JavaScript 埋点 |
| `network_capture.py` | TLS 验证 + 请求日志 |
| `evidence_builder.py` | 构建 `evidence.json` |
| `ioc_extractor.py` | 提取 IPs、domains、hashes |
| `threat_intel.py` | VirusTotal · AbuseIPDB · URLhaus |
| `heuristics.py` | 16 条检测规则 |
| `scorer.py` | 风险评分 |
| `verdict.py` | 最终判定 |
| `sandbox.py` | Docker 容器管理 |
## 实时测试结果
在一个 Netflix 钓鱼克隆网站上进行了测试 —— 判定结果:**SUSPICIOUS 55/100**
| 指标 | 值 |
|---|---|
| 扫描耗时 | 14.72s |
| HTTP 请求数 | 9 |
| 重定向次数 | 2 |
| TLS 颁发者 | Let's Encrypt |
| VirusTotal | 16 个引擎标记 |
| AbuseIPDB | 评分 32/100 |
| 🟢 Clean Case | 🔴 Malicious Case | 🔴 Malicious Case (Detail) |
![]() |
![]() |
![]() |
标签:Chromium, DAST, Docker, Flask, Go语言工具, IP 地址批量处理, JavaScript行为分析, Playwright, Python, URL扫描器, Web安全, 威胁情报API, 安全沙箱, 安全防御评估, 恶意URL检测, 恶意软件分析, 无后门, 浏览器沙箱, 特征检测, 网络安全, 网络请求分析, 蓝队分析, 请求拦截, 逆向工具, 钓鱼检测, 隐私保护, 风险评分


