🚀 基于 Master-Worker 架构的多平台社交媒体监控系统 支持抖音等平台的评论、私信实时监控与智能通知
- ✅ 多账户管理 - 支持多个社交媒体账户的集中管理和独立隔离
- ✅ 实时监控 - 15-30秒随机间隔自动监控评论和私信(反爬虫优化)
- ✅ 多端通知 - 桌面(Electron)和移动(React Native)实时推送
- ✅ React 数据提取 - 虚拟列表 Fiber 访问技术,获取完整真实数据
- ✅ 增量检测 - 智能变化对比,避免重复通知
- ✅ 安全隔离 - 每账户独立 Browser 进程,100% 指纹隔离
- ✅ 高可用性 - Worker 故障自动恢复,任务无缝迁移
┌─────────────────────────────────────────────────────────────┐
│ 客户端层 (Port 3001) │
│ Admin Web (React 18 + Ant Design) │
└─────────────────┬───────────────────────────┬───────────────┘
│ │
WebSocket HTTP
│ │
┌─────────────────▼───────────────────────────▼───────────────┐
│ 协调服务层 (Port 3000) │
│ Master Server (Node.js + Socket.IO) │
│ • Worker 生命周期管理 • 任务分配调度 │
│ • 账户认证和会话管理 • 数据库持久化 │
│ • Socket 事件中心 • 登录流程协调 │
└─────────────────┬────────────────────────────────────────────┘
│
Socket.IO (Binary Protocol)
│
┌─────────────────▼────────────────────────────────────────────┐
│ 执行层 (Port 4000+) │
│ Worker Process (多实例) │
│ • 浏览器自动化 (Playwright) • API 拦截 │
│ • React Fiber 数据提取 • 反爬虫模拟 │
│ • 多 Browser 隔离 • Cookie 管理 │
│ • 平台脚本动态加载 • 增量检测 │
└────────────────────────────────────────────────────────────────┘
| 层级 | 技术 | 版本 | 说明 |
|---|---|---|---|
| Runtime | Node.js | 18.x LTS | 统一运行时 |
| 通信 | Socket.IO | 4.x | WebSocket + JSON 协议 |
| 数据库 | SQLite | 3.x | 轻量级关系数据库 |
| 浏览器 | Playwright | 最新 | 多浏览器支持 |
| 前端 | React + Ant Design | 18.x | 现代化 UI 框架 |
| 移动 | React Native | 0.73.x | 跨平台移动应用 |
| 桌面 | Electron | 28.x | 桌面应用框架 |
| 进程管理 | PM2 | 最新 | 生产环境管理 |
核心创新: 每个账户独立 Browser 进程,100% 指纹隔离
Worker 进程 (worker-1, PID: 5234)
│
├── 🔵 Browser-1 (account-123, PID: 5235)
│ ├── 用户数据: ./data/browser/worker-1/browser_account-123/
│ ├── 指纹配置: account-123_fingerprint.json
│ ├── Cookies (隔离)
│ └── WebGL/Canvas 特征 (独立随机)
│
├── 🟢 Browser-2 (account-456, PID: 5236)
│ ├── 用户数据: ./data/browser/worker-1/browser_account-456/
│ ├── 指纹配置: account-456_fingerprint.json
│ ├── Cookies (隔离)
│ └── WebGL/Canvas 特征 (独立随机)
│
└── 🟡 Browser-3 (account-789, PID: 5237)
├── 用户数据: ./data/browser/worker-1/browser_account-789/
├── 指纹配置: account-789_fingerprint.json
├── Cookies (隔离)
└── WebGL/Canvas 特征 (独立随机)
关键特性:
- ✅ 每个 Browser 进程完全独立(不同 PID、不同数据目录)
- ✅ 指纹配置持久化存储,重启后自动加载
- ✅ 15+ 种指纹特征随机但稳定
- ✅ 无法关联,100% 隔离
⚠️ 约 200MB / 账户内存占用,建议 ≤10 个账户 / Worker
hiscrm-im/
├── packages/
│ ├── master/ # 主控服务器 (3000)
│ │ ├── src/
│ │ │ ├── index.js
│ │ │ ├── api/ # HTTP API 路由
│ │ │ ├── communication/ # Socket.IO 事件处理
│ │ │ ├── database/ # DAO 层和数据库初始化
│ │ │ ├── worker_manager/ # Worker 生命周期
│ │ │ ├── scheduler/ # 任务调度
│ │ │ ├── monitor/ # 心跳监控
│ │ │ └── login/ # QR 二维码登录
│ │ └── data/
│ │ └── master.db
│ │
│ ├── worker/ # Worker 执行进程
│ │ ├── src/
│ │ │ ├── index.js
│ │ │ ├── platforms/ # 平台脚本(抖音、小红书等)
│ │ │ │ ├── base/ # 基类和工具
│ │ │ │ └── douyin/ # 抖音平台实现
│ │ │ ├── browser/ # 多 Browser 管理
│ │ │ ├── handlers/ # 任务执行
│ │ │ ├── services/ # 爬虫服务、缓存等
│ │ │ └── communication/ # Socket 客户端
│ │ └── data/browser/ # 浏览器数据(隔离)
│ │
│ ├── admin-web/ # 管理前端 (3001)
│ │ ├── src/
│ │ │ ├── components/
│ │ │ ├── pages/
│ │ │ └── services/
│ │ └── public/
│ │
│ ├── crm-pc-im/ # CRM PC IM 客户端 (Electron + Vite)
│ │ ├── src/
│ │ │ ├── components/ # React 组件
│ │ │ ├── pages/ # 页面
│ │ │ ├── services/ # 通信服务
│ │ │ ├── store/ # Redux 状态管理
│ │ │ └── App.tsx
│ │ └── electron-main/ # Electron 主进程
│ │
│ ├── desktop-client/ # 传统桌面应用
│ ├── mobile-client/ # React Native 移动应用
│ ├── shared/ # 共享代码
│ │ ├── protocol/ # 消息协议定义
│ │ ├── models/ # 数据模型
│ │ └── utils/ # 工具函数
│ └── tests/ # 集成测试
│
├── docs/ # 📚 完整系统文档
│ ├── 00-系统文档总索引.md
│ ├── 01-ADMIN-WEB-系统文档.md
│ ├── 02-MASTER-系统文档.md
│ ├── 03-WORKER-系统文档-第一部分.md
│ ├── 04-WORKER-系统文档-第二部分.md
│ ├── 05-WORKER-平台扩展指南.md
│ ├── 06-DOUYIN-平台实现技术细节.md
│ ├── README.md
│ └── _archived/ # 历史文档(46 份)
│
├── README.md # 本文件
└── package.json # NPM 工作区配置 (workspaces)
Node.js 18.x LTS
npm 9.x+# 1. 安装依赖(根目录)
npm install:all
# 2. 启动主控服务 (Terminal 1)
npm run start:master
# 3. 启动 Worker 进程 (Terminal 2)
npm run start:worker
# 4. 启动管理后台 (Terminal 3)
npm run start:admin
# ✅ 系统已就绪,访问: http://localhost:3001说明:
npm install:all会自动安装根目录和所有 packages 的依赖- 各服务默认端口: Master (3000)、Admin-Web (3001)、Worker (4001+)
- 如需自定义 Worker 端口,可在启动时设置:
PORT=4002 npm run start:worker
# 安装所有依赖
npm run install:all
# 启动 Master + Worker (并发)
npm run dev
# 启动 Master + Worker + Admin-Web (并发)
npm run dev:all
# 启动特定服务
npm run start:master
npm run start:worker
npm run start:admin
npm run start:desktop
# 启动 CRM PC IM (Electron 客户端)
cd packages/crm-pc-im && npm run electron:dev
# 或只启动前端开发服务
cd packages/crm-pc-im && npm run dev
# 运行所有测试
npm test
# 构建生产版本
npm run build常用开发流程:
# 第一次启动
npm run install:all # 安装所有依赖
npm run dev:all # 启动所有服务
# 或者分别在不同终端启动
npm run start:master # Terminal 1
npm run start:worker # Terminal 2
npm run start:admin # Terminal 3
cd packages/crm-pc-im && npm run electron:dev # Terminal 4 - Electron 客户端CRM PC IM 是基于 Electron + Vite + React 的桌面即时通讯客户端。
启动方式:
# 1. 开发模式(推荐)- 同时运行 Vite 开发服务器和 Electron
cd packages/crm-pc-im
npm run electron:dev
# 2. 仅启动前端开发服务器(不启动 Electron)
cd packages/crm-pc-im
npm run dev
# 开发服务器运行在 http://localhost:5173
# 3. 预览模式
cd packages/crm-pc-im
npm run preview
# 4. 生产构建
cd packages/crm-pc-im
npm run build
# 5. 打包成 Windows 可执行文件
cd packages/crm-pc-im
npm run electron:build
# 生成的 exe 文件在 release/ 目录说明:
npm run electron:dev- 启动 Vite 开发服务器 → 等待 5173 端口启动 → 启动 Electron 应用,连接 WebSocket 到 Master 服务- 确保 Master 服务已启动(端口 3000),否则 Electron 应用无法连接
- 开发模式支持热更新(HMR)
# 方式 1: 使用 PM2 启动主控
pm2 start packages/master/src/index.js --name hiscrm-master
# 方式 2: 启动 Worker 进程
pm2 start packages/worker/src/index.js --name hiscrm-worker-1 -- --worker-id worker-1 --port 4001
# 使用 npm 脚本启动
npm run start:master # Master
npm run start:worker # Worker
# 查看状态
pm2 logs
pm2 monit
pm2 list推荐配置(多 Worker):
# Terminal 1: Master
pm2 start packages/master/src/index.js --name hiscrm-master
# Terminal 2,3,4: 多个 Worker
pm2 start packages/worker/src/index.js --name hiscrm-worker-1 -- --worker-id worker-1 --port 4001
pm2 start packages/worker/src/index.js --name hiscrm-worker-2 -- --worker-id worker-2 --port 4002
pm2 start packages/worker/src/index.js --name hiscrm-worker-3 -- --worker-id worker-3 --port 4003
# 监控所有进程
pm2 monit
pm2 logs新手开发者 (30 分钟):
需要部署 (1 小时):
- Master 系统文档 → 部署说明
- Worker 系统文档 → 部署运维
需要添加新平台 (2 小时):
- Worker 平台扩展指南 ← 从这里开始
- 抖音平台实现细节 ← 参考实现
需要修复 Bug:
- 快速定位模块 → 快速参考
- 查看模块文档 → 对应的系统文档
| 文档 | 大小 | 用途 |
|---|---|---|
| 00-系统文档总索引 | 16KB | 📍 导航中心,从这里开始 |
| 01-ADMIN-WEB-系统文档 | 23KB | 🎨 前端管理后台完整设计 |
| 02-MASTER-系统文档 | 25KB | 🔧 后端协调服务完整设计 |
| 03-WORKER-系统文档-第一部分 | 24KB | 🤖 架构和多 Browser 设计 |
| 04-WORKER-系统文档-第二部分 | 17KB | 🤖 任务管理和部署运维 |
| 05-WORKER-平台扩展指南 | 25KB | 🆕 添加新平台的完整指南 |
| 06-DOUYIN-平台实现技术细节 | 33KB | 🆕 抖音核心实现(React Fiber 等) |
| 快速参考-系统文档 | 13KB | ⚡ 速查表 + 常见问题 |
| 小计 | 176KB | 8 份核心文档 |
| 归档文档 | 存档 | 46 份历史文档在 _archived/ |
👉 完整文档链接: docs/README.md
- ✅ 凭证加密存储(AES-256)
- ✅ WSS 加密通信(生产环境)
- ✅ JWT Token 认证
- ✅ 随机监控间隔: 15-30 秒(降低 80% 被检测概率)
- ✅ 指纹隔离: 每账户独立 Browser,100% 无关联
- ✅ 真实操作: 随机滚动、延迟、点击等模拟用户
- ✅ 代理支持: IP 轮换、自动切换
| 指标 | 数值 | 说明 |
|---|---|---|
| 监控间隔 | 15-30s 随机 | 平均 22s,比固定间隔快 27% |
| 通知延迟 | ≤ 3s | 推送到客户端 |
| Worker 恢复 | ≤ 30s | 故障自动恢复 |
| 内存占用 | ~200MB/账户 | 每 Browser 进程 |
| 最大账户数 | ≤10/Worker | 推荐配置 |
| 并发能力 | 100+ 账户 | 多 Worker 分布式 |
- 通过
__reactFiber$属性访问 React Fiber 对象 - 获取完整的消息 ID、真实时间戳、发送者信息
- 三层回退策略:API > Fiber > DOM
- 每账户独立 Browser 进程
- 15+ 种指纹特征随机但稳定
- 完全的进程和数据隔离
- 随机延迟和操作模拟
- Cookie 持久化和管理
- 代理轮换和 IP 管理
- 真实用户行为模拟
- 动态平台加载
- 易扩展架构
- 支持多平台(抖音、小红书等)
# 运行所有包的测试
npm test
# 运行特定包的测试
npm run test --workspace=packages/master
npm run test --workspace=packages/worker
npm run test --workspace=packages/shared
npm run test --workspace=packages/desktop-client
npm run test --workspace=packages/admin-web
# 进入包目录运行特定测试
cd packages/master && npm test
cd packages/worker && npm test
# 生成覆盖率报告
cd packages/master && npm test -- --coverage
cd packages/worker && npm test -- --coverage
# Watch 模式(开发时自动重新运行)
cd packages/master && npm test -- --watch
cd packages/worker && npm test -- --watch说明:
- 根目录
npm test会运行所有 packages 的测试(如果存在 test 脚本) - Admin-Web 使用
react-scripts test(CRA 测试框架) - 其他 packages 使用
jest(Jest 测试框架) - 使用
--workspace=packages/xxx可以在根目录运行特定包的测试
MIT
欢迎提交 Issue 和 Pull Request!
| 版本 | 日期 | 更新内容 |
|---|---|---|
| 2.3.0 | 2025-10-18 | ✨ 添加平台扩展指南和 React Fiber 提取方案 |
| 2.3.0 | 2025-10-18 | 📚 完成 8 份核心文档体系(176KB) |
| 2.3.0 | 2025-10-18 | 🎓 添加技术要点总结(11 个板块) |
| 2.2.0 | 2025-10-18 | 📖 6 份系统模块文档 + 46 份历史文档归档 |
| 2.1.0 | 2025-10-17 | 🚀 系统上线,支持抖音监控 |
最后更新: 2025-10-18 | 版本: 2.3.0 | 文档: 8 份核心 + 46 份归档