ロリポップでCaptcha plugin導入

まだテスト中なのですが、書いておかないと忘れるので。
 
Captcha Plugin公開 (Ogawa::Memoranda)
 
これをロリポップ環境に入れる方法をメモっておきます。
ただーし、超試行錯誤なのでもし参考に入れた人がいましたらコメント/TB等いただけると。
 


 
はじめに断っておきますが、
 
cgiとかperlとか全く知らないド素人です(爆
 
正しいかどうかなんて知りませんw
 
 
さて、最大の課題はPerlモジュール Authen::Captcha を動かすことだと思います。
ロリポでは導入されてないのです。リクエストが多ければ入れるという話はあるようですが。
 
・CPANからAuthen::Captchaをダウンロードします。私は1.023でした。
 
・ローカルで展開します。.tar.gzなのでなんかツールがいるとは思います。(私は、ダブルクリックしたら何かで展開されたw)
 
・パスが切れているところに突っ込みます。私は /cgi/mt/extlib/Authen に入れました。(Authenディレクトリは作る)
 ...../Authen/Captcha.pm
 ...../Authen/Captcha/images/pngファイル群
 ...../Authen/Captcha/examples/いくつかファイル
 ...../Authen/Captcha/t/1.t
 こんな感じです。(一番下はなんなのか不明)
 
# これなのですが、全部 use lib しているので extlib に入れる必要はないとも思います
# パスが切れているといってもMTから呼ばれるときだけ???
 
 
・ここで、できればちゃん動くのかを確認するテストをしたほうが良いと思います。
 examplesディレクトリにある wwwtest.cgi の中を書き換えます。

#!/usr/bin/perl
use strict;
use CGI qw(:standard);
use lib '/home/sites/lolipop.jp/users/lolipop.jp-dp00000000/web/cgi/mt/extlib';
use Authen::Captcha;

my $output_dir = "/home/sites/lolipop.jp/users/lolipop.jp-dp00000000/web/captcha";
my $www_output_dir = "/captcha";
my $db_dir = "/home/sites/lolipop.jp/users/lolipop.jp-dp00000000/web/captchadb";

 use libで入れたディレクトリを指定します。
 また、このテストのために、ルートにcaptchaディレクトリ、captchadbディレクトリを作ります。
 wwwtest.cgiは755にして、アクセスして動くか確認してください。
 こんな感じで表示されるはずです。

 
 
・なお、ogawaさんは以下のように書いています。自分でエディタでも書き換えられますが、切り分けがややこしくなるので私はとりあえず変更せずに動かしています。

Captcha Plugin 0.10以降では、brute force attackへの対策としてsecret keyによる簡易な認証機能をサポートしています。この機能を使うためには、下記のパッチをAuthen::Captchaに適用する必要があります。FreeBSDなどのportsではこのパッチは適用済みになっています。
 
#7664: improve Authen::Captcha security

 
・次にプラグイン本体です。ogawaさんのページからダウンロードして展開して /cgi/mt/plugins に入れます。
 一応すべてのところに use lib をつっこんでおきます。
(captcha_js.cgi)

use File::Spec;
use File::Basename;
use CGI;
use lib '/home/sites/lolipop.jp/users/lolipop.jp-dp00000000/web/cgi/mt/extlib';
use Authen::Captcha;

(captcha.pl)

package MT::Plugin::Captcha;
use strict;
use MT;
use MT::Template::Context;
use File::Spec;
use File::Basename;
use Data::Dumper;
use lib '/home/sites/lolipop.jp/users/lolipop.jp-dp00000000/web/cgi/mt/extlib';
use Authen::Captcha;
use base 'MT::Plugin';
our $VERSION = '0.13';

 
・cgiは755に、data,imagesディレクトリは...755でいけると思います。(テスト中は777にしてました)
 
 
・プラグインが稼動しているか確認し、プラグインの設定を見ます。

 設定で Enable Captcha にチェックがついているか確認します。
 (最初はついてるのかな? 私はがちゃがちゃやってたのでついてませんでした)
 
 
・これでちゃんと動いているはずです。
 一応稼動確認として、cgiに直アクセスしてみてエラーにならないか確認します。
 http://www.nnistar.com/cgi/mt/plugins/captcha/captcha_js.cgi
 IEだと「ファイルのダウンロード」になると思います。
 中身は document.writeln とかが並んでいます。
 
 
・あとはogawaさんのサイトを参考に、テンプレートを書き換えます。

CAPTCHAテストを使うには、コメントフォームのあるすべてのテンプレートに以下の行を追加(コメント用のform要素の内部に記述する)し、再構築する必要があります。
<script type="text/javascript" src="<$MTCaptchaJsURL$>"></script>

 これがまた悩ましいのですが.......
 あと、私の環境だとなぜかちゃんと表示されなかったので、captcha_js.cgiを無理やり書き換えています。

print $q->header('text/javascript');
# print "if (!commenter_name) {\n";
print "\tdocument.writeln('$_');\n" foreach split(/\r?\n/, $tmpl);
# print "}\n";

 このように2行コメントアウトしてます。Hinagataテンプレートのからみなのかな....
 
 以上。誰か誤りを指摘してくださいwww
 

Track Backs [2]

Track Back URL

コメントスパム対策にCAPTCHAを導入

たいした数じゃないけど、気づくと毎日同じspamerからコメントスパムが投稿され... 続きを読む

「Xserver」で「Chapcha」導入メモ コメントスパム対策

Xserverを使用していますが、MTのコメントスパムに 悩まされせっかくいただ... 続きを読む

Comments [5]

nniさん こんにちわ(おはようございますの時間ですが)
ロリポップでもCaptcha Pluginができるんですねー!
すごい!作業も大変そうですね。
やはり効果はてきめん!でしょうか。

おお!これ入れたんだけど、動かなかったんで放置してたんだよねー。(笑)
 
 
ぐはっ!文字が読みにくくて間違えてけられた…orz

tsukinoさん、
すっかり迷惑コメントはなくなりましたー。
ただ、既にScodeを入れられてるのであれば、そこからわざわざ変える必要性はないとは思います。
(いやScodeでbotアクセスがくぐり抜けてきたら、検討すべきだとは思いますが)
 
Border.さん、
ぜひ第二の人柱に! w
このガイド自体が結構怪しいです。こんなにさっくりうまくいってるわけじゃなくて、ぐちゃぐちゃにやった結果なので....

ちょうど今、RadiumSoftwareさんとこでCAPTCHAの話題やってるので御紹介。
http://www.radiumsoftware.com/ (2006-11-07以降)
 
そのうち、CAPTCHAを軽々と破るスパムボットも出てくるんでしょうねぇ・・・。

このサイトめちゃめちゃ面白いね:)
こうしてまた巡回先が増えていくのであった........

コメントする

公開されません

(いくつかのHTMLタグ(a, strong, ul, ol, liなど)が使えます)