dhruvbajpai29/smart-qr-scanner
GitHub: dhruvbajpai29/smart-qr-scanner
企业级二维码 URL 安全检测 API,通过 Redis 缓存与 VirusTotal 情报聚合实现低延迟的恶意链接实时判定。
Stars: 2 | Forks: 1
(smart-qr-scanner)
高性能二维码扫描 API
关键设计决策
性能优先的缓存:选择 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), 测试用例