この記事では、よくある疑問にできるだけお答えしました。まず最初のステップは、どのような保護システムが使われているかを特定することです。そのために、代表的なキャプチャやボット対策システムの一覧を参照できます。ここには、どの仕組みが使われているかを素早く見分けるための画面イメージや主な特徴がまとめられています。
もしサイトで ImageToText が使われていることが分かったら、次のステップはその特徴と動作をより詳しく確認することです。同じこの記事の中で、ImageToText をサイトに導入するための手順書も確認できるので、あなたのサイト上でどのように機能しているのかをしっかり理解できます。これにより、現在の保護を正しく把握できるだけでなく、今後の運用や保守も計画的に行えるようになります。
CapMonster Cloud API を使った一般的な手順:
type - ImageToTextTask
body - CAPTCHAファイルの内容をbase64でエンコードしたもの。値は改行なしで1行として送信してください;
capMonsterModule(オプション) - モジュール名、例:“yandex”。モジュール名の指定方法や利用可能な全モジュールの一覧は こちら を参照してください;
他のオプションパラメータも設定できます:
recognizingThreshold - CAPTCHA認識の閾値、0〜100の値が可能;
case - 大文字小文字を区別するかどうか。可能な値: true, false;
numeric - 1 — CAPTCHAが数字のみの場合。値: 0, 1;
math - false — デフォルトでは設定されていません;
true — CAPTCHAが数学演算を必要とする場合(例:2 + 6 のCAPTCHAは8となります)。
重要: captcha_mathモジュールではmath: trueパラメータを使用しないでください。
https://api.capmonster.cloud/createTask{
"clientKey":"API_KEY",
"task": {
"type":"ImageToTextTask",
"body":"BASE64_BODY_HERE!"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId":0,
"status":"ready",
"solution": {
"text":"answer"
}
}
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
import { CapMonsterCloudClientFactory, ClientOptions, ImageToTextRequest, CapMonsterModules } from '@zennolab_com/capmonstercloud-client';
import { chromium } from 'playwright';
const API_KEY = "YOUR_API_KEY"; // CapMonster CloudのAPIキーを入力してください
async function solveImageToTextAndFillField() {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// 必要に応じて残高を確認できます
const balance = await cmcClient.getBalance();
console.log("Balance:", balance);
// 1. Playwrightを起動し、フォームのページを開く
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext();
const page = await context.newPage();
await page.goto("https://example.com/form"); // 2. ページからCAPTCHAのURLを取得(例:<img>セレクター使用)
// 2. ページからCAPTCHAのURLを取得(例:<img>セレクター使用)
const captchaUrl = await page.getAttribute("#captcha-img", "src");
// 3. 画像をダウンロードし、Base64に変換
const response = await fetch(captchaUrl);
const imageBuffer = await response.arrayBuffer();
const imageBase64 = Buffer.from(imageBuffer).toString('base64');
// 4. ImageToText解決リクエストを作成
const imageToTextRequest = new ImageToTextRequest({
body: imageBase64,
CapMonsterModule: CapMonsterModules.YandexWave, // または他のモジュール
Case: true,
numeric: 0,
recognizingThreshold: 65,
math: false
});
// 5. CAPTCHAの解答を取得
const result = await cmcClient.Solve(imageToTextRequest);
console.log("Captcha solution:", result.solution.text);
// 6. 解答をフォームフィールドに挿入し送信
await page.fill("#captcha-input", result.solution.text); // 自身のセレクターに置き換えてください
await page.click("#submit-button"); // 自身のボタンセレクターに置き換えてください
await page.waitForLoadState("networkidle");
console.log("CAPTCHA解答付きでフォームが送信されました");
// 7. ブラウザを閉じる
await browser.close();
}
solveImageToTextAndFillField().catch(console.error);
ステップ1. 方法を選択
まず、CAPTCHAをどのように使用するかを決定します:
オプション1 — サードパーティベンダー
迅速な導入と最小限の保守が必要な場合に適しています。
メリット:
デメリット:
オプション2 — カスタムテキストCAPTCHA
完全な制御と独自の統合が必要な場合に適しています。
メリット:
デメリット:
ステップ2. CAPTCHA生成を実装
ベンダーの場合
カスタムCAPTCHAの場合
ステップ3. CAPTCHAをユーザーに表示
重要: ロードごとに新しいコードを生成する必要があります。
ステップ4. サーバーにデータを送信
フォーム送信時に送信する内容:
カスタムCAPTCHAの場合、コードはクライアント側に保存せず、サーバー側のみで保持してください。
ステップ5. サーバーでCAPTCHAを確認
ベンダーの場合
カスタムCAPTCHAの場合
ステップ6. 処理を決定
ステップ7. セキュリティを強化(推奨)
テキストCAPTCHAでも、以下を追加することを推奨します:
以下を確認してください:
既にCAPTCHAやその他の保護システムが設置されたサイトで、コードにアクセスできない場合でも心配無用です。どの技術が使われているかを特定するのは簡単です。正しい動作確認には、CapMonster Cloudの認識サービスを分離されたテスト環境で使用して、トークン処理と検証ロジックが正しく機能するか確認できます。
画像CAPTCHAの場合、システムを特定し、動作を確認し、保護が正しく機能していることを確認すれば十分です。本記事では、画像CAPTCHA(ComplexImage)の特定方法、接続や再設定の方法を示し、保護を安全に維持・管理する方法を紹介しました。