CDP API

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

CAPTCHAソルバー機能

機能概要

Scraping Browserには、ウェブページに表示される一般的なCAPTCHAの種類を自動的に処理できる高度なCAPTCHA解決機能が含まれています。

サポートされているCAPTCHAの種類

  • reCaptcha
  • Cloudflare Turnstile

イベント監視メカニズム

主要イベント

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', {
    apiKey: 'your-token',
    autoSolve: true,
    enabledForRecaptcha: true,    // reCAPTCHA解決を有効化
    enabledForRecaptchaV3: true,  // reCAPTCHA v3解決を有効化
    enabledForTurnstile: true    // Turnstile解決を有効化
});

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