Search Tool
    • Tổng quan
    • Bussiness | Logic
      • Nghiệp vụ & Luồng Tìm kiếm
      • Task Orchestration
      • Scraping & Execution
      • Exception & Recovery
      • Proxy Orchestration
    • Project
      • Search API
        • Deployment
        • Architecture
          • Database Schema
          • System Architecture
          • Code Structure
        • API Interface
          • Go - Auth
            • Đăng nhập
            • Đăng ký (Public)
          • Go - User
            • Danh sách User (Phân trang)
            • Tạo User
            • Lấy tất cả User
            • Profile cá nhân
            • Chi tiết User
            • Cập nhật User
            • Xóa User
            • Đổi mật khẩu
          • Go - System
            • Nhật ký hoạt động (Phân trang)
            • Cập nhật dữ liệu Search
            • Test Webhook receiver
          • Go - Server
            • Danh sách Server (Phân trang)
            • Tạo Server
            • Lấy tất cả Server
            • Chi tiết Server
            • Cập nhật Server
            • Xóa Server
          • Go - Tasks
            • Tạo nhiều task Search
            • Lấy tất cả task Search
            • Reset trạng thái tất cả nhiệm vụ Search
            • Tạo nhiều task Anchor Text
            • Lấy tất cả nhiệm vụ Anchor Text
            • Reset trạng thái tất cả nhiệm vụ Anchor Text
          • Go - Webhook
            • Webhook cập nhật trạng thái (Dùng WEBHOOK_KEY)
            • Lấy Proxy cho Tool
            • Lấy Proxy có thể rotate
            • Cập nhật kết quả Search
            • Kết quả rotate Proxy
            • Cập nhật kết quả Anchor Text
            • Nhận kết quả từ Tool (v2)
      • Search tool
        • Deployment
        • Architecture
          • Database Schema
          • System Architecture
          • Code Structure
        • API Interface
          • Bun - Main
            • Thông tin server Bun
            • Health Check
            • Lấy file Log
          • Bun - Task
            • Danh sách Search Tasks
            • Tạo nhiều Search Tasks
            • Xóa tất cả Search Tasks
            • Xóa Search Task
            • Reset trạng thái Search
            • Reset running process
            • Danh sách Anchor Tasks
            • Tạo nhiều Anchor Tasks
            • Xóa tất cả Anchor Tasks
            • Xóa Anchor Task
            • Reset trạng thái Anchor
            • Reset running process
    • Schemas
      • LoginRequest
      • ProxyRequest
      • CreateUserRequest
      • KeywordTaskRequest
      • UpdateUserRequest
      • SearchAutomationRequest
      • ChangePasswordRequest
      • CreateServerRequest
      • AnchorTextTaskRequest

    Tổng quan

    TÀI LIỆU TỔNG QUAN TOÀN BỘ HỆ THỐNG SEARCH TOOL#

    Tài liệu này cung cấp bức tranh toàn cảnh về kiến trúc, luồng vận hành và sự tương tác giữa các phân hệ trong hệ sinh thái Search Tool. Đây là một hệ thống tự động hóa quy mô lớn, chuyên trách việc giả lập hành vi người dùng, bóc tách dữ liệu (Web Scraping) và theo dõi thứ hạng SEO (Rank Tracking) trên các công cụ tìm kiếm.
    Màn hình đăng nhập Hệ thống Check Domain
    Tổng quan về kiến trúc Master-Worker của hệ thống Search Tool

    1. MỤC ĐÍCH VÀ PHẠM VI ỨNG DỤNG#

    Hệ thống Search Tool được thiết kế nhằm giải quyết bài toán thu thập dữ liệu thứ hạng từ khóa, quảng cáo (Ads) và văn bản neo (Anchor text) một cách tự động, liên tục và tránh bị phát hiện bởi các cơ chế chống thư rác (Anti-bot).
    Hệ thống hoạt động dựa trên mô hình phân tán Master - Worker, trong đó phân tách rõ ràng trách nhiệm giữa việc lưu trữ, lên lịch (Master) và việc thực thi tương tác trình duyệt nặng nề (Worker).

    2. KIẾN TRÚC TỔNG THỂ (MACRO ARCHITECTURE)#

    Hệ thống bao gồm hai phân hệ (Module) cốt lõi, hoạt động độc lập và giao tiếp với nhau thông qua giao thức HTTP RESTful và Webhook.

    2.1. Phân hệ Trung tâm Điều phối (Search Tool API - Master Node)#

    Nền tảng: Go 1.22, Fiber v2.
    Cơ sở dữ liệu: MySQL (Quản trị tài khoản, cấu hình máy chủ), MongoDB (Danh mục từ khóa, lịch sử quét), Redis (Bộ nhớ đệm).
    Vai trò: Đóng vai trò là "Bộ não" của hệ thống.
    Quản lý danh sách các Worker (Tool Servers).
    Lên lịch (Scheduler) và gom nhóm các từ khóa cần tìm kiếm.
    Phân phối tác vụ (Task Routing) xuống các Worker dựa trên thuật toán tính trọng số (Weighted Distribution).
    Nhận kết quả trả về từ Worker thông qua Webhook, phân tích và lưu trữ dài hạn.

    2.2. Phân hệ Động cơ Thực thi (Search Tool Worker - Worker Nodes)#

    Nền tảng: Bun (>= 1.2.5), ElysiaJS, Puppeteer, MongoDB (Local Buffer).
    Vai trò: Đóng vai trò là "Cỗ máy thực thi". Hệ thống có thể triển khai hàng chục hoặc hàng trăm Worker Node chạy song song trên nhiều máy chủ vật lý khác nhau.
    Nhận danh sách tác vụ (Lô/Batch) từ Master Node.
    Quản lý vòng đời của các phiên làm việc Chrome (Browser Session Pool).
    Ứng dụng các kỹ thuật ẩn danh (Stealth, Ghost Cursor) để vượt rào cản Captcha, truy cập Google/Cốc Cốc và trích xuất cấu trúc HTML.
    Đóng gói kết quả (Vị trí, Link, Quảng cáo) và gửi phản hồi (Callback) về Master Node thông qua Webhook.

    3. SƠ ĐỒ LUỒNG DỮ LIỆU TỔNG QUÁT (DATA FLOW)#

    Sơ đồ dưới đây mô tả chu trình khép kín từ lúc hệ thống khởi tạo yêu cầu quét cho đến khi dữ liệu được ghi nhận.
    [ TẦNG QUẢN TRỊ ]
           |
           | (1) Khai báo Từ khóa / Anchor Text
           v
    +--------------------------------------------------------------------+
    |                      SEARCH TOOL API (Master)                      |
    |                                                                    |
    |  - Scheduler (gocron) trích xuất từ khóa định kỳ.                  |
    |  - Đóng gói yêu cầu (Từ khóa x Thiết bị x Máy tìm kiếm).           |
    |  - Lọc dữ liệu trùng lặp qua Redis Cache.                          |
    |  - Gọi POST phân phát lô (Batch) tác vụ đến các Worker Servers.    |
    +--------------------------------------------------------------------+
           |                                      ^
           | (2) Dispatch Tasks                   | (4) Webhook Callback
           v                                      |
    +--------------------------------------------------------------------+
    |                    SEARCH TOOL WORKER (Node)                       |
    |                                                                    |
    |  - Tiếp nhận tác vụ, lưu vào MongoDB (Local Buffer).               |
    |  - Gọi API xin cấp phát IP Proxy (Từ Proxy Service Tool).          |
    |  - BrowserManager khởi chạy Chrome với cấu hình Anti-Detect.       |
    |  - Bóc tách dữ liệu DOM (Thứ hạng, Quảng cáo, Backlink).           |
    +--------------------------------------------------------------------+
           |
           | (3) Scraping
           v
    [ GOOGLE / CỐC CỐC SERP ]

    4. CHI TIẾT CÁC LUỒNG NGHIỆP VỤ CỐT LÕI#

    4.1. Nghiệp vụ Quét Xếp hạng Từ khóa (Rank Tracking Workflow)#

    1.
    Lên lịch: Master Node dựa vào biểu thức Cron (SCHEDULE_SEARCH_KEYWORD) để tạo danh sách từ khóa cần tìm kiếm.
    2.
    Phân phối: Các từ khóa được đẩy xuống Worker Node (POST /api/searches). Nếu Worker đang quá tải, Master Node sẽ điều hướng sang Worker khác dựa trên thuật toán Cân bằng tải.
    3.
    Thực thi: Worker Node khởi chạy trình duyệt giả lập. Tùy thuộc vào cấu hình (device: 0/1), Worker sẽ điều chỉnh Viewport và User-Agent tương ứng với PC hoặc Mobile.
    4.
    Trích xuất: Dữ liệu trả về được phân mảnh thành hai mảng: ads (Quảng cáo xuất hiện trên trang) và search (Các vị trí SEO tự nhiên).
    5.
    Đồng bộ: Dữ liệu được gọi Webhook trả về Master Node và lưu vào bộ sưu tập keyword_results.

    4.2. Nghiệp vụ Quét Văn bản Neo (Anchor Text Workflow)#

    1.
    Mục tiêu của nghiệp vụ này là rà soát xem một liên kết có thực sự tồn tại trên một trang web hay không.
    2.
    Yêu cầu (domain và anchor_key) được luân chuyển tương tự quy trình quét từ khóa.
    3.
    Trình duyệt của Worker truy cập vào trang đích, quét toàn bộ thẻ <a> trong cấu trúc HTML để tìm kiếm sự trùng khớp và báo cáo cấu trúc thẻ (HTML Element) về trung tâm.

    4.3. Nghiệp vụ Vượt Tường lửa và Xoay vòng IP (Anti-Ban & Proxy Rotation)#

    Để không bị các bộ máy tìm kiếm đánh dấu là luồng truy cập bất thường, hệ thống yêu cầu tích hợp một lớp Proxy.
    Worker Node trước khi mở trình duyệt sẽ gọi đến Proxy Service Tool để xin cấp phát một địa chỉ IP "sạch".
    Sau một chu kỳ nhất định, nếu IP bị nhận diện (Lỗi -3: Captcha), Worker sẽ báo cáo về hệ thống để hủy kết quả và tự động xếp hàng chạy lại (Retry) với một IP mới.

    5. CƠ CHẾ BẢO MẬT VÀ GIAO TIẾP (SECURITY & COMMUNICATION)#

    Hệ thống sử dụng cơ chế bảo mật nội bộ đa tầng để ngăn chặn các truy cập trái phép vào luồng phân phối tác vụ:
    Kênh Giao tiếpPhương thức Bảo mậtDiễn giải
    Admin -> API (Master)JWT Bearer TokenQuản trị viên đăng nhập, lấy Token để thao tác dữ liệu qua HTTP Request.
    API (Master) -> WorkerAPI Key HeaderMaster Node đính kèm mã API_SEARCH_TOKEN khi đẩy tác vụ xuống Worker. Worker đối chiếu khóa này.
    Worker -> API (Master)Webhook KeyWorker đính kèm mã WEBHOOK_KEY khi trả kết quả về. Tránh trường hợp dữ liệu rác bị bơm vào Master Node từ bên ngoài.

    6. ĐÁNH GIÁ TÍNH ỔN ĐỊNH VÀ CHỊU TẢI (RELIABILITY & FAULT TOLERANCE)#

    Thiết kế kiến trúc hiện tại giải quyết được các rủi ro vận hành cơ bản của hệ thống Automation:
    Tự động phục hồi: Master Node có cơ chế giám sát các tác vụ treo (Timeout). Nếu Worker bị sập nguồn khiến tác vụ không có phản hồi, Master Node sẽ đặt lại trạng thái (RESET_TASK) và phân phối cho Worker khác.
    Chống rò rỉ bộ nhớ (Memory Leak Protection): Worker Node thiết lập giới hạn cứng (BROWSER_LIMIT) cho số lượng trình duyệt mở song song. Khi chạm ngưỡng, các tác vụ mới sẽ nằm chờ ở hàng đợi cục bộ. Thư mục cấu hình rác của Chrome (tmp/user-data) liên tục được dọn dẹp để bảo vệ ổ cứng SSD của máy chủ.
    Ngày cập nhật 2026-03-30 11:10:20
    Tiếp theo
    Nghiệp vụ & Luồng Tìm kiếm
    Built with