1. Architecture
Traffic Tool
  • Traffic Tool Docs
    • Tổng Quan
    • project
      • admin
        • Hướng dẫn sử dung
          • Đăng Nhập & Xác Thực Hai Bước
          • Thống Kê Hệ Thống
          • Thống Kê Hàng Ngày
          • Tìm Kiếm Tự Động
          • Trung Tâm Báo Cáo
          • Quản Lý Tài Khoản
          • Quản Lý Server
          • Quản Lý Proxy
          • Quản Lý Gói Proxy
          • Quản Lý Nhà Cung Cấp Proxy
          • Quản Lý Backup Proxy
          • Quản Lý Tài Khoản Google
      • api + tool
        • Hướng dẫn sử dụng
          • User Guide
          • Setup Guide
        • Bussiness | Logic
          • 1. Thống kê hàng ngày (Daily Statistics)
          • 2. Thống kê hệ thống (System Statistics)
          • 3. Tìm kiếm tự động (Automated Discovery)
          • 4. Trung tâm Báo cáo (Report Center)
          • 5. Quản lý tài khoản (Account Management)
          • 6. Quản lý Hệ thống (System Management)
          • 7. Quản lý tài khoản Google (Google Account Management)
        • Architecture
          • Database Schema
          • System Architecture
          • Code Structure
          • Logs and Monitoring
          • Environment & Configuration
        • Deployment
          • Local
          • Staging
          • Product
  • Traffic Backend API
    • 🔑 Identity & Session
      • Đăng nhập hệ thống (Login)
      • Đăng ký tài khoản mới (Public)
      • Lấy danh sách người dùng (Phân trang)
      • Admin tạo người dùng mới
      • Lấy thông tin cá nhân hiện tại
      • Khởi tạo bảo mật 2FA
      • Xác thực mã OTP
      • Chi tiết người dùng theo ID
      • Cập nhật thông tin người dùng
      • Xóa tài khoản người dùng
      • Đổi mật khẩu
      • Kiểm tra Cấu hình Thông báo Telegram Toàn hệ thống
      • Bật/Tắt Thông báo Telegram Toàn cục
    • 📁 Campaign Management
      • Danh sách Chiến dịch Toàn cầu
      • Khởi tạo Chiến dịch Mới
      • Chi tiết Chiến dịch
      • Cập nhật Chiến dịch
      • Xóa Chiến dịch
      • Tắt/Mở Chiến dịch (Hàng loạt)
      • Dữ liệu Hình mẫu SEO (Negative SEO)
    • ⚙️ Project Mechanics
      • Danh sách Dự án (Projects List)
      • Khởi tạo Kịch bản Mô phỏng
      • Lấy chi tiết cấu hình Dự án
      • Cập nhật Kịch bản chạy
      • Xóa Dự án
      • Chỉnh sửa Hàng loạt (Bulk)
      • Bật/Tắt Dự án
    • 👤 Profile Management
      • Danh sách Vân tay số (Profiles Data)
      • Tạo Hồ sơ Đơn lẻ (Tạo Vân tay mới)
      • Nhập kho Tài khoản Email (Bulk Import)
      • Chi tiết Session/Cookies
      • Chỉnh sửa Hồ sơ/Ghi chú
      • Xóa Vân tay số và Dữ liệu Local
      • Mở khóa Captcha/Trạng thái Blocked
      • Tra cứu Kho Profile Khả dụng
      • Báo cáo Sức khỏe Kho Tài Khoản
    • 🦾 Worker Interface
      • Đăng ký Khởi tạo Node (Handshake)
      • Nhịp Tim Khảo Sát Tình Trạng (Heartbeat)
      • Nhận Cấu hình Bypass & Hệ thống
      • Kéo (PULL) Nhiệm vụ Traffic SEO
      • Báo cáo Sự cố Node (Crash Report)
    • 📊 Report: Execution
      • Kéo Công việc Báo cáo (Worker Pull)
      • Quản lý Giám sát Nhiệm vụ (Task Dashboard)
      • Bắn Lại Báo Cáo Thất Bại (Manual Retry)
    • 📊 Report: Discovery
      • Danh sách Tên miền Chờ Xử Lý (Discovery Pool)
      • Nhập Mục Tiêu Thủ Công (Manual Insert)
      • Kích hoạt Heuristic Scanner (Cào tự động)
      • Chi tiết Bằng Chứng (Evidence Data)
      • Dán nhãn Vi Phạm / Cập nhật Screenshot
      • Loại Bỏ Mục Tiêu
      • Duyệt Yêu Cầu (Approve to Execution)
    • 📊 Report: Platforms Configuration
      • Truy vấn Danh sách Nền tảng Đối tác (Vendor)
      • Tạo Nền tảng Vendor Báo cáo Mới
      • Bật/Tắt Trang báo cáo theo Loại
      • Cập nhật Metadata Trang
      • Xóa Trang Báo Cáo
      • Lấy Cài đặt LLM cho Vendor cụ thể
      • Cập nhật Cài đặt Tạo mẫu LLM
      • Lấy Cấu hình Schema Biểu mẫu cho Vendor
      • Cập nhật Yêu cầu Trường Biểu mẫu
    • 📊 Report: Email Automation
      • Danh sách SMTP/Mailer Server
      • Thêm kết nối SMTP Mới
      • Nhật ký Nhiệm vụ Gửi Mail (Email Log)
      • Phân tích Tỉ lệ Chuyển đổi (Email Delivery Analytics)
    • 🌐 Global Proxies
      • Danh sách Kho Proxy Phân trang (Proxy Pool)
      • Thêm mới Tuyến IP (Bulk Import)
      • Cập nhật Thông tin máy chủ Proxy
      • Xóa Proxy (Thu hồi tài nguyên)
      • Kích hoạt Xoay vòng (Rotate IP) Cưỡng bức
    • 📈 System Intelligence
      • Báo cáo Luồng Bảo mật Hợp nhất (Colossal Report)
      • Bản Đồ Lưu Lượng GeoIP (Heatmap)
    • 🪝 Webhook Integrations
      • Callback Hoàn tất Gói Lưu lượng SEO (Traffic Node)
      • Callback Thông báo Hoàn tất Bắn Report AI
    • Schemas
      • AppError
      • LoginRequest
      • UserResponseDto
      • UserModel
      • CreateUserRequest
      • UpdateUserRequest
      • PagingInfo
      • ProfileModel
      • CreateProfileRequest
      • BulkImportProfileReq
      • UpdateProfileRequest
      • CampaignModel
      • CampaignConfigs
      • CreateCampaignRequest
      • UpdateCampaignRequest
      • BulkUpdateCampaignStatusReq
      • NegativeSeoData
      • CreateProjectRequest
      • UpdateProjectRequest
      • ProjectModel
      • BulkUpdateProjectRequest
      • ProjectAttribute
      • WorkerHandshakeRequest
      • WorkerHandshakeResponse
      • WorkerHeartbeatPayload
      • WorkerGlobalSettings
      • TaskPullRequest
      • WorkerFatalLog
      • TaskModel
      • TaskTrafficType
      • TaskUpdateDto
      • ReportTaskModel
      • ReportTaskResult
      • PCReportResponse
      • SummaryStats
      • DailyStats
      • BrandStats
      • ProfileStats
      • ReportTaskItem
      • ReportSiteItem
      • CreateReportSiteRequest
      • GPTConfig
      • ResponseConfig
      • FieldConfig
      • ReportDomainsResponse
      • ReportDomainItem
      • AddReportDomainRequest
      • UpdateReportDomainRequest
      • BulkUpdateDashboardRequest
      • ProxyModel
      • CreateProxyRequest
      • UpdateProxyRequest
      • SMTPServerConfig
      • EmailTaskLog
      • GeoLocation
  • Traffic Tools V2 API
    • Tasks
      • Lọc và Truy vấn Nhật ký Phiên Duyệt lẻ
      • Get all tasks
      • Nạp Kết Quả Chạy của Puppeteer (Update Callback)
      • Xóa toàn bộ Tasks lẻ
      • Get all tasks
      • Xóa một Task (ID)
    • Group task
      • Đẩy nhóm công việc Traffic theo lô (Batch Pipeline Task Creation)
      • Lấy sơ đồ trạng thái hàng đợi Group Tasks
      • Endpoint /api/task-traffics/
      • Clear/Flush Hàng đợi Group Task (Kill Queue)
      • Endpoint /api/task-traffics/
      • Xóa 1 nhóm nhiệm vụ (Theo ObjectID Mongoose)
      • Parse chuỗi Proxy
    • Test
      • Kiểm tra Proxy hoạt động ngầm
      • Endpoint /api/test
      • Kho Fingerprint Thử Nghiệm
      • Endpoint /api/test/account-stats
      • Endpoint /api/test/session-recommendation
      • Endpoint /api/test/check-browser
      • Endpoint /api/test/clear-browser-sessions
    • Proxies
      • Lấy kho Proxy server
      • Khai báo Pool Tuyến Proxy mới
      • Get all proxies
      • Get all proxies
      • Xóa toàn bộ Proxy
      • Get all proxies
      • Xóa Proxy theo ID
      • Reset lại số đếm tiến trình (Cron Proxy Thread)
    • Report Platforms
      • Submit report to multiple platforms
      • Submit report to specific platform
      • Get available platforms
      • Get platform statistics
      • Health check
    • Reports
      • Create a new report
      • Create a new report
      • Get report by ID
      • Get report by ID
      • Get report statistics
      • Get report groups
      • Get report groups
      • Get report group
      • Add report to group
      • Bulk add reports to group
      • Get report group statistics
      • Get analytics data
      • Get platform success rates
      • Get reports by platform
      • Get reports by group
      • Create test reports in bulk
    • Test Report
      • Test Microsoft report submission
      • Test AdGuard report submission
      • Test Google Ads report submission
      • Test Spamhaus report submission
      • Test ESET report submission
      • Test multi-platform report submission
      • Get available platforms
    • ESET Test
      • Simple test
      • Minimal POST test
      • Generate ESET report content
      • Get sample test data
      • Test form filling
      • Test full form submission
    • Spamhaus Test
      • Simple test
      • Minimal POST test
      • Generate Spamhaus report content
      • Get sample test data
      • Test Spamhaus form filling
      • Test full Spamhaus form submission
    • Report Scheduler
      • Get report scheduler statistics
      • Process ad detection result
      • Submit a scheduled report
      • Start report scheduler
      • Stop report scheduler
      • Get scheduler status
      • Process scheduled reports
      • Test browser session (non-headless)
      • Test report submission (non-headless)
    • Comprehensive Analytics
      • Get comprehensive dashboard analytics
      • Get overview statistics
      • Get brand-wise statistics
      • Get daily statistics
      • Get platform success rates
      • Get account performance
      • Get summary report
    • Search
      • Ra lệnh Máy Lọc Dữ Liệu TOP SEO Hàng Loại (Scraper Engine)
      • Đếm tổng số dòng tìm kiếm (Length)
    • Report Tasks
      • Tạo chiến dịch Report (Auto Spawn 14 tasks)
      • Tạo chiến dịch Report Form hàng loạt (Bulk Abuse Report)
      • Create Direct Report (Từ API hệ thống thay vì Frontend)
      • Tạo Nhiệm Vụ Sinh Email Khiếu nại (Automated Bulk Mail Spam)
      • Worker Pull - Lấy task Báo cáo đang Pending
      • Worker Trả kết quả (Report Status)
      • Danh mục Platfoms & Providers
      • Dashboard Statistic Báo Cáo
      • Force Run Cronjob
    • Monitor
      • Xuất dữ liệu đo đếm Hardware (Telemetry OS Watchdog)
    • Schemas
      • CreateTask
      • UpdateTask
      • CreateTaskGroupRequest
      • CreateProxy
      • CreateSearch
      • ReportTaskCreation
      • CreateEmail
      • CreateMultipleSearchRequest
      • CreateMultipleReportRequest
      • UpdateReportStatusRequest
      • TestProxyRequest
  1. Architecture

