2015/10/17追記 追記現在challenge.asirra.comに接続できないっぽい。サービスが終了したのかは不明ですがサンプルは公開停止しました(サンプルコード表示だけ残しておきます)。
AsirraというMicrosoft Researchの猫認証(CAPTCHA)サービスを試してみるなど。もなっくすの登録時のCAPTCHAに利用されていたので。
- 複数の猫、犬の写真の中から猫だけを選ぶことで人間かどうか認証する。
- 設置側はユーザー登録不要で気軽に利用できるのがいいところ。
- JavaScriptがONでないと動作しない(reCAPTCHAなどはnoscript時のことも考えているが)。
- 猫と犬の写真はPetfinder.comの画像を利用している。
公開されているサンプルコードを参考にPHPでの実装を書いてみた。
http://rita-mordio.info/testrun/asirra-test.php (ソース)
手順的には、
- AsirraのJavaScript*1を挿入したい位置で読み込ませて猫認証を表示させる。
- 猫の写真だけが選ばれ送信ボタンが押される。
- 実際にフォームが送信される前にJavaScript(Asirra_CheckIfHumanという関数を利用。引数にはコールバック先の関数を渡す)でAsirraのサーバーに正解かどうか確認を行う。
- コールバック先関数に渡された結果が正解(true)であればフォーム送信、不正解(false)であればエラーメッセージなどを出す
- プログラム側で本当に正解だったかどうか確認を行う。Asirra_Ticketが一緒に送信されてくるのでそれをAsirraのサーバーに送信して確認する。ticketは1回限り有効なので二重送信対策にもなるかも。
- 確認が取れたらプログラムの処理を続行
みたいな感じになる。
なお、asirraState.SetEnlargedPositionという関数で拡大写真の表示位置の変更、asirraState.SetCellsPerRowという関数で1行に表示する写真の数を変更できる。詳しくは公式ページ参照。
そういや猫認証以外にも「○○の写真を選べ」みたいな認証もある模様。。
*1://challenge.asirra.com/js/AsirraClientSide.js