Tín hiệu Thời gian Thực
Tín hiệu Thời gian Thực là một hệ thống hướng sự kiện nâng cao để xử lý giao tiếp bất đồng bộ trong các quy trình tự động hóa. Kiến trúc dựa trên tín hiệu này cho phép tương tác liền mạch giữa các script tự động hóa và các hệ thống bên ngoài, trong đó xử lý Xác thực Đa yếu tố (MFA) là một trong những ứng dụng quan trọng nhất của nó.
Tổng quan
Hệ thống Tín hiệu Thời gian Thực cung cấp một khung làm việc mạnh mẽ để quản lý các sự kiện bất đồng bộ trong các quy trình tự động hóa. Mặc dù xác minh MFA đại diện cho một trường hợp sử dụng chính, kiến trúc linh hoạt của hệ thống hỗ trợ nhiều kịch bản hướng sự kiện đa dạng.
Xác thực Đa yếu tố (MFA) là một tính năng bảo mật quan trọng thường trở thành nút thắt cổ chai cho các quy trình tự động hóa, gây ra lỗi hoặc khóa tài khoản.
Tại sao Xử lý MFA lại Quan trọng đối với Tự động hóa:
✅ Đảm bảo truy cập không gián đoạn: Xử lý các mã SMS bất ngờ, OTP qua email, hoặc xác thực TOTP mà không làm gián đoạn quy trình
✅ Ngăn chặn sự cố quy trình: Tự động hóa truyền thống bị đóng băng khi xuất hiện các lời nhắc MFA, trong khi Agent Browser xử lý chúng một cách mượt mà
✅ Duy trì phiên ổn định: Các tác vụ chạy dài vẫn duy trì đăng nhập với quản lý trạng thái xác minh an toàn
✅ Giảm rủi ro tài khoản: Hành vi xác minh giống con người làm giảm khả năng kích hoạt các cơ chế bảo mật
Vượt ra ngoài MFA: Hệ thống Sự kiện Toàn diện
Hệ thống tín hiệu mở rộng ra ngoài xác thực để xử lý:
- Gửi biểu mẫu và cập nhật trạng thái
- Thông báo tiến độ tác vụ
- Lệnh gọi lại API và webhook
- Tương tác người dùng và thay đổi trạng thái
- Điều phối tiến trình giữa các hệ thống
- Giám sát thời gian thực và cảnh báo
Giải pháp tín hiệu hoàn chỉnh:
- Xác minh MFA đáng tin cậy (trường hợp sử dụng chính)
- Xử lý sự kiện toàn diện cho các nhu cầu tự động hóa
- Nhiều phương thức nhập cho mã và dữ liệu
- Xử lý bất đồng bộ (không chặn)
- Hỗ trợ đầy đủ CDP và HTTP API
- Khả năng tương thích toàn diện với các luồng xác thực
API được Hỗ trợ
Scrapeless hỗ trợ cả hai giao diện CDP và HTTP cho tín hiệu thời gian thực:
| API | Phương thức CDP | Điểm cuối HTTP | Mô tả |
|---|---|---|---|
| Gửi Tín hiệu | Signal.send | POST /signal/send | Gửi dữ liệu đến một kênh sự kiện |
| Chờ Tín hiệu | Signal.wait | GET /signal/wait | Chờ dữ liệu trên một kênh sự kiện |
| Liệt kê Sự kiện | Signal.list | GET /signal/list | Liệt kê tất cả các tên sự kiện đang chờ |
| Lấy Thống kê | Signal.stats | GET /signal/stats | Truy xuất thống kê hàng đợi |
| Xóa Sự kiện | Signal.clear | DELETE /signal/clear | Xóa các sự kiện cụ thể hoặc tất cả |
CDP API
CDP Signal API cho phép bạn gửi và nhận tín hiệu thông qua các kênh sự kiện trong các quy trình tự động hóa trình duyệt. Tìm hiểu thêm
Signal.send
Gửi dữ liệu tín hiệu đến một kênh sự kiện được chỉ định.
Định dạng Yêu cầu:
{
"method": "Signal.send",
"params": {
"event": "string",
"data": "object"
}
}Tham số:
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| event | string | ✓ | Tên của kênh sự kiện |
| data | object | ✓ | Dữ liệu cần gửi qua kênh |
Ví dụ:
await client.send('Signal.send', {
event: 'mfa_code',
data: { code: '123456', type: 'sms' }
});Signal.wait
Chờ dữ liệu tín hiệu trên một kênh sự kiện được chỉ định.
Định dạng Yêu cầu:
{
"method": "Signal.wait",
"params": {
"event": "string",
"timeout": 60000
}
}Tham số:
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| event | string | ✓ | Tên của kênh sự kiện cần chờ |
| timeout | number | X | Thời gian chờ tối đa tính bằng mili giây (mặc định: 60000) |
Ví dụ:
const result = await client.send('Signal.wait', {
event: 'mfa_code',
timeout: 60000
});
console.log('Received MFA code:', result.data);Signal.list
Liệt kê tất cả các tên sự kiện đang chờ trong hàng đợi.
Định dạng Yêu cầu:
{
"method": "Signal.list",
"params": {}
}Tham số: Không yêu cầu
Ví dụ:
const list = await client.send('Signal.list');
console.log('Pending events:', list.events);
// Output: ["mfa_code", "captcha_result", "order_status"]
// Check for specific event
if (list.events.includes('mfa_code')) {
console.log('MFA code in queue');
}Signal.stats
Truy xuất thống kê hàng đợi và thông tin về người đăng ký.
Định dạng Yêu cầu:
{
"method": "Signal.stats",
"params": {}
}Tham số: Không yêu cầu
Trường Phản hồi:
| Trường | Kiểu | Mô tả |
|---|---|---|
| events | number | Danh sách tất cả các tên sự kiện đang chờ |
| waiters | number | Thông tin về những người đăng ký đang chờ |
Ví dụ:
const client = await page.target().createCDPSession();
// Get statistics
const stats = await client.send('Signal.stats');
console.log('Pending events:', stats.events);
console.log('Waiting subscribers:', stats.waiters);Signal.clear
Xóa các sự kiện được chỉ định hoặc tất cả các sự kiện khỏi hàng đợi.
Định dạng Yêu cầu:
{
"method": "Signal.clear",
"params": {
"event": "string (optional)"
}
}Tham số:
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| event | string | X | Sự kiện cụ thể cần xóa. Nếu bỏ trống, sẽ xóa tất cả các sự kiện |
HTTP REST API
Đối với các hệ thống bên ngoài, các điểm cuối HTTP REST cung cấp một giải pháp thay thế đơn giản hơn cho việc thiết lập kết nối CDP. Điều này loại bỏ nhu cầu thiết lập kết nối WebSocket cho mỗi lần truyền dữ liệu. Tìm hiểu thêm
Tiền tố Điểm cuối Trình duyệt Mặc định: https://browser.scrapeless.com/browser/{taskId}
POST /signal/send
Gửi một tín hiệu qua HTTP.
Định dạng Yêu cầu:
POST https://browser.scrapeless.com/browser/{taskId}/signal/send?x-api-token={API_KEY}
Content-Type: application/json
{
"event": "string",
"data": "object"
}Tham số:
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| event | string | ✓ | Tên của kênh sự kiện |
| data | object | ✓ | Dữ liệu cần gửi qua kênh |
Ví dụ:
curl -X POST 'https://browser.scrapeless.com/browser/{taskId}/signal/send?x-api-token={API_KEY}' \
-H 'Content-Type: application/json' \
-d '{
"event": "mfa_code",
"data": { "code": "123456", "type": "sms" }
}'GET /signal/wait
Chờ một tín hiệu qua yêu cầu HTTP GET.
Định dạng Yêu cầu:
GET https://browser.scrapeless.com/browser/{taskId}/signal/wait?x-api-token={API_KEY}&event={event}&timeout={timeout}Tham số:
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| event | string | ✓ | Tên của kênh sự kiện cần chờ |
| timeout | number | X | Thời gian chờ tối đa tính bằng mili giây (mặc định: 60000) |
Ví dụ:
# Wait for MFA code with 60 second timeout
curl -X GET 'https://browser.scrapeless.com/browser/{taskId}/signal/wait?x-api-token={API_KEY}&event=mfa_code&timeout=60000'GET /signal/list
Liệt kê tất cả các tên sự kiện đang chờ.
Định dạng Yêu cầu:
GET https://browser.scrapeless.com/browser/{taskId}/signal/list?x-api-token={API_KEY}Tham số: Không yêu cầu
Ví dụ:
# List all pending events
curl -X GET 'https://browser.scrapeless.com/browser/{taskId}/signal/list?x-api-token={API_KEY}'GET /signal/stats
Truy xuất thống kê hàng đợi.
Định dạng Yêu cầu:
GET https://browser.scrapeless.com/browser/{taskId}/signal/stats?x-api-token={API_KEY}Tham số: Không yêu cầu
Ví dụ:
# Get queue statistics
curl -X GET 'https://browser.scrapeless.com/browser/{taskId}/signal/stats?x-api-token={API_KEY}'DELETE /signal/clear
Xóa các sự kiện khỏi hàng đợi.
Định dạng Yêu cầu:
DELETE https://browser.scrapeless.com/browser/{taskId}/signal/clear?x-api-token={API_KEY}
Content-Type: application/json
{
"event": "string (optional)"
}Tham số:
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| event | string | X | Sự kiện cụ thể cần xóa. Nếu bỏ trống, sẽ xóa tất cả các sự kiện |
Ví dụ:
# Clear specific event
curl -X DELETE 'https://browser.scrapeless.com/browser/{taskId}/signal/clear?x-api-token={API_KEY}' \
-H 'Content-Type: application/json' \
-d '{"event": "mfa_code"}'
# Clear all events
curl -X DELETE 'https://browser.scrapeless.com/browser/{taskId}/signal/clear?x-api-token={API_KEY}'Thực hành Tốt nhất
Sử dụng Thời gian Chờ Phù hợp
Đặt các giá trị thời gian chờ dựa trên độ trễ xác minh dự kiến. Thời gian gửi MFA điển hình dao động từ 10-60 giây.
Xử lý Lỗi
Luôn kiểm tra mã trạng thái phản hồi (200, 408, 400) để xử lý các trường hợp thành công, hết thời gian chờ và lỗi một cách phù hợp.
Giám sát Hàng đợi
Thường xuyên kiểm tra thống kê hàng đợi để phát hiện các tình trạng tồn đọng có thể chỉ ra các vấn đề của hệ thống.
Đặt tên Kênh Sự kiện
Sử dụng các tên kênh sự kiện mang tính mô tả (ví dụ: mfa_code, email_verification, totp_token) để tránh nhầm lẫn trong các kịch bản nhiều sự kiện.
Xử lý Bất đồng bộ
Tận dụng xử lý tín hiệu bất đồng bộ để ngăn chặn việc chặn script trong khi chờ đầu vào của người dùng.
Dọn dẹp Hàng đợi
Xóa các sự kiện lỗi thời khỏi hàng đợi để duy trì hiệu suất hệ thống và ngăn chặn các vấn đề về bộ nhớ.
Hệ thống tín hiệu được thiết kế để hoạt động liền mạch với cả hai giao diện CDP và HTTP, cho phép bạn chọn phương thức phù hợp nhất cho trường hợp sử dụng cụ thể của mình. CDP cung cấp giao tiếp thời gian thực, độ trễ thấp, trong khi các điểm cuối HTTP REST mang lại sự đơn giản cho các tích hợp bên ngoài.
Ví dụ Hoàn chỉnh
const puppeteer = require('puppeteer-core');
(async () => {
const API_TOKEN = 'API Key';
const API_URL = 'https://api.scrapeless.com/api/v2/browser'; // Create session task API endpoint
try {
// Step 1: Get session taskId via HTTP API
const sessionResponse = await fetch(API_URL, {
method: 'GET',
headers: {'x-api-token': API_TOKEN},
});
const {taskId} = await sessionResponse.json();
console.log('Session created with task ID:', taskId);
// Step 2: Connect to browser by taskId
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://api.scrapeless.com/browser/${taskId}`,
headers: {'x-api-token': API_TOKEN},
});
// Step 3: Navigate to page and wait for signal
const page = await browser.newPage();
await page.goto("https://example.com", {waitUntil: "domcontentloaded"});
const client = await page.createCDPSession();
console.log('Waiting for example event...');
const result = await client.send('Signal.wait', {
event: 'example_event',
timeout: 60000
});
console.log('Received example data:', result.data);
await browser.close();
} catch (error) {
console.error('Error occurred:', error);
}
})();Hệ thống Tín hiệu Thời gian Thực của Agent Browser cung cấp một khung làm việc mạnh mẽ, linh hoạt để xử lý xác thực đa yếu tố trong các quy trình tự động hóa. Bằng cách kết hợp các giao diện CDP và HTTP với một hệ thống hàng đợi sự kiện thông minh, nó cho phép tích hợp liền mạch các hệ thống xác minh bên ngoài trong khi vẫn duy trì tính bảo mật và độ tin cậy.
Cho dù bạn đang xây dựng các script tự động hóa đơn giản hay các hệ thống điều phối đa hệ thống phức tạp, kiến trúc bất đồng bộ, không chặn của hệ thống tín hiệu đảm bảo các quy trình của bạn hoàn thành một cách đáng tin cậy—ngay cả khi cần xác minh MFA.