Worker & Automation Business
SYSTEM BUSINESS LOGIC: WORKER & AUTOMATION ENGINE (MODULE 2)#
Phân hệ Worker (Tool RecordVideo) là "trái tim" xử lý nghiệp vụ nặng của hệ thống. Nó chịu trách nhiệm tiếp nhận lệnh từ Admin, giả lập người dùng, tương tác với trình duyệt và ghi hình làm bằng chứng.
1. Vòng đời Xử lý Tác vụ (Task Lifecycle Business)#
Mỗi tác vụ (Task) quét tên miền trải qua một vòng đời (Workflow) nghiêm ngặt gồm 4 trạng thái:Status 0 (Pending/Create): Task vừa được tạo từ API Receiver, chờ cấp phát tài nguyên.
Status 1 (Running): Hàng đợi (Queue Manager) lấy Task ra và giao cho một Worker Thread rảnh rỗi.
Status 2 (Completed): Worker hoàn tất kịch bản (truy cập, tìm từ khóa, record) thành công, dữ liệu đã được xuất.
Status 3 (Failed): Task thất bại do lỗi mạng, proxy chết, hoặc timeout. Lỗi được ghi rõ vào trường message/error.
2. Nghiệp vụ Tự động hóa Trình duyệt (Browser Automation Logic)#
Che giấu danh tính (Stealth): Worker sử dụng cấu hình ẩn danh (puppeteer-extra-plugin-stealth hoặc puppeteer-real-browser) kết hợp Proxy để tránh bị hệ thống Anti-Bot (Cloudflare, reCAPTCHA) của website mục tiêu chặn.
Giả lập thiết bị di động/PC: Tùy thuộc vào yêu cầu truyền vào (device: mobile | desktop), Worker thay đổi User-Agent và kích thước khung hình (Viewport) để kiểm tra tính tương thích của web.
Kịch bản Tương tác (Scripts): Dựa vào trường type (main, proxy, dsey), Worker thực thi các kịch bản cuộn trang, click, và tìm kiếm sự xuất hiện của keywords trên DOM HTML. Từ khóa thực tế tìm thấy được ghi vào keywordFound.
Theo dõi XHR/Ajax: Hệ thống bắt (intercept) các gói tin API chạy ngầm trên trang mục tiêu và lưu vào mảng list_fetch_xhr để phân tích hành vi mã độc hoặc tracking.
Nếu cờ isAcceptRecord = true, ngay khi trình duyệt mở, tiến trình FFmpeg (đối với video) hoặc hàm chụp ảnh của Puppeteer sẽ được kích hoạt.
Dữ liệu ban đầu được ghi vào ổ cứng vật lý của Worker Server (imagePath, videoPath).
Dữ liệu sau đó được đẩy lên hệ thống Cloud Storage (S3/GCP) để tối ưu băng thông và trả về URL public (imageCloudPath, videoCloudPath).
Modified at 2026-03-28 02:51:15