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: Image Image 输出为 JSON: Image 输出为 PDF: Image ## 功能 * 模块化基于规则的钓鱼检测引擎(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 辅助钓鱼检测 * 置信度评分 ## 目的 该项目的目标是通过逐步将前端规则引擎演变为全栈安全分析平台,来探索现代钓鱼检测系统的工作原理。
标签:URL分析, 云计算, 安全分析工具, 自定义脚本, 规则引擎, 钓鱼检测