ogtamimi/qr-guard

GitHub: ogtamimi/qr-guard

QR Guard 是一款结合多威胁情报引擎与 AI 分析的二维码和 URL 安全扫描平台,可在用户交互前检测钓鱼、恶意软件及诈骗风险并生成可视化风险评分报告。

Stars: 2 | Forks: 0

扫描任何 QR 码或 URL,立即知晓其是否安全。

QR Guard 使用多个安全引擎和 AI 分析链接是否存在钓鱼、恶意软件和诈骗行为。 它会追踪每一次重定向,以可视化方式计算风险评分,并提供清晰易读的安全报告。

安全的 QR 码扫描器与威胁检测平台

## 功能 ### 基于 AI 的 QR 码安全扫描器 上传 QR 码图片、拖放文件或直接粘贴 URL。QR Guard 会即时解码并分析 QR 码,以便在用户与其交互之前识别钓鱼企图、恶意链接、诈骗和其他在线威胁。 ### 高级 URL 和 QR 码威胁检测 每次扫描都会使用多个威胁情报源和基于 AI 的分析进行全面安全检查,以检测钓鱼网站、恶意软件分发、欺诈性域名和可疑重定向。 ### 多引擎安全分析 QR Guard 结合了多个安全引擎以实现准确的威胁检测: - **VirusTotal** – 全球反病毒和恶意软件情报网络 - **Google Safe Browsing** – 实时检测钓鱼和恶意网站 - **URLhaus** – 协作式的恶意软件和滥用追踪数据库 - **Groq Llama 3 AI** – 基于 AI 的 URL 安全分析,可评估域名模式、重定向行为、钓鱼指标和社会工程学风险 ### 重定向链监控 追踪 URL 链中的每一次重定向,揭示隐藏的目的地,识别域名切换技术,检测可疑的重定向循环,并揭露缩短或伪装链接背后的真实目的地。 ### QR 钓鱼与诈骗检测 识别常见的钓鱼指标,包括虚假登录页面、银行诈骗、加密货币欺诈、账户验证陷阱、凭据窃取企图,以及其他通常通过 QR 码传播的恶意活动。 ### 智能风险评分 通过可视化的风险评分和清晰的分类,获得易于理解的安全评估: - 安全 - 可疑 - 危险 风险计算会考虑 HTTPS 安全性、域名信誉、重定向行为、关键字分析、基于 IP 的托管以及多个威胁情报信号。 ### 扫描历史与安全报告 访问包含搜索、过滤和威胁状态追踪的详细扫描历史记录。随时查看以前的 QR 码和 URL 安全分析。 ### 安全的用户身份验证 由 Clerk 身份验证提供支持的用户账户受到保护,可安全访问扫描历史记录、账户设置和订阅功能。 ### 现代化的用户体验 享受响应迅速、适合移动设备的仪表板,支持深色模式和浅色模式,采用现代 Web 技术构建,提供快速可靠的性能。 ## 技术栈 | 层级 | 技术 | |---|---| | Frontend | React 19, TypeScript, Vite 6, Tailwind CSS v4 | | Backend | Vercel Serverless Functions (Node.js, TypeScript) | | Auth | Clerk | | AI | Groq (Llama-3.3-70b) | | Threat Intel | VirusTotal v2, Google Safe Browsing v4, URLhaus | | Dev Server | Express + Vite 中间件(通过 `tsx`) | | Hosting | Vercel (static SPA + serverless API) |

## 快速开始 ### 前置条件 - Node.js 18+ - npm ### 安装 ``` git clone https://github.com/ogtamimi/qr-guard.git cd qr-guard npm install ``` ### 环境变量 复制示例文件并填入你的密钥: ``` cp .env.example .env ``` | 变量 | 说明 | |---|---| | `GROQ_API_KEY` | 用于 Llama-3 AI 分析的 Groq API 密钥 | | `VITE_CLERK_PUBLISHABLE_KEY` | Clerk publishable key(客户端) | | `CLERK_SECRET_KEY` | Clerk secret key(服务端) | | `VIRUSTOTAL_API_KEY` | VirusTotal v2 API 密钥 | | `GOOGLE_SAFE_BROWSING_API_KEY` | Google Safe Browsing v4 API 密钥 | 所有密钥都是可选的——缺失的密钥会优雅降级。扫描仍然会使用启发式算法和已配置的引擎正常运行。 ### 本地运行 ``` npm run dev ``` 在 `http://localhost:3000` 启动 Express + Vite 开发服务器。 ### 生产构建 ``` npm run build npm start ``` 使用 Vite 构建 Frontend,并将 `server.ts` 打包到 `dist/` 中,然后使用 Express 提供 SPA 服务。 ### 部署到 Vercel 将代码推送到 GitHub 并在 [Vercel dashboard](https://vercel.com) 中导入该仓库。`vercel.json` 配置会处理 SPA 路由重写;`api/` 中的 API 函数会自动部署为 serverless functions。 ## 工作原理 1. **输入** - 用户上传 QR 图片(在客户端使用 jsQR 解码)或粘贴 URL 2. **扫描请求** - 发送至 `POST /api/scan` 3. **重定向追踪** - 追踪完整的 HTTP 重定向链,最多 8 跳,支持手动重定向模式 4. **并行威胁查询** - 同时查询 VirusTotal、Google Safe Browsing 和 URLhaus 5. **DNS 解析** - 解析 A、NS 和 MX 记录以验证域名基础设施 6. **启发式评分** - 根据收集到的所有信号计算基础风险评分 7. **AI 增强** - 如果设置了 `GROQ_API_KEY`,扫描元数据将发送给 Llama-3.3-70b 进行语义分析,并生成自然语言风险报告 8. **响应** - 在仪表板中展示组合结果 ## API 参考 ### `POST /api/scan` 扫描 URL 以检测安全威胁。 **请求体:** ``` { "url": "https://example.com", "inputType": "DIRECT_URL" } ``` **响应:** 包含风险评分、分类、重定向链、AI 总结和各引擎威胁结果的 `ScanResult` 对象。 ### `GET /api/health` 返回所有已配置 API 后端的连接状态。 ### `POST /api/admin/set-role` 在 Clerk 中设置用户的角色。受 `x-setup-key` 请求头保护,该请求头必须与 `SETUP_SECRET` 环境变量匹配。 ## 项目结构 ``` qr-guard/ ├── api/ # Vercel serverless functions │ ├── _utils.ts # Shared utilities (redirect chain, DNS, threat lookups) │ ├── scan.ts # POST /api/scan │ ├── health.ts # GET /api/health │ └── admin/set-role.ts # POST /api/admin/set-role ├── src/ │ ├── App.tsx # Root component: routing, scan logic, pricing │ ├── types.ts # Shared TypeScript types │ ├── components/ │ │ ├── auth/ # Clerk auth modal + sandbox bypass │ │ ├── dashboard/ # Landing page, scan history, usage stats │ │ ├── results/ # Risk gauge, AI panel, threat detail widgets │ │ └── scanner/ # QR drag-and-drop decoder, URL input form │ └── pages/ # Admin, payment success/cancel pages ├── server.ts # Dev server (Express + Vite middleware) ├── vercel.json # Vercel deployment config ├── vite.config.ts └── .env.example # Environment variable template ``` ## 许可证 本项目基于 **Apache 2.0 License** 发布,您可以自由使用、修改和分发,但需注明出处。 [查看许可证](./LICENSE)
标签:AI安全分析, MITM代理, 二维码扫描, 威胁情报, 开发者工具, 搜索语句(dork), 自动化攻击, 钓鱼检测