Prosopo Procaptcha
と CapMonster Cloud

キャプチャの解決、サイトへの設置、テスト。

Prosopo Procaptchaソリューションの価格

キャプチャ
価格 (USD)
$ 1.30
1000トークン
キャプチャや防御機構が導入済みのサイトを引き継いだのに、ソースコードへアクセスできない? その場合、どの仕組みが入っているのか、設定は正しいのか、どう検証するのかが気になります。

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

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

Procaptchaとは
Procaptchaとは
ProcaptchaはProsopo社が開発した保護システムで、スパムやサイトに害を与える可能性のある自動操作を防ぐために作られています。これにより、実際のユーザーとボットを区別し、ウェブサイトの安全性と安定性を確保します。システムが訪問者の正当性に疑いを持つ場合、確認のためのタスク(例えば特定の画像の選択)を提示しますが、実際のユーザーにとっては利用が快適で妨げられません。
Background
Prosopo Procaptcha の例
Frictionless CAPTCHA
Frictionless CAPTCHA
インビジブルキャプチャ。訪問者が実際のユーザーかボットかを自動的に判断します。ユーザーが自然な行動をしていれば(通常のブラウザで自動化なし)、キャプチャは目立たず解決されます。ボットの兆候がある場合、追加のimageタスクが表示されます。
Proof of Work (PoW) CAPTCHA
Proof of Work (PoW) CAPTCHA
計算タスクに基づくキャプチャ。デバイスがバックグラウンドで小さな計算タスクを解くようにします。主な目的は、大量のボットやスパムを阻止することです。自動化システムはタスクに時間とリソースを費やす必要があり、人間にとってはほとんど気づかれません。
Image CAPTCHA
Image CAPTCHA
クラシックな視覚キャプチャ。画像を表示し、条件に合うものを選択させます(例:「すべての馬を選択してください」)。

CapMonster CloudでProcaptchaを解決する方法

Prosopo Procaptcha を含むフォームをテストする際は、キャプチャが正しく組み込まれ機能しているか確認する必要があります。

サイトに埋め込まれたキャプチャを手動で確認する方法

  • フォームのページを開き、キャプチャが表示されることを確かめます。
  • 解決せずにフォーム送信を試みると、サーバーはエラーを返すはずです。
  • 正しく解決した後は、問題なく送信できる必要があります。

自動解決には CapMonster Cloud のようなツールを使うと便利です。キャプチャのパラメータを送信すると、サーバー側で処理して利用可能なトークンを返してくれます。そのトークンをフォームに挿入すれば、ユーザー操作なしでチェックを通過できます。

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

タスクの作成タスクの作成
arrow
API リクエストの送信API リクエストの送信
arrow
結果の受信結果の受信
arrow
トークンをページへ適用トークンをページへ適用
arrow
既存ライブラリを使用したProcaptchaの認識
CapMonster Cloudサービスは、PythonJavaScript(Node.js)、C#での便利な操作用のライブラリを提供しています。
Python
JavaScript
C#
解決、トークン挿入、フォーム送信
Node.jsでの例:ウェブページ上のキャプチャをフルサイクルで認識する方法。アプローチ例:HTMLとキャプチャパラメータを取得するHTTPリクエストを使用して、回答を送信し結果を処理する;または自動化ツール(例:Playwright)を使用してページを開き、キャプチャを待ち、パラメータを送信(テスト用に正しいデータや誤ったデータを送信可能)、CapMonster Cloudクライアントを通じて結果を取得、トークンをフォームに挿入して結果を確認。

async function sendTokenToSite(token) {
    // トークンを送信するフォームまたはエンドポイントのURL
    const formURL = "https://example..com/en/your-form-endpoint";

    // フォームデータ例
    const formData = {
        email: "example@example.com",
        password: "yourpassword",
        "procaptcha-response": token // Procaptchaからのトークン
    };

    try {
        const response = await fetch(formURL, {
            method: "POST",
            headers: {
                "Content-Type": "application/json", // или 'application/x-www-form-urlencoded' サイトに依存
            },
            body: JSON.stringify(formData),
        });

        const result = await response.text(); // サーバーがJSONを返す場合はresponse.json()
        console.log("Server response:", result);
    } catch (err) {
        console.error("Error sending token:", err);
    }
}