System Architecture

System Architecture — Traffic Tools Ecosystem#


Mục lục#

1.
Tổng quan Kiến trúc
2.
Các thành phần
3.
Sơ đồ kiến trúc tổng thể
4.
Luồng Traffic (Traffic Flow)
5.
Luồng Search / SERP
6.
Luồng Report Task
7.
Hệ thống Proxy
8.
Hệ thống Cron Jobs
9.
Giao tiếp giữa các dịch vụ (Service Communication)
10.
Bảo mật
11.
Lưu trữ & File Storage
12.
Network Topology

1. Tổng quan Kiến trúc#

Traffic Tools là hệ thống traffic automation được xây dựng theo mô hình Microservice, bao gồm 3 thành phần chính giao tiếp với nhau qua HTTP Webhook:
┌─────────────────────────────────────────────────────────────────────┐
│                    TRAFFIC TOOLS ECOSYSTEM v2.5                      │
│                                                                       │
│  ┌──────────────┐   REST API   ┌────────────────┐   Webhooks         │
│  │   Admin UI   │ ──────────── │   API (Go)     │ ←────────────────  │
│  │   (Vue 3)    │              │   Port: 33001  │                    │
│  │   Port: 5173 │              └───────┬────────┘                    │
│  └──────────────┘                      │ Webhook                     │
│                                        │ (HTTP POST)                 │
│                                        ▼                             │
│                             ┌──────────────────┐                     │
│                             │   Tools V2       │                     │
│                             │ (Bun/ElysiaJS)   │                     │
│                             │   Port: 3005     │                     │
│                             │   Puppeteer      │                     │
│                             └──────────────────┘                     │
└─────────────────────────────────────────────────────────────────────┘

