これまでに TrackBack spam 対策としては comment spam 対策と併せて日本語文字列を含まないものを拒否するという方法を取っているのだが、このごろはちらほらと日本語の TrackBack spam が現れてきた。そこで、更に「当サイトに対しての言及のない TrackBack ping を弾く」手法も追加してみる。これについてははてなおやさんが「Movable Type で言及リンクのない TrackBack ping を弾くプラグイン」を紹介されているが、生憎当方では未だに MovebleType 2.63 のままであるため 3.1 以降を必要とするこのプラグインを利用することができない。前回同様に lib/MT/App/Trackback.pm に手を入れることになる。
次のように関数 ping に少々コードを追加する。
sub ping { my $app = shift; : my($title, $excerpt, $url, $blog_name) = map scalar $q->param($_), qw( title excerpt url blog_name); # deny TrackBack ping which doesn't talk about my blog. require LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->agent(__PACKAGE__ . "/" . $MT::VERSION); $ua->timeout(10); my $res = $ua->request(HTTP::Request->new('GET', $url)); return $app->_response(Error => $app->translate("Need valid source URL: $url")) unless ($res->is_success); my $myurl = 'bird.dip.jp'; # my URL my $content = $res->content; return $app->_response(Error => $app->translate("Need talking abount me")) unless ($content =~ m/\Q${myurl}\E/i); :
$myurl には必須となるべきキーワードを設定する。ここでは当サイトのドメイン名である "bird.dip.jp" としているが、まったく関係の無い "HOGEHOGE" 等として、「当方に Trackback される方はエントリに "HOGEHOGE" というキーワードを入れて下さい」と、更に敷居を高くすることも考えられる。変数 $content に ping 元のコンテンツが入るから、適当な条件でフィルタすればよい。やっていることはなおやさんのプラグインと同じである。
Posted by masato at 08:49 PMおそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。