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.detected | CAPTCHA検出 |
Captcha.solveFinished | CAPTCHA解決完了 |
Captcha.solveFailed | CAPTCHA解決失敗 |
イベント応答データ構造
フィールド | タイプ | 説明 |
---|---|---|
type | string | CAPTCHAの種類: recaptcha turnstile |
success | boolean | 解決結果 |
message | string | ステータスメッセージ: "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.setToken | CAPTCHAサービスの認証トークンを設定する |
Captcha.setConfig | すべてのCAPTCHAソルバーパラメータを設定する |
Captcha.solve | CAPTCHA解決プロセスを手動でトリガーする |
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' }