Vai trò từng thành phần#

Thành phầnCông nghệVai trò
AdminVue 3 + Vite + Naive UIUI quản lý chiến dịch, dự án, proxy, báo cáo
APIGolang + GoFiber + GORMBackend trung tâm: điều phối Task, quản lý DB, Cron
Tools V2Bun + ElysiaJS + PuppeteerWorker thực thi: chạy Browser, click traffic, report

2. Các thành phần#

2.1 Admin — Giao diện quản lý (Vue 3)#

admin/
├── src/
│   ├── views/          # Màn hình: Dashboard, Campaigns, Projects, Proxy...
│   ├── components/     # UI components tái sử dụng
│   ├── stores/         # Pinia state management
│   ├── services/       # API client (Axios)
│   ├── router/         # Vue Router
│   ├── composables/    # Composition API hooks
│   └── layouts/        # Layout wrapper
Công nghệ stack:
Vue 3 + Composition API
Vite build tool
Naive UI component library
Tailwind CSS styling
Pinia state management
Axios HTTP client
ECharts / Charts data visualization
Kết nối: Gọi REST API trực tiếp tới API (Go) qua VITE_API_SERVER.

2.2 API — Backend trung tâm (Golang)#

api/
├── internal/
│   ├── user/           # Quản lý tài khoản
│   ├── campaign/       # Chiến dịch traffic
│   ├── project/        # Dự án / Domain target
│   ├── project_detail/ # Thống kê hàng giờ
│   ├── proxy/          # Quản lý Proxy pool
│   ├── task/           # Task traffic (MongoDB)
│   ├── keyword/        # Từ khóa tracking SERP
│   ├── server/         # Worker server registry
│   ├── profiles/       # Google account profiles
│   └── ...
├── deploy/             # Docker configs
└── docker-compose.yaml
Công nghệ stack:
Go 1.21+ runtime
GoFiber v2 HTTP framework (tốc độ cao)
GORM ORM cho MySQL
mongo-driver MongoDB driver
go-redis Redis client
JWT authentication
Cron scheduled jobs
Databases sử dụng:
DBPortMục đích
MySQL 8.433022Dữ liệu nghiệp vụ: users, campaigns, projects, servers
MongoDB 833021Tasks, proxies, profiles, keywords, results
Redis 6.233023Session cache, rate limiting, pub/sub

