@swift282831
VAI TRÒ: Kỹ sư Tự động hóa Node.js Cấp cao
MỤC TIÊU:
Xây dựng một Hệ thống Tự động hóa Đăng ký Tài khoản & Báo cáo THỰC TẾ, sẵn sàng cho môi trường production bằng Node.js.
Hệ thống này BẮT BUỘC phải thực hiện tự động hóa trình duyệt thật và các thao tác mạng thật.
KHÔNG mô phỏng, KHÔNG dùng dữ liệu giả lập (mock data), KHÔNG dùng phần giữ chỗ (placeholders), KHÔNG viết mã giả (pseudo-code).
CHÍNH SÁCH MÔ PHỎNG:
KHÔNG BAO GIỜ mô phỏng bất cứ thứ gì.
KHÔNG BAO GIỜ tạo ra kết quả đầu ra giả.
KHÔNG BAO GIỜ sử dụng các dịch vụ giả (dummy services).
Toàn bộ logic phải có thể thực thi và hoạt động được.
NGĂN XẾP CÔNG NGHỆ (TECH STACK):
- Node.js (ES2022+)
- Playwright (được ưu tiên) HOẶC puppeteer-extra + stealth plugin
- Mô-đun fs gốc (native)
- readline HOẶC inquirer
- axios (dùng cho API & Telegram)
- Express (dùng cho API bảng điều khiển)
YÊU CẦU HỆ THỐNG:
1) HỆ THỐNG ĐẦU VÀO
- Đọc bất đồng bộ danh sách email từ tệp "gmailer.txt"
- Mỗi dòng = một email
- Nhắc người dùng nhập vào:
• tiền tố tên người dùng (username prefix)
• mật khẩu (password)
• chế độ ẩn giao diện - headless mode (true/false)
- Không được làm chặn vòng lặp sự kiện (event loop)
2) TỰ ĐỘNG HÓA TRÌNH DUYỆT
Đối với MỖI email:
- Khởi chạy trình duyệt với tùy chọn chế độ headless
- Sử dụng User-Agent ngẫu nhiên từ danh sách nội bộ
- Áp dụng độ trễ ngẫu nhiên giữa các thao tác
- Mở một browserContext MỚI cho mỗi lần thử
- Tự động xóa cookie
- Xử lý mượt mà các lỗi điều hướng trang
3) HỖ TRỢ PROXY MIỄN PHÍ (KHÔNG DÙNG DỊCH VỤ TRẢ PHÍ)
- CHỈ sử dụng các proxy HTTP/HTTPS công khai miễn phí
- Tải danh sách proxy từ tệp proxies.txt
- Xoay vòng proxy cho từng tài khoản
- Nếu proxy gặp lỗi → thử lại bằng proxy tiếp theo
- Hệ thống vẫn phải hoạt động được khi không có proxy
4) NÉ TRÁNH / VƯỢT QUA PHÁT HIỆN BOT
- Kích thước khung nhìn (viewport) ngẫu nhiên
- Tốc độ gõ phím ngẫu nhiên
- Chuyển động chuột ngẫu nhiên (nếu được hỗ trợ)
- Che giấu thuộc tính navigator.webdriver
- Chỉ sử dụng các kỹ thuật ẩn mình (stealth) được chấp nhận
- KHÔNG sử dụng các phương pháp vượt rào bất hợp pháp
5) LUỒNG TẠO TÀI KHOẢN
Hệ thống phải được thiết kế dạng mô-đun để có thể cấu hình trang web mục tiêu sau này.
Các bước dự kiến:
- Điều hướng đến trang đăng ký
- Điền email, tên người dùng, mật khẩu
- Gửi biểu mẫu (Submit form)
- Phát hiện trạng thái thành công hoặc thất bại
- Trích xuất bất kỳ dữ liệu xác nhận nào nếu có
6) HỆ THỐNG XUẤT TỆP
Khi THÀNH CÔNG:
Ghi nối tiếp (Append) vào:
outputs/basarili_hesaplar.txt
ĐỊNH DẠNG:
email:username:password
Chỉ ghi nối tiếp tên người dùng vào:
outputs/kullanici_adlari.txt
Chỉ ghi nối tiếp mật khẩu vào:
outputs/sifreler.txt
Khi THẤT BẠI:
Ghi nối tiếp vào:
logs/error_log.txt
ĐỊNH DẠNG:
timestamp Email: X | Error: MESSAGE
7) THÔNG BÁO TELEGRAM
Tùy chọn nhưng phải được triển khai sẵn:
Nếu TELEGRAM_TOKEN và CHAT_ID được thiết lập:
Gửi tin nhắn:
"New Account Created:
Email: X
User: Y
Time: Z"
8) API BẢNG ĐIỀU KHIỂN THỜI GIAN THỰC
Tạo máy chủ Express trên cổng 3000.
Các điểm cuối (Endpoints):
GET /stats
Trả về JSON:
{
total,
success,
failed,
running,
elapsedSeconds
}
GET /logs
Trả về 100 dòng nhật ký gần nhất
Bảng điều khiển phải cập nhật theo thời gian thực.
9) BÁO CÁO CONSOLE CUỐI CÙNG
Sau khi tất cả email đã được xử lý xong:
Hiển thị bằng console.table:
- Tổng số Lần thử (Total Attempts)
- Thành công (Successful)
- Thất bại (Failed)
- Tỷ lệ Thành công % (Success Rate %)
- Tổng Thời lượng (tính bằng giây & phút)
10) XỬ LÝ LỖI
- Mọi lần thử tạo tài khoản đều phải được bọc trong khối try/catch
- Một lần thất bại KHÔNG ĐƯỢC làm sập toàn bộ hệ thống
- Tiếp tục xử lý các email còn lại
11) CHẤT LƯỢNG MÃ NGUỒN
- Sử dụng hoàn toàn async/await
- Kiến trúc mô-đun hóa
- Không gây chặn toàn cục (no global blocking)
- Phân tách mối quan tâm (separation of concerns) rõ ràng, sạch sẽ
CẤU TRÚC DỰ ÁN:
/project-root
main.js
gmailer.txt
proxies.txt
/outputs
/logs
/dashboard
YÊU CẦU ĐẦU RA:
Tạo ra:
1) Mã nguồn Node.js hoàn chỉnh có thể chạy được ngay
2) package.json
3) Hướng dẫn chạy rõ ràng
4) Không dùng Docker
5) Không dùng công cụ trả phí
6) Không mô phỏng
7) Không có phần nào bị bỏ dở chưa hoàn thiện
QUAN TRỌNG:
Nếu có bất kỳ yêu cầu nào không thể triển khai được,
hãy cung cấp giải pháp thay thế có chức năng THỰC TẾ gần nhất.
KHÔNG đặt câu hỏi.
KHÔNG chỉ tạo ra lời giải thích.
Hãy tạo MÃ NGUỒN HOẠT ĐỘNG ĐẦY ĐỦ.