Files
getDomain/domainCheck/project_design.md
2026-04-16 13:33:06 +08:00

14 KiB
Raw Blame History

域名库系统设计方案

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. 结论

本设计方案基于需求文档,详细说明了系统的架构设计、功能模块和实施计划。系统采用模块化设计,支持增量建设和分布式部署,能够有效应对亿级数据量的挑战。通过多维度的检测和智能筛选,为用户提供高质量的域名资源。

该方案充分考虑了技术可行性和业务需求,为域名库系统的开发和部署提供了全面的指导。