Browser特徴Real-time Signaling (MFA)

リアルタイムシグナリング

リアルタイムシグナリングは、自動化されたワークフローにおける非同期通信を処理するための高度なイベント駆動型システムです。このシグナルベースのアーキテクチャにより、自動化スクリプトと外部システム間のシームレスな相互作用が可能になり、多要素認証(MFA)の処理はその最も重要なアプリケーションの1つです。

概要

リアルタイムシグナリングシステムは、自動化ワークフローにおける非同期イベントを管理するための堅牢なフレームワークを提供します。MFA検証が主要なユースケースですが、このシステムの柔軟なアーキテクチャは多様なイベント駆動型シナリオをサポートします。

**多要素認証(MFA)**は、自動化されたワークフローにとってボトルネックとなり、障害やアカウントロックアウトを引き起こすことが多い重要なセキュリティ機能です。

MFA処理が自動化にとって重要である理由:

中断のないアクセスを確保: ワークフローを中断することなく、予期せぬSMSコード、メールOTP、またはTOTP認証を処理します。

ワークフローのクラッシュを防止: 従来の自動化ではMFAプロンプトが表示されるとフリーズしますが、Scraping Browserはこれらをスムーズに処理します。

安定したセッションを維持: 安全な検証状態管理により、長時間実行されるタスクはログイン状態を維持します。

アカウントリスクを軽減: 人間のような検証動作により、セキュリティトリガーの発生確率を低減します。

MFAを超えて: ユニバーサルイベントシステム

シグナリングシステムは認証を超えて、以下を処理します。

  • フォーム送信とステータス更新
  • タスク進捗通知
  • APIコールバックとWebhook
  • ユーザーインタラクションと状態変更
  • システム間のプロセス調整
  • リアルタイム監視とアラート

完全なシグナリングソリューション:

  • 信頼性の高いMFA検証(主要なユースケース)
  • 自動化ニーズに対応するユニバーサルイベント処理
  • コードとデータのための複数の入力方法
  • 非同期処理(非ブロッキング)
  • 完全なCDPおよびHTTP APIサポート
  • 認証フローとのユニバーサルな互換性

サポートされるAPI

Scrapelessは、リアルタイムシグナリングのためにCDPHTTPの両方のインターフェースをサポートしています。

APICDPメソッドHTTPエンドポイント説明
シグナル送信Signal.sendPOST /signal/sendイベントチャネルにデータを送信
シグナル待機Signal.waitGET /signal/waitイベントチャネルでデータを待機
イベントリストSignal.listGET /signal/listすべての保留中のイベント名をリスト表示
統計取得Signal.statsGET /signal/statsキュー統計を取得
イベントクリアSignal.clearDELETE /signal/clear特定のイベントまたはすべてのイベントをクリア

CDP API

Signal.send

指定されたイベントチャネルにシグナルデータを送信します。

リクエスト形式:

{
  "method": "Signal.send",
  "params": {
    "event": "string",
    "data": "object"
  }
}

パラメータ:

パラメータタイプ必須説明
eventstringイベントチャネルの名前
dataobjectチャネルを通じて送信するデータ

例:

await client.send('Signal.send', {
  event: 'mfa_code',
  data: { code: '123456', type: 'sms' }
});

Signal.wait

指定されたイベントチャネルでシグナルデータを待機します。

リクエスト形式:

{
  "method": "Signal.wait",
  "params": {
    "event": "string",
    "timeout": 60000
  }
}

パラメータ:

パラメータタイプ必須説明
eventstring待機するイベントチャネルの名前
timeoutnumberX待機する最大時間(ミリ秒単位、デフォルト: 60000)

例:

const result = await client.send('Signal.wait', {
  event: 'mfa_code',
  timeout: 60000
});
console.log('Received MFA code:', result.data);

Signal.list

キュー内のすべての保留中のイベント名をリスト表示します。

リクエスト形式:

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

