reCAPTCHAは無償で利用可能なCAPTCHA実装です。これは人間とコンピュータを判別し、次のような用途が考えられます。
reCAPTCHAを使うには公開/非公開APIキーペアが必要です。これらのキーペアはreCAPTCHAへのアタックを防ぎ、あなたのサイトからの回答を集めるために使われます。キー取得はreCAPTCHA管理ポータルから行えます。
あなたのreCAPTCHAトークンは登録されたドメインとそのサブドメインでのみ有効です。複数のサイトでキーが必要な場合*1、次の三つのテクニックが使えます。
*1: 開発サーバと本番環境サーバの二通りを持っているとか、単純に複数のサイトをホスティングしている場合など
reCAPTCHAのリクエストが行われる間、"api"と"verify"の二つのサーバが関わることになります。これらのサーバについては次の通りです。
クライアントサイドAPIを提供します。ユーザはどちらかのサーバとやりとりを行うことになります。あなたのサイトがSSLを使っているならば、api-secureの方を使ってください。そうでないならば、api.recaptcha.netを使ってください。(SSLではないサーバの方がパフォーマンスはよい)
ユーザはAPIサーバにリクエストを行い、チャレンジデータを取得します。
'recaptcha_challenge_field' と 'recaptcha_response_field' の二つのフィールドを持つreCAPTCHAウィジェットを挿入するJavaScriptが返されます。
このHTMLはreCAPTCHAウィジェットを表示する例です。
<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=<your_public_key>"> </script> <noscript> <iframe src="http://api.recaptcha.net/noscript?k=<your_public_key>" height="300" width="500" frameborder="0"></iframe>
</noscript>
このコードはformタグの間に挿入される必要があります。ユーザのブラウザがJavaScriptをサポートしないときのために、noscriptコードも指定してください。これは二つのフィールドを手動で埋め込む必要があります。
注: この例のように公開/非公開キーペアをハードコードするのではなく、もっと安全な、隠れた場所に保存しておく方がよいでしょう
JavaScriptでreCAPTCHAウィジェットの見かけをカスタマイズできます。これらの設定をする場合、RecaptchaOptionsオブジェクトを宣言するscriptタグを挿入してください。フィールドは次のように指定できます。
| キー | 設定できる値 | デフォルト値 | 意味 |
| theme | red/white/blackglass | red | テーマを指定します |
| tabindex | 整数値 | 0 | reCAPTCHAのテキストボックスにtabindexを指定します。フォーム中の他の要素がtabindexを使用している場合、この値を設定してユーザが使いやすくすべきです。 |
例: このscriptタグは白のテーマを適用し、tabindexに2を指定します。
<script>
var RecaptchaOptions = {
theme : 'white',
tabindex : 2
};
</script>
確認サーバからの応答はLF区切りの文字列で返ります。将来的に行が追加される可能性がありますので、現状では追加行を無視する実装にすべきです。
false incorrect-captcha-sol
'&error=incorrect-captcha-sol'とチャレンジデータを要求するURLに含めることにより、ユーザはこのエラーコードを得ることが出来ます。
不明なエラー
公開キーが不正です
非公開キーが不正です
確認サーバへのリクエストの中で、challengeパラメータが不正です
CAPTCHAの答えが間違っています
/verifyに与えるパラメータが間違っています。必須パラメータを全て与えているか確認してください。
同一ドメインルールに違反しています。「キーの適応範囲」の項を参照してください。
お疲れ様でした!reCAPTCHAをアプリケーション中で使う例を見るなら、リソースのページをご覧下さい。
コメント・トラックバック
reCAPTCHA - キャプチャを利用した人力高性能OCR
[開発][Web]ちょっとしたこと、捨てずに。