dhruvbajpai29/smart-qr-scanner

GitHub: dhruvbajpai29/smart-qr-scanner

企业级二维码 URL 安全检测 API,通过 Redis 缓存与 VirusTotal 情报聚合实现低延迟的恶意链接实时判定。

Stars: 2 | Forks: 1

(smart-qr-scanner) 高性能二维码扫描 API

Java 21 Spring Boot PostgreSQL Redis Gradle Build Passing License MIT

在二维码成为通往数字世界入口的时代,smart qr scanner 提供了一项至关重要的实用功能。这款企业级 API 专为提供针对 URL 的实时、准确且低延迟的结果而设计,旨在为用户提供帮助。 架构与设计 本项目采用现代的面向服务架构构建,旨在实现高性能、可扩展性和可维护性。其核心设计原则是通过智能分层的数据检索策略来提供评估。 请求流程图 系统采用 cache-aside(旁路缓存)策略,以确保在亚毫秒级时间内识别出已知威胁,同时通过受信任的外部服务对新 URL 进行全面分析。 代码片段 sequenceDiagram participant Client participant API Gateway participant smart qr scanning API (Controller) participant Redis Cache (Blacklist) participant Analysis Service participant external API participant PostgreSQL DB (Logs) flowQuishield 关键设计决策 性能优先的缓存:选择 Redis 作为缓存层,是因为其内存数据结构和极低的读取延迟。这对于响应时间是关键特性之一的安全应用来说至关重要。通过缓存已知的恶意 URL,我们减轻了分析服务的负载,并能为超过 90% 的常见威胁提供瞬时响应。 权威的外部情报:该服务没有重复造轮子,而是与 external API 进行了集成,这是一个受信任且全面的安全供应商数据聚合器。这一决定使得项目能够利用世界级的威胁情报,而无需承担维护复杂检测引擎的开销。 数据持久性与审计:虽然 Redis 提供了速度,但 PostgreSQL 被用作所有事务的记录系统。其 ACID 合规性保证了每次扫描都被记录,并且每个被列入黑名单的 URL 都能被持久化存储,为安全操作提供了关键的审计追踪。 可扩展且易于维护的代码库:该应用程序基于 Spring Boot 构建,使用了依赖注入(Dependency Injection)和清晰的关注点分离(Controller -> Service -> Repository)。这种松耦合架构使得系统易于测试、维护,并且可以独立地扩展各个组件。 核心功能 极速的威胁情报:通过 Redis 缓存,以毫秒级的延迟为已知威胁提供安全判定。 全面的分析引擎:利用 VirusTotal API 针对数十种防病毒引擎和网站扫描器检查 URL。 动态黑名单:自动将确认的威胁添加到黑名单数据库和 Redis 缓存中。 持久化的审计追踪:每次 URL 扫描都会记录到 PostgreSQL 数据库中,以便进行历史分析和合规审查。 现代化的异步就绪技术栈:基于 Java 21 和 Spring Boot 3 构建,使用 Java 的 HttpClient 与外部 API 进行非阻塞 I/O 操作。 技术栈与依赖 类别 技术 / 库 理由 后端 Java 21, Spring Boot 3 用于构建企业级应用的现代、健壮且高性能的技术栈。 数据持久化 Spring Data JPA, PostgreSQL 为关键审计日志和黑名单提供可靠的、符合 ACID 标准的关系型存储。 缓存 Spring Data Redis, Lettuce 用于超快速查找已知恶意 URL 的内存缓存。 API 集成 Java 11+ HttpClient, JSON.org 用于与外部的 VirusTotal REST API 进行高效、非阻塞的通信。 开发者工具 Lombok, Gradle 减少样板代码,并提供强大、灵活的构建自动化系统。 导出到表格 API 文档 POST /api/check 分析 URL 并返回安全判定。 请求体: JSON { "url": "http://example-malicious-site.com/malware.exe" } 响应: 状态码 200 OK - Content-Type: text/plain 指示结果的纯文本字符串。 "safe":该 URL 已经过分析,被认为是安全的。 "block":该 URL 是恶意的,应当被阻止。 "block (cached)":该 URL 在高速威胁缓存中被发现,已被阻止。 状态码 500 Internal Server Error - Content-Type: text/plain 指示分析过程中发生错误。 "Error: {exception message}" 入门指南 前置条件 Java 21 (JDK) Gradle 8.x Docker & Docker Compose(用于简化数据库/缓存设置) 有效的 API Key 本地安装与启动 克隆代码库: Bash git clone https://github.com/dhruvbajpai29/qrfish-detector.git cd smart-qr-scanner 配置环境密钥: 将 `src/main/resources` 中的 `application.properties.template` 文件重命名为 `application.properties`。 至关重要的是,不要将密钥提交到 Git。本项目出于演示目的使用了硬编码的 API key。在生产环境中,请始终使用环境变量或专业的密钥管理系统。 使用您的数据库和 Redis 凭据更新 `application.properties`。 使用您的 API key 更新 `VirusTotalService.java`。 构建应用程序: Bash ./gradlew clean build 运行服务: Bash java -jar build/libs/qrfish_detector-0.0.1-SNAPSHOT.jar API 将在 http://localhost:8080 上运行。 未来路线图 [ ] CI/CD 集成:使用 GitHub Actions 实现完整的 CI/CD pipeline,以自动化构建、测试和部署。 [ ] 异步分析:对于非关键路径,引入消息队列(例如 RabbitMQ),将初始请求与完整的分析工作流解耦。 [ ] 监控与告警:集成 Micrometer、Prometheus 和 Grafana,提供有关系统健康状况和性能的实时指标和告警。
基于 MIT 许可证授权。查看 LICENSE 了解更多信息。
标签:Redis, Spring Boot, URL安全检测, 二维码扫描, 后台面板检测, 域名枚举, 威胁情报, 开发者工具, 搜索引擎查询, 搜索语句(dork), 测试用例