logo
bars

MTCaptcha
と CapMonster Cloud

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

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

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

MTCaptchaとは
MTCaptchaとは
MTCaptchaは、ウェブサイトを自動化された操作から保護するシステムで、インテリジェントな検証とキャプチャを使用します。 まず、サービスはバックグラウンドでトラフィックを分析します。訪問者の挙動が疑わしい場合、システムは追加確認のために自動的にテキストキャプチャを表示します。

CapMonster CloudでMTCaptchaを解決する方法

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

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

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

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

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

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

  // npm install playwright @zennolab_com/capmonstercloud-client
import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, MTCaptchaRequest } from '@zennolab_com/capmonstercloud-client';

const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://example.com';

async function main() {
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext();
  const page = await context.newPage();

 
  let websiteKey = null;
  page.on('request', request => {
    const url = request.url();
    if (url.startsWith('https://service.mtcaptcha.com/mtcv1/api/getchallenge.json')) {
      const params = new URL(url).searchParams;
      const sk = params.get('sk');
      if (sk) {
        websiteKey = sk;
        console.log('Extracted websiteKey (sk):', websiteKey);
      }
    }
  });

  
  await page.goto(TARGET_URL, { waitUntil: 'networkidle' });

  if (!websiteKey) {
    console.error('Failed to extract websiteKey (sk) from the page');
    await browser.close();
    return;
  }

  
  const client = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: API_KEY })
  );

  
  const mtcaptchaRequest = new MTCaptchaRequest({
    websiteURL: TARGET_URL,
    websiteKey: websiteKey,
    isInvisible: false,
    pageAction: 'login'
  });

  // キャプチャの解決
  const result = await client.Solve(mtcaptchaRequest);

  
  const verifiedToken = typeof result?.solution?.value === 'string'
    ? result.solution.value
    : JSON.stringify(result.solution.token);

  console.log('VerifiedToken:', verifiedToken);

  
  // トークンを挿入してフォーム送信(必要に応じてセレクタを置き換え)
  await page.evaluate((token) => {
    const input = document.querySelector('#mtcaptcha-verifiedtoken-1');
    if (input) input.value = token;
  }, verifiedToken);

  console.log('Token inserted into input');

  
  // await page.click('button[type="submit"]');

  await page.waitForTimeout(5000);

  await browser.close();
}

main().catch(err => {
  console.error('An error occurred:', err);
});
MTCaptchaをサイトに接続する方法
サイト上でのキャプチャの動作を理解し、その仕組みを把握し、再接続または再設定するため、このセクションを参照してください。保護の接続プロセスが記載されており、すべての詳細を迅速に理解するのに役立ちます。

1. 登録または MTCaptchaアカウントにログイン

2. 登録後、サイトを追加。2つのキーを取得します。

  • Site Key — フロントエンド用の公開キー、ウィジェットを表示するため。
  • Private Key — サーバー用の秘密キー、キャプチャの解決を検証するため。サーバーのみで管理し、クライアントには渡さないでください。

例:

HowTo Connect image 1

3. MTCaptchaクライアント側を設定:

コードをページの<head>に挿入。

<YOUR SITE KEY>をMTCaptchaダッシュボードから取得したSite Keyに置き換え。


  <head>
  <script>
    var mtcaptchaConfig = {
      sitekey: "<YOUR SITE KEY>"
    };
  
    (function() {
      var mt_service = document.createElement('script');
      mt_service.async = true;
      mt_service.src = 'https://service.mtcaptcha.com/mtcv1/client/mtcaptcha.min.js';
      (document.head || document.body).appendChild(mt_service);
  
      var mt_service2 = document.createElement('script');
      mt_service2.async = true;
      mt_service2.src = 'https://service2.mtcaptcha.com/mtcv1/client/mtcaptcha2.min.js';
      (document.head || document.body).appendChild(mt_service2);
    })();
  </script>
</head>


<body>にキャプチャコンテナを追加

キャプチャを表示したい場所(例:フォーム内):

<div class="mtcaptcha"></div>

ウィジェットは自動的に読み込まれます。

HelpIcon

既存のSDKやプラグインを使用して迅速に統合できます:

  • サーバー側SDK:Java、Node.js、PHP
  • クライアント側SDK:React、React Native、Vue
  • CMSプラグイン:WordPress、Drupal

MTCaptchaは便利なデモページも提供しており、サイトに接続する前に保護をテストおよび設定できます。

4. サーバー側作業。クライアントでVerified-Tokenを取得。

非表示フォームフィールド経由:

<input type="hidden" name="mtcaptcha-verifiedtoken" />

またはJS経由:

mtcaptcha.getVerifiedToken() / mtcaptchaVerifiedCallback(status)

トークンをフォームやリクエストと一緒にサーバーに送信。

APIでトークンを確認(サーバー側検証):

GET https://service.mtcaptcha.com/mtcv1/api/checktoken?privatekey=<PRIVATE_KEY>&token=<TOKEN>
  • privatekey — あなたの秘密キー(サーバーのみ)
  • token — クライアントのトークン

ファイアウォール付きサーバー用の代替URL:

https://service2.mtcaptcha.com/mtcv1/api/checktoken

応答を処理:

success: true → キャプチャ通過、処理を続行。

例
arrow

success: false → エラー(トークン期限切れ、再利用など)

HelpIcon
各verifiedTokenは数分間有効で、CheckToken APIを通じて1回のみ検証可能で、再利用を防ぎます。トークン取得後、サーバーは検証を行う必要があります — MTCaptchaウィジェットは少なくとも50秒間の検証を保証。

Node.jsのMTCaptchaモジュールを使用した簡単な例Node.jsのMTCaptchaモジュールを使用した簡単な例
arrow

HelpIcon

MTCaptchaの詳細機能(ウィジェットカスタマイズ、クライアント・サーバー設定、フレームワーク統合など)の学習には、公式ドキュメントを参照してください。

Background
想定されるエラーとデバッグ
Bug Icon
無効なサイトまたはキー
キャプチャが読み込まれないか、サーバーがinvalid-privatekeyまたはprivatekey-mismatch-tokenを返します。正しいsitekeyprivatekeyの組み合わせを使用していることを確認してください。
Bug Icon
トークンがない、または無効
エラー missing-input-tokeninvalid-tokenbad-request。トークンの値がサーバーに送信され、変更されていないことを確認してください。
Bug Icon
期限切れトークン (token-expired)
トークンは制限時間のみ有効(通常 ~120秒)、その後再取得が必要です。
Bug Icon
トークンの再検証 (token-duplicate-cal)
トークンは一度しか検証できません — リプレイ攻撃防止。
Bug Icon
期限切れまたは無効なキー (expired-sitekey-or-account)
キーが有効でアカウントがアクティブであることを確認してください。
Bug Icon
診断には、リクエストログを有効にし、fail_codesを表示してエラー原因を確認してください。
保護の堅牢性チェック
セキュリティと最適化のヒント
<b>privatekey はサーバー上のみに保存</b>し、クライアントには渡さないでください。
<b>fail_codes</b> をログに記録し、エラー原因の追跡や防御回避の試行を分析してください。
プラットフォームのポリシーで必要な場合、フォームに <b>プライバシーポリシー</b> と <b>利用規約</b> へのリンクを追加してください.
まとめ

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

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

Conclusion
参考リンク
DocIconMTCaptchaドキュメントDocIconCapMonster Cloudドキュメント (MTCaptcha連携用)DocIconMTCaptcha迅速統合用SDKとプラグインDocIconMTCaptchaデモページ (Code Builder)