BrowserTính năngReal-time Signaling (MFA)

Tín hiệu thời gian thực

Tín hiệu thời gian thực là một hệ thống điều khiển theo sự kiện nâng cao để xử lý giao tiếp không đồ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 tập lệnh tự động hóa và các hệ thống bên ngoài, với 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 khuôn khổ mạnh mẽ để quản lý các sự kiện không đồng bộ trong các quy trình tự động hóa. Mặc dù xác minh MFA là 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 điều khiển theo sự kiện khác nhau.

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 bị gián đoạn: Xử lý các mã SMS, OTP email hoặc xác thực TOTP không mong muốn mà không làm gián đoạn quy trình làm việc

Ngăn chặn sự cố quy trình làm việc: Tự động hóa truyền thống bị đóng băng khi lời nhắc MFA xuất hiện, trong khi Scraping Browser xử lý những điều này một cách trơn tru

Duy trì các phiên ổn định: Các tác vụ chạy dài vẫn được đă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 bảo mật

Ngoài MFA: Hệ thống sự kiện phổ quát

Hệ thống tín hiệu mở rộng 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ụ
  • 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 quy 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 phổ quát cho nhu cầu tự động hóa
  • Nhiều phương thức nhập cho mã và dữ liệu
  • Xử lý không đồng bộ (không chặn)
  • Hỗ trợ đầy đủ CDP và HTTP API
  • Khả năng tương thích phổ quát với các luồng xác thực

API được hỗ trợ

Scrapeless hỗ trợ cả giao diện CDPHTTP cho tín hiệu thời gian thực:

APIPhương thức CDPĐiểm cuối HTTPMô tả
Gửi tín hiệuSignal.sendPOST /signal/sendGửi dữ liệu đến một kênh sự kiện
Chờ tín hiệuSignal.waitGET /signal/waitChờ dữ liệu trên một kênh sự kiện
Liệt kê sự kiệnSignal.listGET /signal/listLiệt kê tất cả các tên sự kiện đang chờ xử lý
Lấy thống kêSignal.statsGET /signal/statsTruy xuất thống kê hàng đợi
Xóa sự kiệnSignal.clearDELETE /signal/clearXóa các sự kiện cụ thể hoặc tất cả các sự kiện

API CDP

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ốLoạiBắt buộcMô tả
eventstringTên của kênh sự kiện
dataobjectDữ liệu để 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ốLoạiBắt buộcMô tả
eventstringTên của kênh sự kiện để chờ
timeoutnumberXThờ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ờ xử lý trong hàng đợi.

Định dạng yêu cầu:

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');
}

Tham số: Không bắt buộc

Signal.stats

Truy xuất thống kê hàng đợi và thông tin người đăng ký.

Định dạng yêu cầu:

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);

Trường phản hồi:

TrườngLoạiMô tả
eventsnumberDanh sách tất cả các tên sự kiện đang chờ xử lý
waitersnumberThông tin về người đăng ký đang chờ

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ốLoạiBắt buộcMô tả
eventstringXSự kiện cụ thể để xóa. Nếu bỏ qua, xóa tất cả các sự kiện

API REST HTTP

Đố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.

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 tín hiệu qua HTTP.

Nội dung yêu cầu:

{
  "event": "string",
  "data": "object"
}

Tham số:

Tham sốLoạiBắt buộcMô tả
eventstringTên của kênh sự kiện
dataobjectDữ liệu để gửi qua kênh

GET /signal/wait

Chờ tín hiệu qua yêu cầu GET HTTP.

URL yêu cầu:

GET https://browser.scrapeless.com/browser/{taskId}/signal/wait?x-api-token={API_KEY}&event={event}&timeout={timeout}

Tham số truy vấn:

Tham sốLoạiBắt buộcMô tả
eventstringTên của kênh sự kiện để chờ
timeoutnumberXThời gian chờ tối đa tính bằng mili giây (mặc định: 60000)

GET /signal/list

Liệt kê tất cả các tên sự kiện đang chờ xử lý.

URL yêu cầu:

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.

URL yêu cầu:

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.

Nội dung yêu cầu:

{
  "event": "string (optional)"
}

Tham số:

Tham sốLoạiBắt buộcMô tả
eventstringXSự kiện cụ thể để xóa. Nếu bỏ qua, xóa tất cả các sự kiện

Các phương pháp hay nhất

Sử dụng thời gian chờ thích hợp

Đặt 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 thích 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 điều kiện tồn đọng có thể cho thấy các vấn đề của hệ thống.

Đặt tên kênh sự kiện

Sử dụng tên kênh sự kiện mô tả (ví dụ: mfa_code, email_verification, totp_token) để tránh nhầm lẫn trong các kịch bản đa sự kiện.

Xử lý không đồng bộ

Tận dụng xử lý tín hiệu không đồng bộ để ngăn chặn tập lệnh bị chặn trong khi chờ nhập liệu 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 ngừa các vấn đề về bộ nhớ.

Mẹo tích hợp

Hệ thống tín hiệu được thiết kế để hoạt động liền mạch với cả giao diện CDP và HTTP, cho phép bạn chọn phương pháp 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 ID 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 via WebSocket
        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 Scraping Browser cung cấp một khuôn khổ 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ì bảo mật và độ tin cậy.

Cho dù bạn đang xây dựng các tập lệnh tự động hóa đơn giản hay các dàn xếp đa hệ thống phức tạp, kiến trúc không đồng bộ, không chặn của hệ thống tín hiệu đảm bảo các quy trình làm việc của bạn hoàn thành đáng tin cậy—ngay cả khi cần xác minh MFA.