この記事では、よくある疑問にできるだけお答えしました。まず最初のステップは、どのような保護システムが使われているかを特定することです。そのために、代表的なキャプチャやボット対策システムの一覧を参照できます。ここには、どの仕組みが使われているかを素早く見分けるための画面イメージや主な特徴がまとめられています。
もしサイトで Prosopo Procaptcha が使われていることが分かったら、次のステップはその特徴と動作をより詳しく確認することです。同じこの記事の中で、Prosopo Procaptcha をサイトに導入するための手順書も確認できるので、あなたのサイト上でどのように機能しているのかをしっかり理解できます。これにより、現在の保護を正しく把握できるだけでなく、今後の運用や保守も計画的に行えるようになります。
Prosopo Procaptcha を含むフォームをテストする際は、キャプチャが正しく組み込まれ機能しているか確認する必要があります。
サイトに埋め込まれたキャプチャを手動で確認する方法
自動解決には CapMonster Cloud のようなツールを使うと便利です。キャプチャのパラメータを送信すると、サーバー側で処理して利用可能なトークンを返してくれます。そのトークンをフォームに挿入すれば、ユーザー操作なしでチェックを通過できます。
CapMonster Cloud API を使った一般的な手順:
type - ProsopoTask
websiteURL - キャプチャページの完全なURL;
websiteKey - ページで見つかったsiteKeyの値。
https://api.capmonster.cloud/createTask
{
"clientKey": "API_KEY",
"task": {
"type": "ProsopoTask",
"websiteURL": "https://www.example.com",
"websiteKey": "5EZU3LG31uzq1Mwi8inwqxmfvFDpj7VzwDnZwj4Q3syyxBwV"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId":0,
"status":"ready",
"solution": {
"token": "0x00016c68747470733a2f2f70726f6e6f6465332e70726f736f706f2e696fc0354550516f4d5a454463354c704e376774784d4d7a5950547a4136..."
}
}
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);
1. キーを取得(sitekeyとsecret key)
2. ドメインを追加
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>通常はフォーム内に配置。
<html>
<head>
<title>Procaptcha Demo</title>
<script type="module" src="https://js.prosopo.io/js/procaptcha.bundle.js" async defer></script>
</head>
<body>
<form action="" method="POST">
<input type="text" name="email" placeholder="Email" />
<input type="password" name="password" placeholder="Password" />
<div class="procaptcha" data-sitekey="your_site_key"></div>
<br />
<input type="submit" value="Submit" />
</form>
</body>
</html>キャプチャの確認成功後、非表示パラメータが追加されます:
5. オプション2: Explicit rendering(手動描画) — より制御可能
<html>
<head>
<script
type="module"
id="procaptcha-script"
src="https://js.prosopo.io/js/procaptcha.bundle.js"
async
defer
></script>
</head>
<body>
<div id="procaptcha-container"></div>
</body>
</html>
document.getElementById('procaptcha-script').addEventListener('load', function () {
function onCaptchaVerified(output) {
console.log('Captcha verified, output: ' + JSON.stringify(output))
}
const captchaContainer = document.getElementById('procaptcha-container')
window.procaptcha.render(captchaContainer, {
siteKey: 'YOUR_SITE_KEY',
theme: 'dark',
callback: onCaptchaVerified,
})
})6. キャプチャタイプの設定(任意)
明示的に選択可能:
例:
<div class="procaptcha"
data-sitekey="your_site_key"
data-captcha-type="pow">
</div>7. 必須ステップ: サーバー側でのトークン検証
キャプチャ描画後、サーバーは必ず応答を検証する必要があります。検証はAPI経由で行われます:
https://api.prosopo.io/siteverifyリクエスト内容:
{
"secret": "your_secret_key",
"token": "PROCAPTCHA-RESPONSE"
}8. PHPでのサーバー検証
<?php
function verifyToken($token) {
$url = 'https://api.prosopo.io/siteverify';
$data = json_encode(["secret" => "your_secret_key", "token" => $token]);
$options = [
'http' => [
'header' => "Content-Type: application/json\r\n",
'method' => 'POST',
'content' => $data,
],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$response = json_decode($result, true);
return $response["verified"] ?? false;
}
?>成功と見なす条件は?
Procaptchaサーバーが返す場合:
{
"verified": true
}— キャプチャが通過、保護された操作(例:ユーザー登録)を実行可能。
すでにキャプチャや別の保護システムが導入されているサイトを引き継いだものの、コードにはアクセスできない場合でも心配はいりません!どの技術が使われているかを特定するのはそれほど難しくありません。動作が正しいか確認するには、隔離されたテスト環境で認識サービスCapMonster Cloudを利用し、トークン処理の仕組みと検証ロジックが正しく機能しているかをチェックできます。
Prosopo Procaptchaの場合も、システムを特定し、その挙動を調べて、保護機能が正しく動いていることを確認すれば十分です。この記事では、Prosopo Procaptchaを見分ける方法と、その導入や再設定に関する手順書の見つけ方を紹介しました。これにより、防御を安心して維持し、その動作をしっかりと管理できます。