日本国内 IP かを判定するモジュール

以前ご紹介した「日本国内に割り当てられたIPの調査」を利用して、リクエスト元が日本国内かを判定する Perl module を作成しました。割り当て IP は時々刻々と変化していくので、いずれ陳腐化していくと思いますが、当面は利用価値のある module となると思います。
利用用途としては、Blog 等の Comment SPAM 対策などに利用できます( MT への組み込み方もあわせて紹介します。)
update 04.07.23 / 最新の IP リストを作成する CGI を同梱しました。

スクリプトはこちら(JpOnly.pm) 

- スポンサーリンク -



<動作環境>
Perl 5 が使える環境ならどれでも。(Linuxでしか動作確認してませんが...)
<モジュールの設置方法>
(1)メインCGIが設置してあるディレクトリ配下に 'Drk' いうディレクトリを作成します。
(2)ダウンロードしたファイルを解凍して、作成した'Drk' ディレクトリ配下に全てのファイルをFTPします。
(3)makelist.pl のパーミッションに実行権を与えます。755等に設定下さい。
(4)メインCGI内の #!/usr/bin/perl の下付近に、use lib "./"; を追加します。
以上で、メインCGI内で Drk::JpOnly が使用可能になります。

<Drk::JpOnlyのメソッド>

  • $ipOK = Drk::JpOnly->new(); コンストラクタ。引数の時は、日本国内の IP アドレスからのリクエストの場合、1 を返す。それ以外は 0 を返す。
    引数が"make"の時は、IP リストを作成するモードになる。(同梱の makelist.pl で使用)
<最新の IP リストへ更新する方法>
makelist.pl をコマンドラインもしくは、Webブラウザ経由で実行下さい。ipfile.dat が更新されます。

<MT への組み込み方>
(1)MT をインストールした配下にある 'extlib' ディレクトリ内に 'Drk' いうディレクトリを作成して JpOnly.pm を FTP します。
(2)'lib/MT/App/Comments.pm' ファイル内にある 70行〜80行目あたりを下記のように編集下さい。
if (!$q->param('text')) {
return $app->handle_error($app->translate("Comment text is required."));
}
use Drk::JpOnly;
unless( Drk::JpOnly->new ) {
return $app->handle_error('Post from overseas was Banned');
}
これで、海外からの(゚Д゚)ウゼェェェ Comment SPAM が全てシャットアウトできます!!
- スポンサーリンク -

関連する記事&スポンサーリンク