406 lines
14 KiB
Markdown
406 lines
14 KiB
Markdown
# 域名库系统设计方案
|
||
|
||
## 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核32G,2TB SSD | 数据库、任务调度、Web 界面 |
|
||
| **检测节点** | 8核16G,500GB SSD | 执行检测任务 |
|
||
| **存储服务器** | 4核8G,4TB 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. 结论
|
||
|
||
本设计方案基于需求文档,详细说明了系统的架构设计、功能模块和实施计划。系统采用模块化设计,支持增量建设和分布式部署,能够有效应对亿级数据量的挑战。通过多维度的检测和智能筛选,为用户提供高质量的域名资源。
|
||
|
||
该方案充分考虑了技术可行性和业务需求,为域名库系统的开发和部署提供了全面的指导。 |