Hệ thống được thiết kế theo dạng Worker Node (Nút xử lý), vận hành độc lập nhưng kết nối chặt chẽ với API Server trung tâm thông qua kiến trúc hướng sự kiện (Webhook) và điều phối công việc theo lô (Cronjob).
I. SƠ ĐỒ LUỒNG KIẾN TRÚC (ARCHITECTURE DIAGRAM)#
+------------------------------------------------------------------+
| SEARCH TOOL (Bun + ElysiaJS) |
| Port: 33033 |
| |
| [ENTRY POINT: src/index.ts] |
| 1. Khởi tạo kết nối MongoDB nội bộ. |
| 2. Dọn dẹp thư mục tmp/user-data (Xóa rác Chrome Profile cũ). |
| 3. Khởi động Máy chủ HTTP. |
| |
| [HTTP ROUTES LAYER] |
| /api/searches - Tiếp nhận Task tìm kiếm SEO. |
| /api/search-anchor-texts - Tiếp nhận Task quét Liên kết. |
| /api/proxies - Tiếp nhận Lệnh đảo IP. |
| |
| [CRON SCHEDULER ENGINE] (Thực thi mỗi giây) |
| - search-cron : Quét từ khóa. |
| - anchor-text-cron : Quét liên kết. |
| - proxy-cron : Thực thi đảo IP. |
| * Cơ chế bảo vệ: Không chạy chéo luồng Webhook. |
| |
| [BROWSER MANAGER ENGINE] (Hạt nhân cốt lõi) |
| - Duy trì Chrome Session Pool (Quản lý tiến trình). |
| - Giới hạn cứng: BROWSER_LIMIT (Chống sập RAM). |
| - Ứng dụng Puppeteer + Stealth Plugin (Xóa dấu vết). |
| - Giả lập con trỏ chuột (Ghost Cursor). |
+---+-------------------------------+------------------------------+
| |
v v
+--------+ +-------------------+
|MongoDB | | External Network |
|(Local) | | |
| | | - searchapi.io |
|searches| | - Webhook API |
|proxies | | - Chrome Instance |
+--------+ +-------------------+
II. ĐẶC TẢ LUỒNG HOẠT ĐỘNG CỦA WORKER (WORKFLOW PROCESS)#
1. Luồng Tác vụ Tìm kiếm Từ khóa (Keyword Scraping Lifecycle)#
1.
Tiếp nhận: API Server trung tâm gọi POST /api/searches đẩy một lô Task xuống Tool. Dữ liệu lưu vào MongoDB nội bộ với Status = 0.
2.
Khởi chạy Trình duyệt: Cronjob (chạy mỗi giây) bốc các Task trạng thái PENDING. Nó yêu cầu BrowserManager khởi tạo một phiên làm việc mới (Khởi động nhân Chrome).
3.
Thu thập dữ liệu: Chrome tự động duyệt web vào Google hoặc Cốc Cốc, tiêm mã JavaScript (Inject Script) để trích xuất cấu trúc HTML (Bóc tách Quảng cáo và Kết quả tự nhiên).
4.
Hồi báo (Webhook Dispatch): Sau khi có kết quả, Task chuyển sang Status = 2. Trình lên lịch Webhook sẽ tóm lấy dữ liệu này, đóng gói và gọi POST trả về API Server thông qua biến webhook_url.
2. Luồng Tác vụ Xoay vòng Proxy (Proxy Rotation Lifecycle)#
1.
Task được nạp qua POST /api/proxies.
2.
Cronjob đọc URL xoay vòng (rotate_url) và thực thi yêu cầu HTTP GET.
3.
Lấy lại địa chỉ ip_public mới, lưu dữ liệu, đóng gói báo cáo và gửi về qua Webhook.
III. QUẢN TRỊ TRÌNH DUYỆT (BROWSER MANAGER POOLING)#
Tránh r ò rỉ bộ nhớ (Memory Leak): Hệ thống giám sát chặt chẽ biến browserManager.sessionsCount. Mọi tiến trình Chrome treo sẽ bị ép tắt (Force Kill). Thư mục tmp/user-data bị xóa sạch khi ứng dụng khởi động lại để giải phóng ổ cứng.
Đánh lừa Thuật toán (Anti-Bot Evasion): Việc cấu hình thiết bị (Đổi User-Agent, đổi kích thước 1920x1080 cho PC hoặc iPhone 14 cho Mobile) kết hợp Ghost Cursor giúp hành vi của Bot giống hệt người dùng thật.
Ngày cập nhật 2026-03-30 03:17:20