キュー統計とサブスクライバー情報を取得します。

リクエスト形式:

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

応答フィールド:

フィールドタイプ説明
eventsnumberすべての保留中のイベント名のリスト
waitersnumber待機中のサブスクライバーに関する情報

Signal.clear

キューから指定されたイベントまたはすべてのイベントをクリアします。

リクエスト形式:

{
  "method": "Signal.clear",
  "params": {
    "event": "string (optional)"
  }
}

パラメータ:

パラメータタイプ必須説明
eventstringXクリアする特定のイベント。省略した場合、すべてのイベントをクリア

HTTP REST API

外部システムの場合、HTTP RESTエンドポイントはCDP接続設定よりもシンプルな代替手段を提供します。これにより、すべてのデータ送信のためにWebSocket接続を確立する必要がなくなります。

デフォルトのブラウザエンドポイントプレフィックス: https://browser.scrapeless.com/browser/{taskId}

POST /signal/send

HTTP経由でシグナルを送信します。

リクエストボディ:

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

パラメータ:

パラメータタイプ必須説明
eventstringイベントチャネルの名前
dataobjectチャネルを通じて送信するデータ

GET /signal/wait

HTTP GETリクエスト経由でシグナルを待機します。

リクエストURL:

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

クエリパラメータ:

パラメータタイプ必須説明
eventstring待機するイベントチャネルの名前
timeoutnumberX待機する最大時間(ミリ秒単位、デフォルト: 60000)

GET /signal/list

すべての保留中のイベント名をリスト表示します。

リクエストURL:

GET https://browser.scrapeless.com/browser/{taskId}/signal/list?x-api-token={API_KEY}

GET /signal/stats

キュー統計を取得します。

リクエストURL:

GET https://browser.scrapeless.com/browser/{taskId}/signal/stats?x-api-token={API_KEY}

DELETE /signal/clear

キューからイベントをクリアします。

リクエストボディ:

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

パラメータ:

パラメータタイプ必須説明
eventstringXクリアする特定のイベント。省略した場合、すべてのイベントをクリア

ベストプラクティス

適切なタイムアウトを使用する

予想される検証遅延に基づいてタイムアウト値を設定します。一般的なMFA配信時間は10〜60秒です。

エラー処理

成功、タイムアウト、エラーケースを適切に処理するために、常に応答ステータスコード(200、408、400)を確認してください。

キュー監視

システムの問題を示す可能性のあるバックログ状態を検出するために、定期的にキュー統計を確認してください。

イベントチャネルの命名

複数のイベントシナリオでの混乱を避けるために、記述的なイベントチャネル名(例:mfa_codeemail_verificationtotp_token)を使用してください。

非同期処理

ユーザー入力を待機中にスクリプトのブロックを防ぐために、非同期シグナル処理を活用してください。

キューのクリーンアップ

システムパフォーマンスを維持し、メモリの問題を防ぐために、古いイベントをキューからクリアしてください。

統合のヒント

シグナルシステムは、CDPとHTTPインターフェースの両方でシームレスに動作するように設計されており、特定のユースケースに最も適切な方法を選択できます。CDPはリアルタイムで低遅延の通信を提供し、HTTP RESTエンドポイントは外部統合のためのシンプルさをもたらします。

完全な例

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

Scraping Browserのリアルタイムシグナリングシステムは、自動化されたワークフローで多要素認証を処理するための堅牢で柔軟なフレームワークを提供します。CDPとHTTPインターフェースをインテリジェントなイベントキューシステムと組み合わせることで、セキュリティと信頼性を維持しながら、外部検証システムのシームレスな統合を可能にします。

シンプルな自動化スクリプトを構築している場合でも、複雑なマルチシステムオーケストレーションを構築している場合でも、シグナルシステムの非同期、非ブロッキングアーキテクチャは、MFA検証が必要な場合でも、ワークフローが確実に完了することを保証します。