logo
bars

テキストCAPTCHA (ImageToText)
とCapMonster Cloud

CAPTCHAの解決、ウェブサイトへの導入、テスト。
キャプチャや防御機構が導入済みのサイトを引き継いだのに、ソースコードへアクセスできない? その場合、どの仕組みが入っているのか、設定は正しいのか、どう検証するのかが気になります。

この記事では、よくある疑問にできるだけお答えしました。まず最初のステップは、どのような保護システムが使われているかを特定することです。そのために、代表的なキャプチャやボット対策システムの一覧を参照できます。ここには、どの仕組みが使われているかを素早く見分けるための画面イメージや主な特徴がまとめられています。

もしサイトで ImageToText が使われていることが分かったら、次のステップはその特徴と動作をより詳しく確認することです。同じこの記事の中で、ImageToText をサイトに導入するための手順書も確認できるので、あなたのサイト上でどのように機能しているのかをしっかり理解できます。これにより、現在の保護を正しく把握できるだけでなく、今後の運用や保守も計画的に行えるようになります。

ImageToText CAPTCHAとは
ImageToText CAPTCHAとは
ImageToText CAPTCHAは、画像から文字を認識することに基づいたクラシックなウェブサイト保護システムです。ユーザーは、歪んだ画像に表示された文字(アルファベット、数字、またはその組み合わせ)を入力する必要があります。この方法は、人間と自動化スクリプトを区別するのに役立ちます。登録フォーム、ログイン、メッセージ送信、コメント、または大量の自動リクエストの防止に使用されます。

CapMonster Cloudを使ったImageToText CAPTCHAの解決方法

ImageToText CAPTCHAを使用したフォームをテストする際、CAPTCHAが正しく機能し、正しく統合されていることを確認する必要があります。
ウェブサイトに実装されたCAPTCHAを手動でテストできます:
  • フォームページを開き、CAPTCHAが表示されていることを確認します。
  • CAPTCHAを解かずにフォームを送信してみてください — サーバーはエラーを返すはずです。
  • CAPTCHAを正しく解いた後、フォームはエラーなしで送信されるはずです。
CAPTCHAを自動で認識する場合CapMonster Cloudのような専門サービスを利用できます — これはCAPTCHAのパラメータを受け取り、自社サーバーで処理し、解答を返すツールです。この解答を適切なフィールドに入力することで、ユーザーの介入なしに認証を完了できます。

CapMonster Cloud API を使った一般的な手順:

タスクの作成タスクの作成
arrow
API リクエストの送信API リクエストの送信
arrow
結果の受信結果の受信
arrow
トークンをページへ適用トークンをページへ適用
arrow
準備されたライブラリを使用した画像CAPTCHA認識
CapMonster Cloudサービスは、PythonJavaScript (Node.js)、C#向けに便利なライブラリを提供しています。
Python
JavaScript
C#
解答の取得、入力、フォーム送信
あなたのウェブページ上でのCAPTCHA認識の全サイクルをNode.jsで例示。可能なアプローチ:HTTPリクエストでHTMLと保護システムのパラメータを取得し、解答を送信して結果を処理。または下記例のようにPlaywrightなどの自動化ツールを使い、ページを開き、検証を待ち、CapMonster Cloudクライアントを通じてパラメータを送信し、結果を取得して適切なフィールドに入力(テスト用に正しいデータや誤ったデータも使用可)、結果を確認。

  // 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);


  
自分のサイトにテキストCAPTCHAを接続する方法
サイト上のCAPTCHAの動作、検証ロジックを理解したり、再接続・再設定するには、このセクションを学習することをおすすめします。保護機能の統合プロセスを説明し、すべてのポイントを迅速に理解できるようにしています。

ステップ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への紐付け
  • 一時トークン(ワンタイム)
  • 疑わしい操作のログ記録
Background
想定されるエラーとデバッグ
Bug Icon
画像CAPTCHAが読み込まれません
(空画像、404/500、生成エラー) — 多くの場合、生成ロジックの誤りが原因です。サーバーが正しく画像を生成し、クライアントに返していること、エンドポイントのパスが正しいことを確認してください。
Bug Icon
無効または空のCAPTCHAコード
ユーザー入力がサーバーに正しく送信され、保存されたCAPTCHA値と比較されているか確認してください。
Bug Icon
正しい入力でもコードが一致しない

以下を確認してください:

  • 検証前にCAPTCHAが再生成されていないこと;
  • コードは各セッションまたはトークンごとに別々に保存されていること;
  • CAPTCHAの有効期限が切れていないこと。
Bug Icon
CAPTCHAの有効期限が切れています
サーバー側でCAPTCHAのTTLを延長するか、再入力時に更新してください。
保護の堅牢性チェック
統合後は、システムが本当に自動化された操作からサイトを守れているか確認しましょう。
セキュリティと最適化のヒント
正しいCAPTCHAの答えは<b>サーバー</b>のみで保存(メモリ、Redis、DB)、クライアントには渡さない。
ワンタイムトークンやCAPTCHA識別子を使用。
1つのCAPTCHAに対する入力試行回数を制限。
フォームデータとCAPTCHA回答の送信には常にHTTPSを使用。
生成や検証エラーをログ記録(時間、IP、拒否理由) — デバッグや攻撃分析が容易に。
生成アルゴリズム(フォント、歪み、ノイズ)を定期的に更新。
まとめ

既にCAPTCHAやその他の保護システムが設置されたサイトで、コードにアクセスできない場合でも心配無用です。どの技術が使われているかを特定するのは簡単です。正しい動作確認には、CapMonster Cloudの認識サービスを分離されたテスト環境で使用して、トークン処理と検証ロジックが正しく機能するか確認できます。

画像CAPTCHAの場合、システムを特定し、動作を確認し、保護が正しく機能していることを確認すれば十分です。本記事では、画像CAPTCHA(ComplexImage)の特定方法、接続や再設定の方法を示し、保護を安全に維持・管理する方法を紹介しました。

Conclusion
参考リンク
DocIconCapMonster Cloudドキュメント(テキストCAPTCHAの操作)DocIcon独自CAPTCHAの作成ガイドDocIconCapMonster Cloudの登録