jawadkhatttak/URL-Guardian
GitHub: jawadkhatttak/URL-Guardian
一款纯前端实现的钓鱼 URL 检测工具,通过模块化规则引擎对 URL 进行加权风险评分和可解释的安全评估。
Stars: 0 | Forks: 0
# URL Guardian
一款前端钓鱼 URL 分析工具,通过模块化、基于规则的检测引擎评估 URL,并在现代化的网络安全仪表板中展示结果。
🔗 **[在线演示](https://jawadkhatttak.github.io/URL-Guardian/)**
## 概述
URL Guardian 使用独立的检测规则分析 URL 中常见的钓鱼指标。该应用程序不依赖单一启发式方法,而是将多种信号组合成加权风险评分,从而生成可解释的安全评估。
该项目专注于简洁的架构、可维护性和用户体验,同时展示了实用的前端工程和网络安全概念。
## 预览
UI:
输出为 JSON:
输出为 PDF:
## 功能
* 模块化基于规则的钓鱼检测引擎(16 条独立规则)
* 加权风险评分(0–100),针对重叠信号设有抑制逻辑
* 基于严重程度的发现,包含解释和建议
* URL 解析和域名分析(协议、主机名、已注册域名、子域名、TLD)
* SVG 动画风险评分可视化
* 本地扫描历史记录,支持恢复功能(无需重新分析)
* 将报告导出为 JSON 和 PDF
* 针对桌面和移动端优化的响应式仪表板
* 黑暗风格的网络安全主题界面
## 检测规则
当前分析包括:
* IP 地址检测
* URL 缩短服务
* HTTP / HTTPS 验证
* 长 URL 检测
* 可疑子域名模式
* 主机名关键词分析
* 品牌冒充检测
* Punycode 检测
* Unicode 检测
* 同形异义词 / 易混淆字符检测
* Levenshtein 品牌相似度
* Shannon 熵分析
* 重定向模式检测(`@` 技巧和开放重定向查询参数)
* 非标准端口检测
* 可疑文件扩展名
* JavaScript 和 data 协议检测
每条规则都独立存放在 `js/rules/` 目录下的文件中,并返回一个发现对象或 `null`。添加新规则只需编写一个文件并在 `js/rules/index.js` 中注册——应用程序中的其他内容无需更改。
## 技术栈
* HTML5
* CSS3
* 原生 JavaScript (ES Modules)
* LocalStorage
* SVG 动画
未使用后端、构建步骤或外部框架。
## 快速开始
该项目使用原生 ES modules,浏览器在 `file://` 协议下会阻止其运行——即使在本地,也需要通过 HTTP 提供服务。
```
git clone https://github.com//url-guardian.git
cd url-guardian
# 选择一个:
npx serve .
# 或
python3 -m http.server 8080
```
打开其打印出的本地 URL。除此之外,无需进行任何构建或安装。
## 项目结构
```
url-guardian/
├── index.html
├── css/
│ └── style.css
└── js/
├── main.js # entry point, wires UI to the engine
├── core/
│ ├── parser.js # URL parsing + registrable-domain extraction
│ ├── analyzer.js # orchestrates parse -> rules -> suppression -> score
│ ├── score.js # weighted scoring + risk-level mapping
│ ├── ruleWeights.js # per-rule weight + per-severity base score tables
│ └── ruleDependencies.js # suppression rules for overlapping findings
├── rules/ # 16 independent detectors, one file each
├── data/ # brand list, shortener list, keyword list,
│ # generated Public Suffix List data, confusables table
├── ui/ # DOM rendering, history, sample chips, export
└── utils/ # Levenshtein, Shannon entropy, storage, formatting
scripts/
└── generate-suffix-list.mjs # build-time only: regenerates js/data/publicSuffixList.js
# from a fresh copy of the real Public Suffix List
```
## 风险等级
| 评分 | 等级 |
| ------ | -------- |
| 0 | 安全 |
| 1–20 | 低 |
| 21–40 | 中 |
| 41–70 | 高 |
| 71–100 | 严重 |
## 设计目标
* 可解释的钓鱼检测——每个评分都能追溯到具体、易读的发现
* 模块化架构——每个规则一个文件,易于扩展或移除
* 生产级 UI
* 可维护的代码库
* 纯前端实现
## 局限性
在将其视为作品集/教育工具之外的用途之前,有必要了解以下几点:
* **域名解析使用真实的实际 Public Suffix List 生成快照**(`js/data/publicSuffixList.js`,约 9,900 条精确规则 + 283 条通配符规则 + 8 条例外规则,从 [publicsuffix.org 官方 GitHub 镜像](https://github.com/publicsuffix/list) 获取并预先进行 Punycode 编码)。它**不是实时数据流**——PSL 会偶尔添加/删除条目,因此此快照可能会过时。定期从仓库根目录运行 `node scripts/generate-suffix-list.mjs` 以根据最新列表刷新数据。此脚本仅在构建时使用,零 npm 依赖,且绝不会被任何面向浏览器的代码导入——交付的应用程序本身除了它生成的静态数据文件外,在运行时不依赖任何其他东西。
* **品牌和缩短服务列表简短且经过精心挑选**,并非详尽无遗的威胁情报数据库——预期会出现漏报(未列出的品牌不会被标记)和偶尔的误报。
* **“导出 PDF”使用浏览器的原生打印对话框**,而不是生成的 PDF 字节流——在客户端从头构建一个字节流需要像 jsPDF 这样的库。
* **每条规则都可以被独立规避。** 这是启发式模式匹配,不是威胁情报。请将每个评分视为人工决策的辅助证据,而非最终裁决。
## 路线图
该项目正在分多个阶段进行开发。
### 版本 1(当前)
* 基于规则的钓鱼检测
* 本地分析
* 交互式仪表板
* 报告导出
### 计划中的版本 2
* Node.js 后端
* WHOIS 分析
* DNS 检查
* SSL 证书分析
* 威胁情报集成
* 使用 Playwright 进行内容分析
### 计划中的版本 3
* 身份验证
* 数据库持久化
* 后台扫描 worker
* 任务队列
* 扫描历史记录
* 公共报告分享
### 计划中的版本 4
* 机器学习分类器
* 特征提取 pipeline
* AI 辅助钓鱼检测
* 置信度评分
## 目的
该项目的目标是通过逐步将前端规则引擎演变为全栈安全分析平台,来探索现代钓鱼检测系统的工作原理。
输出为 JSON:
输出为 PDF:
## 功能
* 模块化基于规则的钓鱼检测引擎(16 条独立规则)
* 加权风险评分(0–100),针对重叠信号设有抑制逻辑
* 基于严重程度的发现,包含解释和建议
* URL 解析和域名分析(协议、主机名、已注册域名、子域名、TLD)
* SVG 动画风险评分可视化
* 本地扫描历史记录,支持恢复功能(无需重新分析)
* 将报告导出为 JSON 和 PDF
* 针对桌面和移动端优化的响应式仪表板
* 黑暗风格的网络安全主题界面
## 检测规则
当前分析包括:
* IP 地址检测
* URL 缩短服务
* HTTP / HTTPS 验证
* 长 URL 检测
* 可疑子域名模式
* 主机名关键词分析
* 品牌冒充检测
* Punycode 检测
* Unicode 检测
* 同形异义词 / 易混淆字符检测
* Levenshtein 品牌相似度
* Shannon 熵分析
* 重定向模式检测(`@` 技巧和开放重定向查询参数)
* 非标准端口检测
* 可疑文件扩展名
* JavaScript 和 data 协议检测
每条规则都独立存放在 `js/rules/` 目录下的文件中,并返回一个发现对象或 `null`。添加新规则只需编写一个文件并在 `js/rules/index.js` 中注册——应用程序中的其他内容无需更改。
## 技术栈
* HTML5
* CSS3
* 原生 JavaScript (ES Modules)
* LocalStorage
* SVG 动画
未使用后端、构建步骤或外部框架。
## 快速开始
该项目使用原生 ES modules,浏览器在 `file://` 协议下会阻止其运行——即使在本地,也需要通过 HTTP 提供服务。
```
git clone https://github.com/标签:URL分析, 云计算, 安全分析工具, 自定义脚本, 规则引擎, 钓鱼检测