cobrich/scam-checker-api
GitHub: cobrich/scam-checker-api
基于 Go 的威胁情报 API,通过聚合公开恶意数据源并结合启发式分析与基础设施扫描,提供实时 URL 钓鱼和诈骗检测服务。
Stars: 2 | Forks: 0
# 🛡️ Scam Checker API
使用 Go 构建的威胁情报 API 和钓鱼扫描器。
Scam Checker API 利用公开威胁源、启发式分析、Redis 缓存和实时 URL 扫描来检测钓鱼、恶意软件、诈骗 URL、可疑域名和有风险的基础设施。






## 功能
| 功能 | 描述 |
| ------------------- | ------------------------------------------------------------------------------------- |
| 威胁源 | 从多个公开来源聚合钓鱼和恶意软件 URL |
| 启发式分析 | 检测域名拼写抢注、品牌注入、可疑关键词、熵和混淆 |
| 基础设施扫描 | 检查 DNS、SSL、HTTP 内容、重定向和托管信号 |
| 智能评分 | 生成 0 到 100 的风险评分 |
| Redis 缓存 | 加速重复检查 |
| PostgreSQL 存储 | 存储标准化的威胁情报数据 |
| Docker 支持 | 在本地运行 API、PostgreSQL 和 Redis |
## 威胁情报来源
* PhishTank
* URLhaus
* OpenPhish
* ThreatFox
* GitHub Phishing Database
* VX Vault
* Phishing Army
* StopForumSpam
## 架构
```
flowchart TD
Client["Client / API User"] --> API["Fiber REST API"]
API --> Checker["Checker Service"]
Checker --> Whitelist["Whitelist Check"]
Checker --> Cache["Redis Cache"]
Checker --> DB["PostgreSQL Threat DB"]
Checker --> Heuristics["Heuristic Analyzer"]
Checker --> Infra["Infrastructure Scanner"]
Infra --> DNS["DNS Scan"]
Infra --> SSL["SSL/TLS Check"]
Infra --> HTTP["HTTP Content Scan"]
Infra --> WHOIS["WHOIS Analysis"]
Fetchers["Threat Feed Fetchers"] --> DB
Checker --> Score["Risk Scoring"]
Score --> API
```
## 智能 Pipeline
1. **白名单检查** — 受信任的域名会立即返回。
2. **Redis 缓存** — 快速解决重复检查。
3. **数据库查询** — 根据存储的威胁源检查 URL 哈希。
4. **启发式分析** — 分析可疑的 URL 结构。
5. **基础设施扫描** — 检查 DNS、SSL、WHOIS 和 HTTP 信号。
6. **风险评分** — 将信号标准化为最终判定。
## 技术栈
* Go
* Fiber
* PostgreSQL
* Redis
* Docker
* pgx
* MaxMind GeoLite2
* 公开威胁情报源
## 项目结构
```
cmd/
└── api/ # API entrypoint
config/ # App configuration
internal/
├── app/ # Server and background workers
├── domain/ # Domain models
├── repository/ # PostgreSQL repositories
├── service/
│ ├── analyzer/ # Heuristic analysis
│ ├── cache/ # Redis cache
│ ├── fetcher/ # Threat feed fetchers
│ ├── infra/ # DNS / SSL / HTTP scanner
│ ├── whois/ # WHOIS analysis
│ ├── checker.go # Main checking logic
│ └── whitelist.go
└── transport/
└── rest/ # HTTP handlers
```
## 快速开始
### 前置条件
* Docker
* Docker Compose
* MaxMind GeoLite2 City 数据库
* MaxMind GeoLite2 ASN 数据库
### 克隆
```
git clone https://github.com/cobrich/scam-checker-api.git
cd scam-checker-api
```
### GeoIP 数据库
从 MaxMind 下载:
* `GeoLite2-City.mmdb`
* `GeoLite2-ASN.mmdb`
将这两个文件放在项目根目录下。
### 环境
```
APP_PORT=:8080
DATABASE_URL=postgres://user:password@db:5432/scam_db
REDIS_URL=redis://redis:6379/0
RUN_FETCHERS=true
```
### 运行
```
docker compose up -d --build
```
API 将在以下地址可用:
```
http://localhost:8080
```
## API
### 检查 URL
```
GET /api/check?url=http://secure-login-apple.com&full=true
```
| 参数 | 类型 | 描述 |
| --------- | ------- | --------------------------- |
| url | string | 要分析的 URL |
| full | boolean | 启用基础设施扫描 |
### 响应示例
```
{
"target": "http://secure-login-apple.com",
"verdict": "Dangerous",
"risk_score": 100,
"reason": "Suspicious Activity Detected",
"signals": [
"Typosquatting",
"Brand Injection",
"No HTTPS"
],
"infrastructure": {
"status": "Online",
"ip": "1.2.3.4"
}
}
```
### 健康检查
```
GET /health
```
```
{
"status": "ok"
}
```
## 工程亮点
* 并发 URL 分析 pipeline
* 基于 Redis 的重复查询缓存
* 针对威胁源的 PostgreSQL 批量插入
* 智能评分系统
* 防误报逻辑
* 基础设施扫描
* Dockerized 本地环境
* 模块化的 Go 项目结构
## 路线图
* [x] 威胁源聚合
* [x] URL 风险评分
* [x] Redis 缓存
* [x] PostgreSQL 持久化
* [x] DNS / SSL / HTTP 扫描
* [x] Docker Compose 设置
* [ ] API 认证
* [ ] 管理后台面板
* [ ] Prometheus 指标
* [ ] 后台源更新调度器
* [ ] 公开 API 文档
* [ ] 速率限制
* [ ] CI/CD pipeline
## 经验总结
构建 Scam Checker API 帮助我提升了:
* Go 后端架构
* 威胁情报数据处理
* 并发网络扫描
* PostgreSQL 优化
* Redis 缓存
* 基于 Docker 的开发
* REST API 设计
* 专注于安全的后端开发
## 许可证
该项目基于 MIT 许可证授权。
## 作者
Bekzat Tursun
GitHub: https://github.com/cobrich
标签:EVTX分析, Go, GraphQL安全矩阵, PostgreSQL, Redis, Ruby工具, Syscall, Web开发, 威胁情报, 安全扫描器, 开发者工具, 搜索引擎查询, 日志审计, 测试用例, 请求拦截, 钓鱼检测