対ボット+外国人用 平仮名+和製漢字CAPTCHA Perl用ライブラリ

―――――――――――――――――――――――――――――――――――――
【ソフト名】かんたん日本語画像認証(アルファベットも可)
【著作権者】ORBIT
【制作日】2011年07月05日
【種 別】Perlモジュール
【連絡先】https://www.orsx.net/blog/
【配布元】https://www.orsx.net/blog/
【圧縮形式】zip
【動作環境】Perl5とImage::Magick、sazanami-gothicをインストールしたLinux
Windows系OSでは動作しない事が確認されております。
【開発環境】
CentOS5.6 perl, v5.8.8
―――――――――――――――――――――――――――――――――――――
≪著作権および免責事項≫

 本ソフトはフリーソフトです。自由にご使用ください。なお,著作権は作者
であるORBITが保有しています。

 このソフトウェアを使用したことによって生じたすべての障害・損害・不具
合等に関しては、私と私の関係者および私の所属するいかなる団体・組織とも、
一切の責任を負いません。各自の責任においてご使用ください。

・はじめに
 新しいフォームを作った時の副産物の公開です。わずか数行で画像認証機能
を実装することが可能です。
 海外のスパム・人間、共に日本特有の和製漢字・平仮名は入力できないこと
に着目し今回の日本語画像認証を作成しました。

・ファイル構成
readme.txt 当取説ファイル
JCaptcha.pm 本ソフト
background.jpg 画像認証用の下地となる画像ファイル
tmp/imgs/ 作成済みの画像ファイルを保存するディレクトリ

sazanami-gothic.ttf
↑さざなみゴシック(フォント) ライセンスの関係上同封しておりません。

・導入方法
efont プロジェクト日本語トップページ – SourceForge.JP
http://sourceforge.jp/projects/efont/
よりさざなみフォントをダウンロードし、sazanami-gothic.ttfのみ取り出し
ファイル構成のようにJCaptcha.pmと同じディレクトリに格納する。

 画像認証機能を追加したい対象のプログラムと同じディレクトリに上記、
ファイル構成を設置する。

・利用方法
下記の使用例を参考にプログラムに組み込んでください。

簡単な使用例

#!/usr/bin/perl

# 当モジュールを呼び出し
use JCaptcha;

# オブジェクトの生成
my $obj = JCaptcha->new(
		Key    => RX, # 鍵を指定
		Lang   => JP, # 言語を指定(JP/ENG)
		Length => 5   # 文字の長さを指定
	);

# 認証画像作成用メソッドを呼び出す
my $tmp1 = $obj->makeimgcode(); # 認証用画像を作成し、その画像までのパスを受ける
print "$tmp1\n"; # 認証画像までのパスを受け取る

#==============================================#
# 画像を表示し、入力を行う処理を書いてください #
#==============================================#

# 認証
# 入力された文字列で認証を行い、正しければ"1"間違っていれば"0"を受ける
#(受け渡す文字列はフラグ無しUTF-8とする)
my $tmp2 = $obj->enimgcode('入力を受けた文字列');
print "$tmp2\n"; # if文などで認証の成功失敗を判別する

・履歴

2011年09月05日 Ver 1.0.0 公開

作成された画像認証用画像の一例

ライセンス形態:GPL
Download:JCaptcha

  1. 読み方が難しい漢字が出てくることもありますが、そのような場合はリロードするべきなのでしょうか…

    ライセンスはGPLとちょろっと書かれてますがJCaptcha.zip内にはそのような文言は見当たりませんでしたね…
    #Perl Licenseとかいかがでしょうか–;

    md5の件検証しました
    Windows(ActivePerl)では以下のパッチで使用可能です
    1.
    + use Crypt::PasswdMD5; #ない場合はcpan使うか同じ場所にCryptディレクトリを掘るか
    2.
    – $self->{ Code } = crypt ($self->{ Code },’$1$’.$self->{ Key });
    + $self->{ Code } = unix_md5_crypt ($self->{ Code },’$1$’.$self->{ Key });

  2. そうですね。そこは他の画像認証と同じ感じだと思います。

    ライセンスに関しては一応上で書いてますがとりあえずは常識の範囲で使って欲しいと言うことでちょこっと載せました。改造して再配布する場合も一応リンクさえ載せてあれば問題ないです。

    Windowsに関しては普通のCGIとは明らかに目的の異なるものなので直接当方が対応しようとは考えておりません。たしかOSXでも挙動が若干違ったので^^;

    しかしながらいつも貴重な情報ありがとうございます。
    今後参考にさせて頂きます。

  3. OSXでも上のパッチがあれば動作することを確認しました。

    どうもlibcのcrypt()におけるMD5サポートはglibcの拡張らしい
    http://archive.linux.or.jp/JM/html/LDP_man-pages/man3/crypt.3.html
    ので、libreadlineすらlibeditに置き換えているOSXではサポートされていないでしょうね…

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(Spamcheck Enabled)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)