リアルタイムシグナリング
リアルタイムシグナリングは、自動化されたワークフローにおける非同期通信を処理するための高度なイベント駆動型システムです。このシグナルベースのアーキテクチャにより、自動化スクリプトと外部システム間のシームレスな相互作用が可能になり、多要素認証(MFA)の処理はその最も重要なアプリケーションの1つです。
概要
リアルタイムシグナリングシステムは、自動化ワークフローにおける非同期イベントを管理するための堅牢なフレームワークを提供します。MFA検証が主要なユースケースですが、このシステムの柔軟なアーキテクチャは多様なイベント駆動型シナリオをサポートします。
**多要素認証(MFA)**は、自動化されたワークフローにとってボトルネックとなり、障害やアカウントロックアウトを引き起こすことが多い重要なセキュリティ機能です。
MFA処理が自動化にとって重要である理由:
✅ 中断のないアクセスを確保: ワークフローを中断することなく、予期せぬSMSコード、メールOTP、またはTOTP認証を処理します。
✅ ワークフローのクラッシュを防止: 従来の自動化ではMFAプロンプトが表示されるとフリーズしますが、Scraping Browserはこれらをスムーズに処理します。
✅ 安定したセッションを維持: 安全な検証状態管理により、長時間実行されるタスクはログイン状態を維持します。
✅ アカウントリスクを軽減: 人間のような検証動作により、セキュリティトリガーの発生確率を低減します。
MFAを超えて: ユニバーサルイベントシステム
シグナリングシステムは認証を超えて、以下を処理します。
- フォーム送信とステータス更新
- タスク進捗通知
- APIコールバックとWebhook
- ユーザーインタラクションと状態変更
- システム間のプロセス調整
- リアルタイム監視とアラート
完全なシグナリングソリューション:
- 信頼性の高いMFA検証(主要なユースケース)
- 自動化ニーズに対応するユニバーサルイベント処理
- コードとデータのための複数の入力方法
- 非同期処理(非ブロッキング)
- 完全なCDPおよびHTTP APIサポート
- 認証フローとのユニバーサルな互換性
サポートされるAPI
Scrapelessは、リアルタイムシグナリングのためにCDPとHTTPの両方のインターフェースをサポートしています。
| API | CDPメソッド | HTTPエンドポイント | 説明 |
|---|---|---|---|
| シグナル送信 | Signal.send | POST /signal/send | イベントチャネルにデータを送信 |
| シグナル待機 | Signal.wait | GET /signal/wait | イベントチャネルでデータを待機 |
| イベントリスト | Signal.list | GET /signal/list | すべての保留中のイベント名をリスト表示 |
| 統計取得 | Signal.stats | GET /signal/stats | キュー統計を取得 |
| イベントクリア | Signal.clear | DELETE /signal/clear | 特定のイベントまたはすべてのイベントをクリア |
CDP API
Signal.send
指定されたイベントチャネルにシグナルデータを送信します。
リクエスト形式:
{
"method": "Signal.send",
"params": {
"event": "string",
"data": "object"
}
}パラメータ:
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| event | string | ✓ | イベントチャネルの名前 |
| data | object | ✓ | チャネルを通じて送信するデータ |
例:
await client.send('Signal.send', {
event: 'mfa_code',
data: { code: '123456', type: 'sms' }
});Signal.wait
指定されたイベントチャネルでシグナルデータを待機します。
リクエスト形式:
{
"method": "Signal.wait",
"params": {
"event": "string",
"timeout": 60000
}
}パラメータ:
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| event | string | ✓ | 待機するイベントチャネルの名前 |
| timeout | number | X | 待機する最大時間(ミリ秒単位、デフォルト: 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);応答フィールド:
| フィールド | タイプ | 説明 |
|---|---|---|
| events | number | すべての保留中のイベント名のリスト |
| waiters | number | 待機中のサブスクライバーに関する情報 |
Signal.clear
キューから指定されたイベントまたはすべてのイベントをクリアします。
リクエスト形式:
{
"method": "Signal.clear",
"params": {
"event": "string (optional)"
}
}パラメータ:
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| event | string | X | クリアする特定のイベント。省略した場合、すべてのイベントをクリア |
HTTP REST API
外部システムの場合、HTTP RESTエンドポイントはCDP接続設定よりもシンプルな代替手段を提供します。これにより、すべてのデータ送信のためにWebSocket接続を確立する必要がなくなります。
デフォルトのブラウザエンドポイントプレフィックス: https://browser.scrapeless.com/browser/{taskId}
POST /signal/send
HTTP経由でシグナルを送信します。
リクエストボディ:
{
"event": "string",
"data": "object"
}パラメータ:
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| event | string | ✓ | イベントチャネルの名前 |
| data | object | ✓ | チャネルを通じて送信するデータ |
GET /signal/wait
HTTP GETリクエスト経由でシグナルを待機します。
リクエストURL:
GET https://browser.scrapeless.com/browser/{taskId}/signal/wait?x-api-token={API_KEY}&event={event}&timeout={timeout}クエリパラメータ:
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| event | string | ✓ | 待機するイベントチャネルの名前 |
| timeout | number | X | 待機する最大時間(ミリ秒単位、デフォルト: 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)"
}パラメータ:
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| event | string | X | クリアする特定のイベント。省略した場合、すべてのイベントをクリア |
ベストプラクティス
適切なタイムアウトを使用する
予想される検証遅延に基づいてタイムアウト値を設定します。一般的なMFA配信時間は10〜60秒です。
エラー処理
成功、タイムアウト、エラーケースを適切に処理するために、常に応答ステータスコード(200、408、400)を確認してください。
キュー監視
システムの問題を示す可能性のあるバックログ状態を検出するために、定期的にキュー統計を確認してください。
イベントチャネルの命名
複数のイベントシナリオでの混乱を避けるために、記述的なイベントチャネル名(例:mfa_code、email_verification、totp_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検証が必要な場合でも、ワークフローが確実に完了することを保証します。