2.3 Tools V2 — Worker Engine (Bun + ElysiaJS)#

tools_v2/
├── src/
│   ├── api/              # HTTP API Controllers
│   │   ├── task/         # Task CRUD + query
│   │   ├── task-group/   # TaskGroup management + cron
│   │   ├── proxy/        # Proxy management + cron
│   │   ├── search/       # SERP search + cron
│   │   ├── report-tasks/ # Report campaign + cron
│   │   ├── monitor/      # System monitoring
│   │   ├── screenshot/   # Screenshot endpoints
│   │   └── test/         # Test proxy/profile
│   ├── services/         # Business logic services
│   │   ├── ads/          # Ads click service
│   │   ├── ai/           # GPT integration
│   │   ├── browser/      # Browser session management
│   │   ├── captcha/      # CAPTCHA handling
│   │   ├── email/        # Email sending (SMTP)
│   │   ├── proxy/        # Proxy rotation
│   │   ├── search/       # SERP scraping
│   │   ├── report-tasks/ # Report execution
│   │   ├── profiles/     # Google account management
│   │   ├── screenshot/   # Screenshot capture
│   │   ├── storage/      # DigitalOcean Spaces
│   │   ├── webhook/      # Webhook callbacks
│   │   └── zing-proxy/   # ZingProxy provider
│   ├── utils/
│   │   ├── browser_manager.ts   # Puppeteer pool manager
│   │   ├── env.ts               # Config centralization
│   │   ├── logger.ts            # Logging system
│   │   └── ip-validation.middleware.ts
│   └── config/
│       └── database/mongodb.config.ts
Công nghệ stack:
Bun runtime (Node.js alternative, nhanh hơn ~3x)
ElysiaJS HTTP framework (type-safe, performance)
Puppeteer headless Chrome automation
Typegoose + Mongoose MongoDB ODM
@elysiajs/cron scheduled jobs

3. Sơ đồ kiến trúc tổng thể#

┌─────────────────────────────────────────────────────────────────────────────────┐
│                           EXTERNAL WORLD                                         │
│                                                                                   │
│   Browser User ──► Admin UI (Vue 3) :5173                                        │
│                         │                                                         │
│                         │ REST/JWT                                                │
│                         ▼                                                         │
│ ┌───────────────────────────────────────────────────────────────────────────┐    │
│ │                     API SERVICE (Golang)  :33001                           │    │
│ │                                                                             │    │
│ │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │    │
│ │  │  /user   │  │/campaign │  │ /project │  │  /proxy  │  │  /task   │   │    │
│ │  └──────────┘  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │    │
│ │                                                                             │    │
│ │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │    │
│ │  │/keyword  │  │ /server  │  │/profiles │  │/webhook  │  │ /report  │   │    │
│ │  └──────────┘  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │    │
│ │                                                                             │    │
│ │  ┌────────────────────────────────────────────────────────────────────┐   │    │
│ │  │  CRON SCHEDULER (API)                                               │   │    │
│ │  │  • */5m  → Send Tasks to Workers                                    │   │    │
│ │  │  • */10m → Search Keyword SERP                                      │   │    │
│ │  │  • */5m  → Check Project Dead                                       │   │    │
│ │  │  • 0 0 * → Reset Tasks, Report Traffic, Monthly/Weekly report       │   │    │
│ │  │  • */10m → Change Active Proxy, Rotate Proxy                        │   │    │
│ │  └────────────────────────────────────────────────────────────────────┘   │    │
│ └──────┬────────────────────────────────────────────────────┬────────────────┘    │
│        │                                                      │                    │
│        │ Webhook POST                                         │ Webhook POST       │
│        │ (Task Assignment)                                    │ (Results/Stats)    │
│        ▼                                                      ▲                    │
│ ┌─────────────────────────────────────────────────────────────────────────────┐  │
│ │                  TOOLS V2 WORKER (Bun/ElysiaJS)  :3005                       │  │
│ │                                                                               │  │
│ │  ┌─────────────────┐   ┌──────────────────┐   ┌────────────────────────┐   │  │
│ │  │  Task Group Cron │   │   Proxy Cron      │   │  Report Task Cron      │   │  │
│ │  │  (every second)  │   │  (every second)   │   │  (every 5s SERP/30s)   │   │  │
│ │  └────────┬─────────┘   └──────────────────┘   └────────────────────────┘   │  │
│ │           │                                                                   │  │
│ │           ▼                                                                   │  │
│ │  ┌──────────────────────────────────────────────────────────────────────┐   │  │
│ │  │              BROWSER MANAGER (Puppeteer Pool)                         │   │  │
│ │  │  Max: 100 browsers  │  Per-process: 1-N  │  Anti-detect: UA, GPS...  │   │  │
│ │  └──────────────────────────────────────────────────────────────────────┘   │  │
│ │           │                                                                   │  │
│ │  ┌────────┼──────────────────────────────────────────────────────────────┐  │  │
│ │  │        │           Execution Flows                                      │  │  │
│ │  │  ┌─────▼─────────┐  ┌───────────────┐  ┌──────────────────────────┐  │  │  │
│ │  │  │  Traffic Flow  │  │  Search Flow  │  │  Report Task Flow        │  │  │  │
│ │  │  │  Direct/Organic│  │  SERP Scrape  │  │  Browser/Email Report    │  │  │  │
│ │  │  │  Ads Click     │  │  Result Parse │  │  GPT Content Gen         │  │  │  │
│ │  │  │  Kill Traffic  │  │  Webhook Send │  │  Screenshot Evidence      │  │  │  │
│ │  │  └───────────────┘  └───────────────┘  └──────────────────────────┘  │  │  │
│ │  └────────────────────────────────────────────────────────────────────────┘  │  │
│ └─────────────────────────────────────────────────────────────────────────────┘  │
│                                                                                   │
│ ┌─────────────────────────────────────────────────────────────────────────────┐  │
│ │                        DATABASE LAYER                                         │  │
│ │   MongoDB :33021         MySQL :33022          Redis :33023                   │  │
│ │   (Tasks, Proxies,       (Users, Campaigns,    (Sessions, Cache,              │  │
│ │    Profiles, Keywords)    Projects, Servers)    Rate Limit)                   │  │
│ └─────────────────────────────────────────────────────────────────────────────┘  │
│                                                                                   │
│ ┌─────────────────────────────────────────────────────────────────────────────┐  │
│ │                         EXTERNAL SERVICES                                     │  │
│ │   ZingProxy API    │    OpenAI GPT API    │    DigitalOcean Spaces            │  │
│ │   (Proxy Rotation) │    (Report Content)  │    (Screenshot Storage)           │  │
│ │                    │                      │                                   │  │
│ │   Telegram Bot     │    SMTP Gmail        │    CocCoc Token                   │  │
│ │   (Notifications)  │    (Email Reports)   │    (Ads automation)               │  │
│ └─────────────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────────┘

