Files
domainCheck/project_design.md
2026-04-14 22:53:52 +08:00

406 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 域名库系统设计方案
## 1. 项目结构设计
```
domainScanDemo/
├── app/ # 应用主目录
│ ├── __init__.py
│ ├── main.py # 主入口
│ ├── ui/ # 可视化界面
│ │ ├── __init__.py
│ │ ├── main_window.py # 主窗口
│ │ ├── domain_import.py # 域名导入界面
│ │ ├── domain_filter.py # 域名筛选界面
│ │ └── sensitive_words.py # 敏感词配置界面
│ ├── core/ # 核心功能
│ │ ├── __init__.py
│ │ ├── domain_collector.py # 域名收集器
│ │ ├── domain_processor.py # 域名处理器
│ │ ├── detect_engine.py # 检测引擎
│ │ ├── task_scheduler.py # 任务调度器
│ │ └── export_manager.py # 导出管理器
│ ├── detectors/ # 检测插件
│ │ ├── __init__.py
│ │ ├── base.py # 基础检测类
│ │ ├── rdap_detector.py # RDAP检测
│ │ ├── wayback_detector.py # 时光机检测
│ │ ├── baidu_detector.py # 百度检测
│ │ ├── qihu360_detector.py # 360检测
│ │ ├── google_detector.py # Google检测
│ │ ├── chinaz_detector.py # 站长之家检测
│ │ ├── aizhan_detector.py # 爱站网检测
│ │ ├── juziseo_detector.py # 桔子SEO检测
│ │ └── jucha_detector.py # 聚查检测
│ ├── utils/ # 工具类
│ │ ├── __init__.py
│ │ ├── domain_utils.py # 域名工具
│ │ ├── http_utils.py # HTTP工具
│ │ ├── database.py # 数据库操作
│ │ └── config.py # 配置管理
│ └── config/ # 配置文件
│ ├── __init__.py
│ ├── settings.py # 系统设置
│ └── sensitive_words.txt # 敏感词列表
├── scripts/ # 脚本工具
│ ├── __init__.py
│ ├── domain_import.py # 域名导入脚本
│ ├── detect_runner.py # 检测运行脚本
│ └── stats_report.py # 统计报告脚本
├── tests/ # 测试代码
│ ├── __init__.py
│ ├── test_domain_utils.py # 域名工具测试
│ ├── test_detectors.py # 检测器测试
│ └── test_database.py # 数据库测试
├── requirements.txt # 依赖包
├── README.md # 项目说明
└── .env # 环境变量
```
## 2. 核心功能模块设计
### 2.1 域名收集模块
**功能**:从多个来源收集域名数据
**实现**
- **聚名网爬虫**:抓取一口价和过期删除域名
- **搜索引擎采集**:通过关键词搜索收集域名
- **企业目录抓取**:从企业黄页等网站抓取域名
- **Zone File 解析**:解析域名区域文件
- **TXT 导入**:支持从文本文件导入域名
- **第三方 API**:集成域名数据 API
**技术要点**
- 使用 `Scrapy` 框架进行网站爬取
- 支持代理池,避免 IP 被封禁
- 多线程并行采集,提高效率
- 域名标准化处理(小写、去空格、去协议、只留主域)
### 2.2 域名处理模块
**功能**:处理收集到的域名,进行标准化和去重
**实现**
- 域名标准化:转换为小写,去除空格和协议
- 后缀过滤:只保留 `.com``.net`
- 去重处理:使用布隆过滤器和数据库唯一索引
- 来源标记:记录域名来源和批次信息
- 任务创建:为新域名创建检测任务
**技术要点**
- 使用 Redis 布隆过滤器快速去重
- 批量处理,减少数据库操作
- 事务处理,确保数据一致性
### 2.3 检测引擎模块
**功能**:执行域名检测任务,包括注册状态、风险评估等
**实现**
- **基础检测**
- 注册状态检测RDAP优先其次WHOIS
- 黑名单缓存检查
- 时光机快照年份采集
- 敏感词匹配(快照内容)
- **深度检测**
- 百度历史/Site
- 360 Site
- Google Site
- 站长之家/爱站
- 桔子SEO历史记录
- 聚查WHOIS/备案/拦截)
- 桔子SEO外链查询
**技术要点**
- 插件化设计,支持添加新的检测模块
- 优先级队列,按成本和重要性排序
- 失败重试机制,提高检测成功率
- 并发处理,提高检测速度
### 2.4 任务调度模块
**功能**:管理检测任务队列,分配任务到检测节点
**实现**
- 任务队列管理:使用 RabbitMQ 存储任务
- 任务分配:根据节点负载分配任务
- 状态跟踪:实时监控任务执行状态
- 断点续跑:支持系统重启后继续执行任务
- 失败重试:自动重试失败的任务
**技术要点**
- 使用 Celery 作为任务队列
- 分布式部署,支持多服务器
- 实时监控和告警
- 任务优先级管理
### 2.5 导出管理模块
**功能**:根据运营筛选条件导出域名
**实现**
- 多条件组合筛选
- 预览功能
- TXT 导出
- 批量更新使用状态
- 批量更新人工审核状态
**技术要点**
- 高效的数据库查询优化
- 支持大文件导出
- 导出进度实时显示
- 导出历史记录
### 2.6 可视化界面模块
**功能**:提供用户友好的操作界面
**实现**
- **主窗口**:系统概览和功能导航
- **域名导入**:支持多种方式导入域名
- **域名筛选**:多条件组合筛选
- **敏感词配置**:管理敏感词列表
- **系统设置**:配置系统参数
**技术要点**
- 使用 PySide6 构建界面
- 响应式设计,支持不同屏幕尺寸
- 多线程处理,避免界面卡顿
- 实时数据更新
## 3. 数据库设计
**数据库**PostgreSQL 15+
**核心表结构**
| 表名 | 功能 | 关键字段 |
|------|------|----------|
| `domains` | 域名主表 | domain, tld, use_status, detect_status, register_status, source_type |
| `domain_detections` | 检测结果 | domain_id, baidu_history, baidu_site, is_simplified, qihu360_site, google_site |
| `domain_sources` | 来源信息 | domain_id, source_type, source_url, batch_id |
| `detect_tasks` | 检测任务 | domain_id, task_type, status, priority, retry_count |
| `sensitive_words` | 敏感词 | word, category, level |
| `domain_blacklist` | 黑名单 | domain, reason, blacklist_time, source |
| `system_config` | 系统配置 | config_key, config_value, description |
| `detect_nodes` | 检测节点 | node_name, ip_address, status, last_heartbeat |
| `task_stats` | 任务统计 | date, total_tasks, success_tasks, failed_tasks |
| `domain_stats` | 域名统计 | date, total_domains, available_domains, registered_domains |
**索引策略**
- 域名字段建立唯一索引
- 状态字段建立普通索引
- 时间字段建立 BRIN 索引
- 复合索引优化多条件查询
**分区策略**
- `domains` 表按 TLD 分片
- `domain_detections` 表按时间分区
- `domain_sources` 表按时间分区
- `detect_logs` 表按时间分区
## 4. 技术栈选择
| 分类 | 技术 | 版本 | 选型理由 |
|------|------|------|----------|
| **编程语言** | Python | 3.10+ | 丰富的库支持,适合数据处理和爬虫开发 |
| **Web 框架** | Scrapy | 2.10+ | 强大的爬虫框架,支持分布式爬取 |
| **数据库** | PostgreSQL | 15+ | 支持分区表、JSONB、布隆过滤器适合亿级数据 |
| **缓存** | Redis | 7+ | 高性能缓存,支持布隆过滤器和消息队列 |
| **消息队列** | RabbitMQ | 3.10+ | 可靠的任务队列,支持优先级 |
| **任务调度** | Celery | 5+ | 分布式任务处理框架 |
| **界面库** | PySide6 | 6.5+ | 跨平台 GUI 框架,功能丰富 |
| **HTTP 客户端** | Requests | 2.31+ | 简单易用的 HTTP 库 |
| **异步处理** | asyncio | 内置 | 高效的异步 I/O 处理 |
| **监控** | Prometheus + Grafana | 2.40+ | 强大的监控和可视化 |
## 5. 系统流程
### 5.1 域名入库流程
1. **数据采集**:从多个来源收集域名
2. **标准化处理**:转换为小写,去除空格和协议
3. **后缀过滤**:只保留 `.com``.net`
4. **去重处理**:使用布隆过滤器和数据库唯一索引
5. **来源标记**:记录域名来源和批次信息
6. **任务创建**:为新域名创建检测任务
### 5.2 检测流程
1. **基础检测**
- 注册状态检测RDAP优先
- 黑名单缓存检查
- 时光机快照年份采集
- 敏感词匹配(快照内容)
- 命中则直接拉黑并停止后续检测
2. **深度检测**
- 百度历史/Site
- 360 Site
- Google Site
- 站长之家/爱站
- 桔子SEO历史记录
- 聚查WHOIS/备案/拦截)
- 桔子SEO外链查询
### 5.3 运营筛选流程
1. **多条件组合筛选**:根据注册状态、使用状态、检测状态等条件
2. **预览**:查看筛选结果
3. **导出**:导出为 TXT 文件
4. **批量更新**:更新使用状态和人工审核状态
## 6. 关键技术挑战及解决方案
### 6.1 数据量挑战
**挑战**:亿级域名数据的存储和查询
**解决方案**
- 使用 PostgreSQL 分区表
- 优化索引策略
- 数据分片存储
- 缓存热点数据
### 6.2 检测效率挑战
**挑战**:大量域名的检测任务处理
**解决方案**
- 分布式检测架构
- 任务优先级队列
- 并发处理
- 失败重试机制
### 6.3 反爬机制挑战
**挑战**:网站反爬措施
**解决方案**
- 使用代理池
- 请求头随机化
- 访问频率控制
- 模拟浏览器行为
### 6.4 数据一致性挑战
**挑战**:分布式环境下的数据一致性
**解决方案**
- 事务处理
- 消息队列确保任务可靠传递
- 定期数据同步
- 冲突检测和解决
## 7. 部署方案
### 7.1 服务器配置
| 服务器类型 | 配置 | 用途 |
|------------|------|------|
| **主服务器** | 16核32G2TB SSD | 数据库、任务调度、Web 界面 |
| **检测节点** | 8核16G500GB SSD | 执行检测任务 |
| **存储服务器** | 4核8G4TB HDD | 数据备份、归档 |
### 7.2 部署步骤
1. **环境搭建**
- 安装 PostgreSQL、Redis、RabbitMQ
- 配置 Python 环境
- 安装依赖包
2. **数据库初始化**
- 执行 SQL 脚本创建表结构
- 配置分区和索引
- 导入初始数据
3. **服务启动**
- 启动数据库服务
- 启动消息队列服务
- 启动任务调度服务
- 启动检测节点
4. **系统配置**
- 配置敏感词列表
- 配置检测参数
- 配置监控告警
### 7.3 监控与维护
1. **监控系统**
- 数据库性能监控
- 任务执行状态监控
- 系统负载监控
- 网络状态监控
2. **维护计划**
- 每日:数据备份、任务统计
- 每周:索引重建、系统更新
- 每月:数据归档、性能优化
- 每季度:全量备份、系统评估
## 8. 预期性能指标
| 指标 | 预期值 |
|------|--------|
| 数据导入速度 | > 100万条/分钟 |
| 域名去重速度 | > 1000万条/秒 |
| 检测任务处理 | > 10000个/分钟 |
| 单表查询响应 | < 1秒 |
| 系统可用性 | > 99.9% |
| 检测准确率 | > 99% |
## 9. 核心竞争力
1. **全维度检测**:覆盖注册状态、历史快照、平台风险等多维度
2. **智能筛选**:基于规则的自动化筛选,减少人工干预
3. **增量建设**:不追求一次性完成,通过持续积累构建完整数据库
4. **插件化架构**:检测模块可替换、可扩展
5. **数据价值**:为域名投资和企业品牌保护提供数据支持
6. **高性能**:分布式架构,支持亿级数据处理
7. **可靠性**:完善的错误处理和重试机制
8. **用户友好**:直观的可视化界面,操作简单
## 10. 项目实施计划
### 第一阶段基础架构搭建1个月
- 数据库设计和搭建
- 核心模块框架搭建
- 数据采集模块实现
- 基础检测功能实现
### 第二阶段功能完善2个月
- 深度检测功能实现
- 运营管理界面开发
- 任务调度系统实现
- 多服务器部署方案
### 第三阶段优化与测试1个月
- 性能优化
- 稳定性测试
- 功能测试
- 部署上线
### 第四阶段:持续迭代
- 根据运营反馈优化系统
- 增加新的检测模块
- 扩展数据源
- 提升系统性能
## 11. 风险评估
| 风险 | 影响 | 应对措施 |
|------|------|----------|
| **数据量过大** | 存储和查询性能下降 | 分区表、索引优化、数据分片 |
| **API 限制** | 检测速度受限 | 多API源、请求频率控制、缓存 |
| **反爬机制** | 爬虫被封禁 | 代理池、请求头随机化、模拟浏览器 |
| **系统稳定性** | 服务中断 | 监控告警、自动恢复、冗余部署 |
| **成本控制** | 服务器和API成本高 | 优化检测流程、合理使用资源、预算规划 |
## 12. 结论
本设计方案基于需求文档,详细说明了系统的架构设计、功能模块和实施计划。系统采用模块化设计,支持增量建设和分布式部署,能够有效应对亿级数据量的挑战。通过多维度的检测和智能筛选,为用户提供高质量的域名资源。
该方案充分考虑了技术可行性和业务需求,为域名库系统的开发和部署提供了全面的指导。