この記事では、よくある疑問にできるだけお答えしました。まず最初のステップは、どのような保護システムが使われているかを特定することです。そのために、代表的なキャプチャやボット対策システムの一覧を参照できます。ここには、どの仕組みが使われているかを素早く見分けるための画面イメージや主な特徴がまとめられています。
もしサイトで reCAPTCHA v3 が使われていることが分かったら、次のステップはその特徴と動作をより詳しく確認することです。同じこの記事の中で、reCAPTCHA v3 をサイトに導入するための手順書も確認できるので、あなたのサイト上でどのように機能しているのかをしっかり理解できます。これにより、現在の保護を正しく把握できるだけでなく、今後の運用や保守も計画的に行えるようになります。
reCAPTCHA v3 を含むフォームをテストする際は、キャプチャが正しく組み込まれ機能しているか確認する必要があります。
サイトに埋め込まれたキャプチャを手動で確認する方法
自動解決には CapMonster Cloud のようなツールを使うと便利です。キャプチャのパラメータを送信すると、サーバー側で処理して利用可能なトークンを返してくれます。そのトークンをフォームに挿入すれば、ユーザー操作なしでチェックを通過できます。
CapMonster Cloud API を使った一般的な手順:
reCAPTCHA v3 を解くリクエストには、次のパラメーターを指定する必要があります。
type - RecaptchaV3TaskProxyless;
websiteURL - キャプチャを解決するページのアドレス;
websiteKey - あなたのサイトのキャプチャが設置されているページに記載されているキー識別子(sitekey);
minScore - 0.1 から 0.9 までの値を取ることができます;
pageAction - Google の ReCaptcha ウィジェットから渡される action パラメーターの値。既定値: verify.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta",
"websiteKey": "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
"minScore": 0.7,
"pageAction": "myverify"
}
}
{
"errorId":0,
"taskId":407533072
}
https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKv…hKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}
const { chromium } = require('playwright');
const {
CapMonsterCloudClientFactory,
ClientOptions,
RecaptchaV3ProxylessRequest
} = require('@zennolab_com/capmonstercloud-client');
(async () => {
const TARGET_URL = 'https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta'; // CAPTCHA が設置されているページの URL
const SITE_KEY = '6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob';
const API_KEY = 'your_capmonster_cloud_api_key'; // CapMonster Cloud の API キーを指定してください
// CapMonster クライアントの生成
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
// ブラウザを起動
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded' });
// reCAPTCHA v3 タスクの設定
const recaptchaRequest = new RecaptchaV3ProxylessRequest({
websiteURL: TARGET_URL,
websiteKey: SITE_KEY,
minScore: 0.6,
pageAction: 'myverify', // ページ上の action と一致させる
});
// CAPTCHA を解決
const solution = await cmcClient.Solve(recaptchaRequest);
const token = solution.solution?.gRecaptchaResponse;
if (!token) {
console.error('Токен пустой, проверьте sitekey и URL');
await browser.close();
return;
}
console.log('取得したトークン:', token);
// トークンを hidden フィールドに挿入し、ボタンのクリックをエミュレート
// 必要なセレクターに置き換えてください
await page.evaluate((t) => {
const input = document.querySelector('#v3_token');
if (input) input.value = t;
const form = document.querySelector('#v3_form');
if (form) form.submit();
}, token);
console.log('トークンが挿入され、フォームが送信されました');
await page.waitForTimeout(5000);
await browser.close();
})();1. reCAPTCHA の 管理コンソール ページにアクセスします。
2. 新しいサイトを登録し、CAPTCHA の種類として reCAPTCHA v3 を選択します

3. 次の 2 種類のキーを取得します:

設定画面では、reCAPTCHA を利用できるドメインの追加指定や、サイトの問題発生時や不審なトラフィック増加時の通知設定などを行うこともできます。
4. クライアントサイド用コード例
reCAPTCHA v3 を利用する最も簡単な方法は、JavaScript API を読み込み、ボタンに属性を追加することです。
API の読み込み:
<script src="https://www.google.com/recaptcha/api.js"></script>フォーム用のコールバック関数:
<script>
function onSubmit(token) {
document.getElementById("form").submit();
}
</script>
reCAPTCHA 属性付きボタン:
<button class="g-recaptcha"
data-sitekey="reCAPTCHA_sitekey"
data-callback='onSubmit'
data-action='submit'>Submit</button>
より細かく制御したい場合は、render パラメータ付きの grecaptcha.execute を使用します。
サイトキー付きでの API 読み込み:
<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>プログラムからの実行例:
<script>
function onClick(e) {
e.preventDefault();
grecaptcha.ready(function() {
grecaptcha.execute('reCAPTCHA_sitekey', {action: 'submit'}).then(function(token) {
// 検証のため、トークンをサーバーへ送信する
});
});
}
</script>
トークンは取得後すぐにサーバーへ送信して検証を行う必要があります。
重要な注意事項:
5. 次に、サーバー側でレスポンスを検証します
<?php
// あなたの reCAPTCHA v3 Secret Key
$secret = 'YOUR_SECRET_KEY';
// フォームからトークンを取得
$token = $_POST['recaptcha-token'] ?? '';
// トークン検証のため Google にリクエストを送信
$response = file_get_contents(
"https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$token}"
);
$result = json_decode($response, true);
// 成功判定と信頼スコアをチェック
if ($result['success'] && $result['score'] >= 0.5 && $result['action'] === 'submit') {
echo "検証成功";
} else {
http_response_code(403);
echo "検証失敗";
}
?>
補足:
<input type="hidden" name="recaptcha-token" id="recaptcha-token">すでにキャプチャや別の保護システムが導入されているサイトを引き継いだものの、コードにはアクセスできない場合でも心配はいりません!どの技術が使われているかを特定するのはそれほど難しくありません。動作が正しいか確認するには、隔離されたテスト環境で認識サービスCapMonster Cloudを利用し、トークン処理の仕組みと検証ロジックが正しく機能しているかをチェックできます。
reCAPTCHA v3の場合も、システムを特定し、その挙動を調べて、保護機能が正しく動いていることを確認すれば十分です。この記事では、reCAPTCHA v3を見分ける方法と、その導入や再設定に関する手順書の見つけ方を紹介しました。これにより、防御を安心して維持し、その動作をしっかりと管理できます。