4. Luồng Traffic (Traffic Flow)#

Đây là luồng chính của hệ thống — tự động hóa lượt truy cập vào Website target.
STEP 1: Admin tạo Project
───────────────────────────
Admin UI → API → MySQL (projects table)
  • Khai báo: Domain đích, search keyword, device, engine, traffic type
  • Đặt thời gian chạy (time_frame), thời gian đọc trang (page_view)

STEP 2: API Cron gửi Tasks (*/5 phút)
───────────────────────────────────────
API Cron: SCHEDULE_SEND_TASK=*/5 * * * *
  ├── Đọc danh sách Projects active từ MySQL
  ├── Tính số lượt cần chạy trong frame giờ này
  ├── Tạo TaskGroup objects
  └── POST → Tools V2 API: /api/task-groups/create-multiple
       Body: { tasks: [...], proxy_webhook: "...", webhook_url: "..." }

STEP 3: Tools V2 nhận Tasks
──────────────────────────────
Tools V2 /api/task-groups/create-multiple:
  ├── Validate request (IP whitelist, API key)
  ├── Lưu TaskGroups vào MongoDB (status=PENDING)
  └── Trả về 200 OK

STEP 4: Cron xử lý TaskGroup (mỗi giây)
─────────────────────────────────────────
cronTaskGroup.start() [EVERY_SECOND]:
  ├── Query MongoDB: task_groups WHERE status=PENDING LIMIT 25
  ├── Với mỗi group:
  │     ├── Set status=PROCESSING
  │     ├── Request Proxy từ API (GET proxy_webhook)
  │     ├── Launch Puppeteer Browser session
  │     └── Execute Traffic Flow:
  │           ├── [DIRECT]  → Mở URL trực tiếp
  │           └── [ORGANIC] → Mở Google → Tìm keyword
  │                              → Tìm URL trong kết quả
  │                              → Click (organic / ads / kill)
  │
  └── Sau khi chạy xong:
        ├── Cập nhật Task result (result_status, rank, ip_public...)
        ├── POST kết quả → webhook_url (API)
        └── Set TaskGroup status=COMPLETED

STEP 5: API nhận kết quả Webhook
──────────────────────────────────
API nhận POST tại WEBHOOK_TASK_UPDATE_STATUS_URL:
  ├── Cập nhật Task result trong MongoDB
  ├── Cập nhật project_details (total_success/fail cho giờ này)
  └── Cập nhật server_hourly_reports

Chi tiết các loại Traffic#

