Java/ASP.NET: アンチロボットテストを行うためのライブラリ

アンチロボットテストとは

Web ベースのサービスを申し込む時、文字の書かれた画像が表示され、「上の画像に書かれている文字を入力してください」などと要求されることがある。その画像は、ゆがんでいたり、かすれてたりと、なにかしら読みにくくなっているのが普通だ。
これは、SPAM 業者などによるアカウント大量取得を防ぐためのものだ。そういう業者はプログラムを使ってアカウント申込みを大量に行うので、文字の書かれた画像を見せて「人間ならこれくらい読めるはず」というテストをするわけだ。業者も OCR などを使って文字を読もうとしてくるので、画像を用意する側も、OCR じゃ判別できないようなものを用意する。ゆがんでたりかすれてたりするのはそのため。
この種のテストとしては、カーネギーメロン大学で開発された CAPTCHA が代表的だが、より一般化して「アンチロボットテスト」とか呼ばれることもある。MSN のページでは「HIP (Human Interactive Proof)」という呼び方がされている。コンピュータ科学 (?) 的には、チューリングテストの一種にあたる。
利用例としては上記のような画像によるテストが多いが、W3C の指摘によると、「この種のテストってアクセシビリティを下げがち。視覚によるテストができない場合 (音声ブラウザを使っているなど) があるので、音声版を併用するなどするべき」。

deq notes - Captchaアクセシビリティ (解説)
http://www.memb.jp/~deq/voice/captcha/

Java で利用する場合

jcaptcha
http://jcaptcha.sourceforge.net/
アガテナ - 2005-03-09 (jcaptcha についての記事あり)
http://d.hatena.ne.jp/agt/20050309

CAPTCHAJava 実装 (でいいのかな?)。画像でのテストにのみ対応 (たぶん)。

ASP.NET で利用する場合

MSDN Library Online - An ASP.NET Framework for Human Interactive Proofs
http://msdn.microsoft.com/library/en-us/dnaspp/html/hip_aspnet.asp

ASP.NET 用のフレームワーク。画像および音声でのテストに対応しているようだ。

限界

CAPTCHA 系のアンチロボットテストは、完全ではないことが知られている。ある種の条件が揃うと、無意味になってしまうのだ。W3C の文書でも触れられていたと思うが、id:nazoking さんの下記記事からリンクをたどって実例が読める。

d.hatena.ne.jp