CDP API

Scrapeless Scraping Browserは、標準的なCDP(Chrome DevTools Protocol)機能を拡張し、ブラウザの自動化機能を強化するための強力なカスタム関数を一連追加しています。このドキュメントでは、主にCAPTCHA処理に関連するCDP関数を扱います。

CAPTCHAソルバー機能

機能概要

Scraping Browserには、Webページ上で遭遇する一般的なCAPTCHAタイプを自動的に処理できる、高度なCAPTCHA解決機能が含まれています。

サポートされているCAPTCHAタイプ

  • reCaptcha
  • Cloudflare Turnstile
  • Cloudflare 5s Challenge
  • AWS WAF

イベント監視メカニズム

コアイベント

Scraping Browserは、CAPTCHA解決プロセスを監視するための3つのコアイベントを提供します。

イベント名説明
Captcha.detectedCAPTCHA検出
Captcha.solveFinishedCAPTCHA解決完了
Captcha.solveFailedCAPTCHA解決失敗

イベントレスポンスデータ構造

フィールドタイプ説明
typestringCAPTCHAタイプ: recaptcha turnstile
successboolean解決結果
messagestringステータスメッセージ: "NOT_DETECTED" "SOLVE_FINISHED" "SOLVE_FAILED" "INVALID"
token?string成功時に返されるトークン(オプション)

実装例

// CAPTCHA解決イベントをリッスンします
const client = await page.createCDPSession();
 
client.on('Captcha.detected', (result) => {
  console.log('Captcha detected:', result);
});
 
await new Promise((resolve, reject) => {
  client.on('Captcha.solveFinished', (result) => {
    if (result.success) resolve();
  });
  client.on('Captcha.solveFailed', () =>
    reject(new Error('Captcha solve failed'))
  );
  setTimeout(() =>
      reject(new Error('Captcha solve timeout')),
    5 * 60 * 1000
  );
});

高度な設定API

Scraping Browserは、CAPTCHAソルバーの動作を細かく制御するための高度なAPIを提供します。以下のAPIがサポートされています。

API名説明
Captcha.setAutoSolve自動CAPTCHA解決動作を制御します
Captcha.setTokenCAPTCHAサービスの認証トークンを設定します
Captcha.setConfigすべてのCAPTCHAソルバーパラメーターを設定します
Captcha.solveCAPTCHA解決プロセスを手動でトリガーします

詳細なAPIの説明

1. Captcha.setAutoSolve

自動CAPTCHA解決動作を制御するための設定インターフェース。

const client = await page.createCDPSession();
await client.send('Captcha.setAutoSolve', {
    autoSolve: false,
    options: [{
        type: 'recaptcha',  // オプション: recaptcha | turnstile
        disabled: false,
    }]
});

2. Captcha.setToken

CAPTCHA解決サービスの認証トークンを設定します。

await client.send('Captcha.setToken', {
    apiKey: 'your-token'
});

3. Captcha.setConfig

CAPTCHAソルバーのすべてのパラメーターを設定します。

await client.send('Captcha.setConfig', {
    config: JSON.stringify(
        {
            apiKey: "your-token",
            autoSolve: true,
            enabledForRecaptcha: true,
            enabledForRecaptchaV3: true,
            enabledForTurnstile: true
        }
    )
});

4. Captcha.solve

CAPTCHA解決プロセスを手動でトリガーします。

const result = await client.send('Captcha.solve', {
    detectTimeout: 10 * 1000,
    options: JSON.stringify([{
        type: 'rcaptcha',
        disabled: true,  // rCaptchaの解決を無効化します
    }])
});
console.log(result);  // { type: 'recaptcha', success: true, message: 'solve_finished', token: 'xxx' }