┌────────────────────────────────────────────────────────────┐
│                    TRAFFIC TYPES                            │
│                                                             │
│  DIRECT Traffic                                             │
│  ══════════════                                             │
│  Browser → Mở URL thẳng → Đọc trang (time_min~time_max)   │
│           → Scroll trang → Đóng                             │
│                                                             │
│  ORGANIC Traffic (Home/Natural)                             │
│  ══════════════════════════════                             │
│  Browser → Google.vn/Google/CocCoc                         │
│           → Nhập search_keyword                             │
│           → Tìm URL đích trong kết quả tự nhiên             │
│           → Click → Đọc trang (time_min~time_max)           │
│           → Navigate các trang nội bộ                       │
│                                                             │
│  ORGANIC + only_ads=true (Ads Click)                        │
│  ══════════════════════════════════                         │
│  Browser → Google → Nhập keyword                           │
│           → Tìm Quảng Cáo (ads) của domain đích             │
│           → Click quảng cáo → Đọc trang                    │
│                                                             │
│  ORGANIC + is_kill=true (Kill Traffic / Click Fraud)        │
│  ════════════════════════════════════════════════           │
│  Browser → Google → Nhập keyword                           │
│           → Tìm Quảng Cáo của Domain ĐỊCH (competitor)      │
│           → Click ads địch → KHÔNG đọc (thoát ngay)         │
│           → Mục đích: tiêu cạn ngân sách quảng cáo địch     │
└────────────────────────────────────────────────────────────┘

5. Luồng Search / SERP#

Luồng cào kết quả tìm kiếm để theo dõi thứ hạng từ khóa.
STEP 1: API Cron quét Keyword (*/10 phút)
──────────────────────────────────────────
SCHEDULE_SEARCH_KEYWORD=*/10 * * * *
  ├── Đọc danh sách Keywords từ MongoDB (status=ENABLE)
  ├── Với mỗi keyword + engine + device:
  │     └── POST → Tools V2: /api/search/create
  │           Body: { keyword, engine, device, result_num, proxy_url, webhook_url }

STEP 2: Tools V2 xử lý Search Task (Cron 30s)
───────────────────────────────────────────────
searchCron:
  ├── Query MongoDB: search WHERE status=PENDING
  ├── Launch Puppeteer → Mở Google/CocCoc
  ├── Nhập keyword → Chờ kết quả
  ├── Parse kết quả:
  │     ├── ads[]: { url, rank }       ← Quảng cáo
  │     └── search[]: { url, rank }    ← Kết quả tự nhiên
  ├── Lưu search_data vào MongoDB
  └── POST kết quả → web_hook_url (API)
        Body: { keyword_id, search_data: { ads, search } }

STEP 3: API cập nhật thứ hạng dự án
──────────────────────────────────────
API nhận webhook → So sánh domain dự án với SERP results
  → Cập nhật project_details.rank
  → Gửi Telegram notification nếu có thay đổi

6. Luồng Report Task#

Tự động báo cáo domain vi phạm lên các tổ chức bảo mật (116+ platforms).
STEP 1: Tạo Report Task
────────────────────────
Admin UI / API → POST /api/report-tasks/create
  • Domain cần report, platform, report_type
  • Hệ thống tạo unique_key để chống trùng
  • Set scheduled_for (có spacing giữa các task)

STEP 2: Worker xử lý Report (Cron 5s)
───────────────────────────────────────
reportTaskCron [every 5 seconds]:
  ├── Query: report_tasks WHERE status=PENDING & scheduled_for <= now
  ├── Sort by priority DESC
  ├── Với mỗi task:
  │     ├── Lấy Proxy (từ proxy_url webhook)
  │     ├── Lấy Profile (từ profile_url webhook)
  │     └── Phân loại report_type:
  │           │
  │           ├── BROWSER_BASED:
  │           │     ├── Launch Puppeteer với Proxy
  │           │     ├── Mở URL form báo cáo
  │           │     ├── Điền thông tin tự động
  │           │     ├── Submit form
  │           │     └── Chụp screenshot làm bằng chứng
  │           │
  │           └── EMAIL_BASED:
  │                 ├── Load Profile Google account
  │                 ├── GPT sinh nội dung email report
  │                 ├── Gửi email qua SMTP/OAuth2
  │                 └── Ghi kết quả emailResults[]

STEP 3: Ghi kết quả & Callback
────────────────────────────────
  ├── Lưu result vào report_tasks.result
  ├── Upload screenshot lên DigitalOcean Spaces
  ├── POST callback → webhook_url (API)
  │     Body: { task_id, success, platform, ... }
  └── Retry nếu thất bại (max_retries=3)

7. Hệ thống Proxy#

┌────────────────────────────────────────────────────────────────────┐
│                      PROXY ARCHITECTURE                             │
│                                                                     │
│  PROVIDERS (External)                                               │
│  ─────────────────────                                              │
│  ZingProxy API ──────┐                                              │
│  Enode API ──────────┼──► proxy_providers (MongoDB)                 │
│  M2Proxy API ────────┘        └── proxy_packages                   │
│                                        └── proxies                  │
│                                                                     │
│  ROTATION FLOW (API Cron: */10 phút)                                │
│  ───────────────────────────────────                                │
│  1. Cron chạy SCHEDULE_CHANGE_ACTIVE_PROXY                          │
│  2. Gọi API nhà cung cấp (rotate_url)                               │
│  3. Nhận IP Public mới                                               │
│  4. Cập nhật proxy.ip_public + proxy_ip_logs                        │
│  5. Ghi lịch sử xoay                                                │
│                                                                     │
│  ASSIGNMENT FLOW (khi Worker cần Proxy)                             │
│  ──────────────────────────────────────                             │
│  Tools V2 Worker → GET API: /api/proxy/get?domain=xxx               │
│  API logic:                                                          │
│    ├── Tìm Proxy phù hợp (area, is_active, not_domain_blocked)      │
│    ├── Kiểm tra domain_blocks                                        │
│    ├── Increment proxy.in_use                                        │
│    └── Trả về proxy credentials                                      │
│                                                                     │
│  PROXY HEALTH                                                        │
│  ────────────                                                        │
│  error_count >= threshold → is_active = false                        │
│  is_captcha = true → excluded từ pool                                │
│  expired_at < now → excluded                                         │
│                                                                     │
│  PROXY POOLS                                                         │
│  ────────────                                                        │
│  api.proxies (MongoDB)    → Paid rotating proxies (main pool)       │
│  tools_v2.proxies         → Worker-local proxy cache                │
│  backup_proxies           → Dự phòng khi main lỗi                  │
│  free_proxies             → Free public proxies (GitHub sources)    │
└────────────────────────────────────────────────────────────────────┘

