この記事では、よくある疑問にできるだけお答えしました。まず最初のステップは、どのような保護システムが使われているかを特定することです。そのために、代表的なキャプチャやボット対策システムの一覧を参照できます。ここには、どの仕組みが使われているかを素早く見分けるための画面イメージや主な特徴がまとめられています。
もしサイトで テキストCAPTCHA (ImageToText) が使われていることが分かったら、次のステップはその特徴と動作をより詳しく確認することです。同じこの記事の中で、テキストCAPTCHA (ImageToText) をサイトに導入するための手順書も確認できるので、あなたのサイト上でどのように機能しているのかをしっかり理解できます。これにより、現在の保護を正しく把握できるだけでなく、今後の運用や保守も計画的に行えるようになります。
CapMonster Cloudを使ったImageToText CAPTCHAの解決方法
- フォームページを開き、CAPTCHAが表示されていることを確認します。
- CAPTCHAを解かずにフォームを送信してみてください — サーバーはエラーを返すはずです。
- CAPTCHAを正しく解いた後、フォームはエラーなしで送信されるはずです。
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生成を実装
ベンダーの場合
- サービスに登録
- キーを取得 (site key / secret key)
- フォームページにスクリプトを追加
カスタムCAPTCHAの場合
- ランダム文字列を生成(数字または文字)
- 画像上に描画(Canvas、SVG、またはサーバーサイド生成)
- 歪みを追加:ノイズ、線、文字の回転
ステップ3. CAPTCHAをユーザーに表示
- フォームの横にCAPTCHA画像を配置
- テキスト入力フィールドを追加
- CAPTCHA更新ボタンを実装
重要: ロードごとに新しいコードを生成する必要があります。
ステップ4. サーバーにデータを送信
フォーム送信時に送信する内容:
- ユーザーが入力したテキスト
- CAPTCHA識別子またはセッショントークン
カスタムCAPTCHAの場合、コードはクライアント側に保存せず、サーバー側のみで保持してください。
ステップ5. サーバーでCAPTCHAを確認
ベンダーの場合
- CAPTCHAトークンをベンダーのサーバーに送信
- 検証結果を取得(成功/エラー)
カスタムCAPTCHAの場合
- 入力テキストと保存値を比較
- CAPTCHAの有効期限を考慮(例:1〜2分)
ステップ6. 処理を決定
- CAPTCHAが通った場合 — 処理を実行(ログイン、登録、フォーム送信)
- 通らなかった場合 — エラーを表示し、新しいCAPTCHAを生成
ステップ7. セキュリティを強化(推奨)
テキストCAPTCHAでも、以下を追加することを推奨します:
- 試行回数の制限
- IP、セッション、またはCookieへの紐付け
- 一時トークン(ワンタイム)
- 疑わしい操作のログ記録
以下を確認してください:
- 検証前にCAPTCHAが再生成されていないこと;
- コードは各セッションまたはトークンごとに別々に保存されていること;
- CAPTCHAの有効期限が切れていないこと。
サポートされているキャプチャ
既にCAPTCHAやその他の保護システムが設置されたサイトで、コードにアクセスできない場合でも心配無用です。どの技術が使われているかを特定するのは簡単です。正しい動作確認には、CapMonster Cloudの認識サービスを分離されたテスト環境で使用して、トークン処理と検証ロジックが正しく機能するか確認できます。
画像CAPTCHAの場合、システムを特定し、動作を確認し、保護が正しく機能していることを確認すれば十分です。本記事では、画像CAPTCHA(ComplexImage)の特定方法、接続や再設定の方法を示し、保護を安全に維持・管理する方法を紹介しました。