この記事では、よくある疑問にできるだけお答えしました。まず最初のステップは、どのような保護システムが使われているかを特定することです。そのために、代表的なキャプチャやボット対策システムの一覧を参照できます。ここには、どの仕組みが使われているかを素早く見分けるための画面イメージや主な特徴がまとめられています。
もしサイトで reCAPTCHA V2 が使われていることが分かったら、次のステップはその特徴と動作をより詳しく確認することです。同じこの記事の中で、reCAPTCHA V2 をサイトに導入するための手順書も確認できるので、あなたのサイト上でどのように機能しているのかをしっかり理解できます。これにより、現在の保護を正しく把握できるだけでなく、今後の運用や保守も計画的に行えるようになります。
reCAPTCHA V2 を含むフォームをテストする際は、キャプチャが正しく組み込まれ機能しているか確認する必要があります。
サイトに埋め込まれたキャプチャを手動で確認する方法
自動解決には CapMonster Cloud のようなツールを使うと便利です。キャプチャのパラメータを送信すると、サーバー側で処理して利用可能なトークンを返してくれます。そのトークンをフォームに挿入すれば、ユーザー操作なしでチェックを通過できます。
CapMonster Cloud API を使った一般的な手順:
reCAPTCHA v2 を解くリクエストには以下のパラメータを含める必要があります。
type - RecaptchaV2Task;
websiteURL - キャプチャが表示されるページの URL;
websiteKey - 対象ページに記載されている sitekey。
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "RecaptchaV2Task",
"websiteURL": "https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
"websiteKey": "6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AFcWeA66ZARdA5te7acD9vSwWE2hEQ2-B2aqFxm455iMA-g-Jis…"
}
}
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
const { chromium } = require('playwright');
const { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2Request } = require('@zennolab_com/capmonstercloud-client');
(async () => {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
const TARGET_URL = 'https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high';
const WEBSITE_KEY = '6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd';
const CMC_API_KEY = 'your_capmonster_cloud_api_key';
const cmc = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: CMC_API_KEY }));
await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded' });
// キャプチャの解答処理
const solution = await cmc.Solve(new RecaptchaV2Request({ websiteURL: TARGET_URL, websiteKey: WEBSITE_KEY }));
const token = solution.solution.gRecaptchaResponse;
// トークンを挿入しフォームを送信(必要なセレクターに置き換え)
await page.evaluate((t) => {
const ta = document.querySelector('textarea#g-recaptcha-response');
if (ta) ta.value = t;
document.querySelector('form.formular')?.submit();
}, token);
console.log('キャプチャが解け、フォームが送信されました!');
})();1. reCAPTCHA 管理コンソールにアクセスします。
2. 新しいサイトを登録。
reCAPTCHA v2(チェックボックス+課題、または不可視タイプ)を選択します。

3. 2 つのキーを取得:

設定画面で reCAPTCHA を利用できるドメインや、利用するセキュリティレベル(簡易~高セキュリティ)を指定できます。
4. クライアント側コードの例。 reCAPTCHA v2 を埋め込んだ HTML フォーム(ページ本文にそのまま貼り付け可能):
チェックボックスウィジェットの場合:
<html>
<head>
<title>reCAPTCHA demo</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form action="submit" method="POST">
<div class="g-recaptcha" data-sitekey="your_site_key"></div>
<br/>
<input type="submit" value="Submit">
</form>
</body>
</html>このコードは Google reCAPTCHA ライブラリを読み込み、POST でデータを送信するフォームを作成します。<div class="g-recaptcha" data-sitekey="your_site_key"></div> で公開キーを使った reCAPTCHA v2 ウィジェットを表示します。"Submit" をクリックすると、g-recaptcha-response トークンと共にフォームが送信され、バックエンドで検証されます。
不可視 reCAPTCHA v2 の場合:
<html>
<head>
<title>reCAPTCHA demo</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
function onSubmit(token) {
document.getElementById("demo-form").submit();
}
</script>
</head>
<body>
<form id="demo-form" action="?" method="POST">
<button class="g-recaptcha" data-sitekey="your_site_key" data-callback="onSubmit">Submit</button>
<br/>
</form>
</body>
</html><button class="g-recaptcha" data-sitekey="your_site_key" data-callback="onSubmit">Submit</button> ボタンが不可視キャプチャを自動的に実行し、トークンを生成して onSubmit を呼び出します。
onSubmit(token) 関数は g-recaptcha-response トークンを受け取り、フォームをサーバーへ送信します。
チェックボックスウィジェットとは異なり、ユーザーにはキャプチャが見えず、検証はバックグラウンドで行われます。
5. サーバー側で応答を検証。
メソッドをチェックし、データを取得
?php
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
exit('許可されていないメソッド');
}
// reCAPTCHA トークンの取得
$token = $_POST['g-recaptcha-response'] ?? '';
$secret = 'YOUR_SECRET_KEY';
if (!$token) {
exit('キャプチャ未通過');
}Google でキャプチャを検証
$response = file_get_contents(
"https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$token"
);
$result = json_decode($response, true);
if (!empty($result['success'])) {
echo "<h3>フォーム送信に成功!</h3>";
} else {
echo "キャプチャ検証エラー。";
}
?>すでにキャプチャや別の保護システムが導入されているサイトを引き継いだものの、コードにはアクセスできない場合でも心配はいりません!どの技術が使われているかを特定するのはそれほど難しくありません。動作が正しいか確認するには、隔離されたテスト環境で認識サービスCapMonster Cloudを利用し、トークン処理の仕組みと検証ロジックが正しく機能しているかをチェックできます。
reCAPTCHA V2の場合も、システムを特定し、その挙動を調べて、保護機能が正しく動いていることを確認すれば十分です。この記事では、reCAPTCHA V2を見分ける方法と、その導入や再設定に関する手順書の見つけ方を紹介しました。これにより、防御を安心して維持し、その動作をしっかりと管理できます。