8. Hệ thống Cron Jobs#

API Cron Jobs (Golang)#

CronScheduleMô tả
SCHEDULE_SEND_TASK*/5 * * * *Gửi Task xuống Worker (mỗi 5 phút)
SCHEDULE_SEARCH_KEYWORD*/10 * * * *Quét thứ hạng từ khóa SERP
SCHEDULE_CHECK_PROJECT_DEAD*/5 * * * *Kiểm tra Project chết (không có kết quả 30 phút)
SCHEDULE_CHANGE_ACTIVE_PROXY*/10 * * * *Xoay IP Proxy định kỳ
SCHEDULE_SERVER_HOURLY_REPORT0 * * * *Ghi báo cáo theo giờ mỗi Server
SCHEDULE_CONFIRM_FIRE*/30 * * * *Xác nhận chiến dịch "fire" ads
SCHEDULE_RESET_TASK0 0 * * *Reset Task về Pending (0h mỗi ngày)
SCHEDULE_REPORT_PROXY_EXPIRED0 0 * * *Báo cáo Proxy sắp hết hạn
SCHEDULE_REPORT_TRAFFIC0 0 * * *Tổng hợp traffic report hàng ngày
SCHEDULE_WEEKLY_REPORT0 0 * * 0Report tuần (Chủ Nhật)
SCHEDULE_MONTHLY_REPORT0 0 1 * *Report tháng (ngày 1)

Tools V2 Cron Jobs (ElysiaJS)#

CronScheduleMô tả
task-group-cron-directEVERY_SECONDXử lý TaskGroup PENDING
task-group-api-request-cronEVERY_SECONDKéo Task mới từ API
proxy-cron-directEVERY_SECONDXử lý Proxy queue
proxy-cron-webhook-directEVERY_SECONDGửi Webhook Proxy kết quả
task-group-cleanup-cron30 0 * * * (0:30 AM)Dọn task_groups cũ
search-cronConfigurable (CRON_SEARCH_LIMIT=1)Chạy SERP search
webhook-search-cronConfigurableGửi kết quả SERP về API
report-task-cronEvery 5sThực thi Report Task
report-task-request-cronEvery 30sKéo Report Task mới từ API

9. Giao tiếp giữa các dịch vụ#

9.1 Admin → API#

Giao thức: HTTPS REST API
Auth: JWT Bearer Token

Endpoints chính:
  POST /api/auth/login         → Đăng nhập, nhận JWT
  GET  /api/campaigns          → Danh sách chiến dịch
  POST /api/projects           → Tạo dự án mới
  GET  /api/proxy              → Danh sách Proxy
  GET  /api/dashboard          → Thống kê tổng hợp
  GET  /api/report             → Báo cáo traffic

9.2 API → Tools V2 (Task Assignment)#

Giao thức: HTTP POST Webhook
Auth: WEBHOOK_KEY (trong request body hoặc header)
IP Whitelist: WHITE_LIST_IP_TOOL_TRAFFIC

API → Tools V2:
  POST /api/task-groups/create-multiple
  Header: X-Webhook-Key: <WEBHOOK_KEY>
  Body: {
    "tasks": [
      {
        "id": "task-123",
        "project_id": 456,
        "proxy_url": "https://api.example.com/api/proxy/get",
        "webhook_url": "https://api.example.com/api/task/update-status",
        "traffic_type": { "method": 1, "search_keyword": "...", ... },
        "page_view": [{ "time_min": 30, "time_max": 120 }],
        "traffic_device": 0
      }
    ],
    "proxy_webhook": "https://api.example.com/api/proxy/get"
  }

9.3 Tools V2 → API (Results Callback)#

Giao thức: HTTP POST Webhook
Auth: WEBHOOK_KEY

Tools V2 → API (Task result):
  POST /api/task/update-status
  Body: {
    "task_id": "task-123",
    "result_status": 1,
    "rank": 3,
    "ip_public": "1.2.3.4",
    "execution_time": 45000,
    "user_agent": "Mozilla/5.0..."
  }

Tools V2 → API (Proxy get):
  GET /api/proxy/get?domain=example.com
  Response: { "ip": "...", "port": 8080, "username": "...", "password": "..." }

Tools V2 → API (Search result):
  POST /api/keyword/search
  Body: {
    "keyword_id": "abc123",
    "search_data": {
      "ads": [{ "url": "https://...", "rank": 1 }],
      "search": [{ "url": "https://...", "rank": 3 }]
    }
  }

