这是indexloc提供的服务,不要输入任何密码
Skip to content

基于 Master-Worker 架构的多平台社交媒体监控系统 支持抖音等平台的评论、私信实时监控与智能通知

Notifications You must be signed in to change notification settings

hqwander9527/HISCRM-IM-Portal

 
 

Repository files navigation

HisCrm-IM - 社交媒体账户监控与通知系统

🚀 基于 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 最新 生产环境管理

🤖 Worker 多 Browser 隔离架构

核心创新: 每个账户独立 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 客户端)

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. 本文件 README (系统全景)
  2. 系统文档总索引 (模块导航)
  3. 快速参考 (速查表)

需要部署 (1 小时):

需要添加新平台 (2 小时):

需要修复 Bug:

  1. 快速定位模块 → 快速参考
  2. 查看模块文档 → 对应的系统文档

📖 核心文档清单

文档 大小 用途
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 分布式

🎓 技术亮点

1. React 虚拟列表 Fiber 访问

  • 通过 __reactFiber$ 属性访问 React Fiber 对象
  • 获取完整的消息 ID、真实时间戳、发送者信息
  • 三层回退策略:API > Fiber > DOM

2. 多 Browser 隔离架构

  • 每账户独立 Browser 进程
  • 15+ 种指纹特征随机但稳定
  • 完全的进程和数据隔离

3. 反爬虫对抗

  • 随机延迟和操作模拟
  • Cookie 持久化和管理
  • 代理轮换和 IP 管理
  • 真实用户行为模拟

4. 平台插件系统

  • 动态平台加载
  • 易扩展架构
  • 支持多平台(抖音、小红书等)

🧪 测试

# 运行所有包的测试
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 份归档

About

基于 Master-Worker 架构的多平台社交媒体监控系统 支持抖音等平台的评论、私信实时监控与智能通知

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 91.9%
  • HTML 4.3%
  • TypeScript 3.0%
  • Other 0.8%