// メイン関数
async function solveAndSend() {
    const client = CapMonsterCloudClientFactory.Create(
        new ClientOptions({ clientKey: API_KEY })
    );

    const prosopoRequest = new ProsopoRequest({
        websiteURL: "https://example.com/en/",
        websiteKey: "5EZU3LG31uzq1Mwi8inwqxmfvFDpj7VzwDnZwj4Q3syyxBwV"
    });

    const balance = await client.getBalance();
    console.log("Balance:", balance);

    const result = await client.Solve(prosopoRequest);
    console.log("Captcha solution:", result);

    // トークンをサイトに送信
    await sendTokenToSite(result.solution); // result.solutionにProcaptchaトークンが含まれます
}

solveAndSend().catch(console.error);

Procaptchaをサイトに接続する方法
サイト上のキャプチャの動作を理解し、検証ロジックを把握し、再接続や再設定するために、このセクションを確認してください。接続手順が記載されており、詳細を迅速に理解できます。

1. キーを取得(sitekeyとsecret key)

  • 1) Prosopoポータルにアクセス。
  • 2) Site Managementに移動
  • 3) Revealをクリック — 2つのキーが表示されます:
    • sitekey — 公開用、クライアントで使用。
    • secret key — 非公開、サーバーでのみ使用。
重要: 各ウィジェットに個別のキーセットが作成されます。他のプロジェクトで再利用できません。

2. ドメインを追加

  • 1) Account → Domainsに移動。
  • 2) ドメインがリストにあることを確認。
  • 3) ローカルでテストする場合 — localhostを追加。
  • 4) 本番前にlocalhostを削除。

3. Procaptchaスクリプトを接続

<head>にタグを設置

<script type="module" src="https://js.prosopo.io/js/procaptcha.bundle.js" async defer></script>>

4. オプション1: Implicit rendering(自動描画) — 簡単

キャプチャが自動で表示されるコンテナを追加:

<div class="procaptcha" data-sitekey="your_site_key"></div>

通常はフォーム内に配置。

完全なフォーム例完全なフォーム例
arrow

キャプチャの確認成功後、非表示パラメータが追加されます:

5. オプション2: Explicit rendering(手動描画) — より制御可能

HTML例HTML例
arrow
JavaScript例JavaScript例
arrow

6. キャプチャタイプの設定(任意)

明示的に選択可能:

  • frictionless (デフォルト)
  • pow
  • image

例:


<div class="procaptcha"
     data-sitekey="your_site_key"
     data-captcha-type="pow">
</div>

7. 必須ステップ: サーバー側でのトークン検証

キャプチャ描画後、サーバーは必ず応答を検証する必要があります。検証はAPI経由で行われます:

POST
https://api.prosopo.io/siteverify

リクエスト内容:

{
    "secret": "your_secret_key",
    "token": "PROCAPTCHA-RESPONSE"
}

8. PHPでのサーバー検証

コード例:コード例:
arrow

成功と見なす条件は?

Procaptchaサーバーが返す場合:

{
    "verified": true
}

キャプチャが通過、保護された操作(例:ユーザー登録)を実行可能。

Background
想定されるエラーとデバッグ
Bug Icon
無効なサイトキー
誤ったまたは無効なsite keyが使用されています。解決策:正しいキーを使用していることを確認してください。キーはProcaptchaのアカウントで確認可能です。
Bug Icon
無許可のオリジンURL
ウィジェットが設置されたドメインが、site keyに紐づけられたドメインと一致していません。解決策:Procaptchaポータルのドメインリストを確認・更新してください。
Bug Icon
セッションが見つかりません
セッションが見つからないか期限切れです。解決策:ウィジェットのリロード(約3秒)を待つか、ページを更新してください。エラーが続く場合、ブラウザのキャッシュとクッキーをクリアするかサポートに連絡。
Bug Icon
レスポンス success=false
トークンが期限切れ、再利用、または検証に失敗しました。診断のためにリクエストのログを有効にし、Procaptchaレスポンスのerrorフィールドを確認してください。
保護の堅牢性チェック
統合後は、システムが本当に自動化された操作からサイトを守れているか確認しましょう。
セキュリティと最適化のヒント
<span class="font-bold">Secret Key</span> はサーバー上のみに保管してください。クライアントには絶対に渡さないでください。
特定の検証が失敗した理由を把握するために、エラーコード <span class="font-bold">(error-codes)</span> をログに記録してください。
フォームの下部に <span class="font-bold">プライバシーポリシー</span> および <span class="font-bold">Procaptcha 利用規約</span> のリンクを追加してください(実装で必要な場合)。
まとめ