9.4 API → Telegram (Notifications)#

Giao thức: Telegram Bot API
Channels:
  • TELEGRAM_CHAT_ID         → Thông báo chung
  • TELEGRAM_CHAT_ERROR_ID   → Thông báo lỗi hệ thống
  • TELEGRAM_CHAT_REPORT_ID  → Báo cáo traffic định kỳ

Triggers:
  • Project chuyển sang state "Dead"
  • Proxy hết hạn
  • Báo cáo tuần/tháng
  • Lỗi nghiêm trọng

10. Bảo mật#

Authentication & Authorization#

┌──────────────────────────────────────────────────────────────────┐
│                    SECURITY LAYERS                                │
│                                                                   │
│  Layer 1: JWT Authentication (Admin → API)                        │
│  ─────────────────────────────────────────                        │
│  • JWT_SECRET bảo vệ token                                        │
│  • SESSION_TIMEOUT=1h                                             │
│  • Roles: admin (0), user (1)                                    │
│  • 2FA TOTP (Google Authenticator)                                │
│                                                                   │
│  Layer 2: Webhook Authentication (API ↔ Tools V2)                │
│  ─────────────────────────────────────────────────                │
│  • WEBHOOK_KEY phải khớp giữa API và Tools V2                    │
│  • WEBHOOK_SECKET_KEY cho proxy operations                        │
│  • IP Whitelist: WHITE_LIST_IP_TOOL_TRAFFIC                      │
│                                                                   │
│  Layer 3: IP Allowlist (Tools V2)                                 │
│  ─────────────────────────────────                                │
│  • IP_ALLOWED=[list] → chỉ IPs trong list được gọi API           │
│  • ipValidationMiddleware kiểm tra mọi request                    │
│                                                                   │
│  Layer 4: API Key (Internal Services)                             │
│  ────────────────────────────────────                             │
│  • API_KEY cho các service internal                               │
│  • PROXY_API_KEY cho proxy operations                             │
│  • ZING_PROXY_API_KEY cho external proxy provider                 │
└──────────────────────────────────────────────────────────────────┘

Anti-Detection (Browser Automation)#

Puppeteer được cấu hình để tránh phát hiện bot:
  • Randomized User-Agent (Desktop/Mobile/OS khác nhau)
  • Randomized Geolocation (± 2km từ tọa độ thật)
  • Human-like scroll behavior
  • Random dwell time (time_min ~ time_max giây)
  • Proxy rotation per session
  • Profile fingerprint persistence
  • CAPTCHA detection + graceful exit

11. Lưu trữ & File Storage#

DigitalOcean Spaces (S3-compatible)#

Cấu hình:
  DIGITALOCEAN_BUCKET_NAME=bucket-name
  DIGITALOCEAN_REGION=nyc3
  DIGITALOCEAN_ENDPOINT=https://nyc3.digitaloceanspaces.com
  DIGITALOCEAN_CDN_URL=https://bucket.nyc3.cdn.digitaloceanspaces.com

Dùng cho:
  • Screenshot bằng chứng (report_tasks.screenshotUrl)
  • Evidence images/videos

File naming:
  screenshots/{date}/{task_id}.png

Log File System#

Tools V2 local logs: storage/log/
  ├── app/           → General application logs
  ├── browser_manager/ → Puppeteer session logs  
  ├── task/          → Task execution logs
  └── error/         → Error logs

Cấu hình:
  LOG_LEVEL=info|debug|warn|error
  LOG_WRITE_TO_FILE=true
  LOG_WRITE_TO_CONSOLE=true
  LOG_DIR=storage/log

12. Network Topology#

Docker Network#

Network: traffic_tool_network (Bridge)
Subnet: 11.0.3.0/24
Gateway: 11.0.3.1

Services:
  traffic_tool_api      → 11.0.3.x:33001
  traffic_tool_mongodb  → 11.0.3.x:27017 (expose: 33021)
  traffic_tool_mysql    → 11.0.3.x:3306  (expose: 33022)
  traffic_tool_redis    → 11.0.3.x:6379  (expose: 33023)

Tools V2 → runs separately (giao tiếp qua API_HOST)
Admin    → runs on host (VITE_API_SERVER=http://...)

Port Map (Production)#

ServiceInternal PortExternal PortProtocol
API (Go)3300133001HTTP/HTTPS
API Debug234533013TCP (Delve)
MongoDB2701733021MongoDB
MySQL330633022MySQL
Redis637933023Redis
Tools V230053005HTTP
Admin UI51735173HTTP (dev)

Deployment Flow#

Production Setup:
                          ┌─────────────────────────────────┐
  Internet                │         Server Machine           │
  ─────────               │                                  │
  Browser ──► Nginx/CF ──►│  Admin :443/80 → Vite static    │
                          │  API   :33001  → Go binary       │
                          │  V2    :3005   → Bun runtime     │
                          │                                  │
                          │  Docker containers:              │
                          │  MongoDB :33021                  │
                          │  MySQL   :33022                  │
                          │  Redis   :33023                  │
                          └─────────────────────────────────┘
Modified at 2026-03-25 07:00:46
Previous
Database Schema
Next
Code Structure
Built with