すでにキャプチャや別の保護システムが導入されているサイトを引き継いだものの、コードにはアクセスできない場合でも心配はいりません!どの技術が使われているかを特定するのはそれほど難しくありません。動作が正しいか確認するには、隔離されたテスト環境で認識サービスCapMonster Cloudを利用し、トークン処理の仕組みと検証ロジックが正しく機能しているかをチェックできます。

Prosopo Procaptchaの場合も、システムを特定し、その挙動を調べて、保護機能が正しく動いていることを確認すれば十分です。この記事では、Prosopo Procaptchaを見分ける方法と、その導入や再設定に関する手順書の見つけ方を紹介しました。これにより、防御を安心して維持し、その動作をしっかりと管理できます。

Conclusion
参考リンク
DocIconProcaptchaドキュメントDocIconProsopoポータルDocIconCapMonster Cloudドキュメント(Procaptcha操作)

Prosopo Procaptcha に関するよくある質問

Procaptcha は3種類の検証タイプを使用し、訪問者セッションのリスクレベルに基づいて最適なものを選択します:

  • Frictionless CAPTCHA:バックグラウンドで動作し、ブラウザのシグナルと行動が人間らしく見える場合、訪問者を目に見えない形で検証します。疑わしいセッションは表示されるチャレンジにエスカレートされる場合があります。
  • Proof of Work (PoW) CAPTCHA:訪問者のデバイスに小さな計算タスクを与え、大規模な自動リクエストのコストを高めながら、実際のユーザーにはほとんど気づかれません。
  • Image CAPTCHA:「すべての馬を選択」などのプロンプトに一致するすべての画像を選択するような視覚的チャレンジを表示します。

ウィジェット div の data-captcha-type 属性で検証モードを指定できます。frictionless は目に見えないバックグラウンドチェック、pow は Proof of Work パズル、image はクラシックな画像選択チャレンジ用です。

例:

<div class="procaptcha"
     data-sitekey="your_site_key"
     data-captcha-type="pow">
</div>

クライアント側の data-captcha-type の値は、Prosopo Portal アカウント設定で構成された CAPTCHA タイプと厳密に一致する必要があります。

はい、汎用 HTTP リクエストを使用して、任意の Python スクリプトにソリューションを統合できます。

タスク ID をリクエスト:API キー、websiteURL、websiteKey を含めて createTask エンドポイントに POST リクエストを送信します。

{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "ProsopoTask",
    "websiteURL": "https://example.com",
    "websiteKey": "SITE_KEY"
  }
}

結果をポーリング:受信した taskId をステータスが ready になるまで getTaskResult エンドポイントに送信します。

{
  "clientKey": "YOUR_API_KEY",
  "taskId": 123456789
}

トークンを使用:solution オブジェクトから文字列を抽出し、HTTP ペイロード(requests、aiohttp)で procaptcha-response 値として渡すか、DOM に注入します(Playwright、Puppeteer、Selenium)。

Procaptcha は、暗黙的レンダリング用にウィジェット div の data-callback 属性、または明示的レンダリング用に設定オブジェクトの callback プロパティをサポートしています。

指定した関数は captcha が解決されると自動的に呼び出され、最初の引数としてトークン文字列を受け取ります——その時点で送信ボタンを有効化したり、AJAX リクエストをトリガーしたり、コンポーネントの状態にトークンを保存できます。

callback を使用する方が、procaptcha-response フィールドをポーリングするより一般的にクリーンです。ウィジェットの解決とフォーム送信のタイミングの間のレースコンディションを排除するためです。

Playwright、Puppeteer、Selenium は、解決済み Procaptcha トークンの注入を自動化する互換性のあるアプローチです。一般的なフローは同じです:

  1. ターゲットページに移動
  2. Procaptcha ウィジェットの読み込みを待つ
  3. API(またはクライアント SDK)経由で CapMonster Cloud にトークンをリクエスト
  4. フォーム送信をトリガーする前に、フレームワークのネイティブ DOM 操作メソッドを使用して返されたトークンをページに注入する。