Archive for the ‘Movable Type’ Category

トラックバックスパムに苦しむ

木曜日, 11月 24th, 2005

 最近のスパマーの動静として,コメントではなくトラックバックでスパム行為を行うというのが流行なのだそうだ.そんなわけでちなさいとでも,放っておくとエライ数のトラックバックが付いており,そのほとんどがスパマーからのものである.
 これに対する根本的解決法はあまりなさそうなので,ひたすらしこしこと消していくしか方法がない.ちなさいとでは,以前コメントスパム対策を行った際,編集画面にコメントを表示させ,一気に消すという改造を行ったが,今回もそれが大いに役立ちそうである.
 この時点で,ちなさいとの編集画面では,コメントが30件表示され,トラックバックは5件表示されている状態である.5件ずつ消していてはちまちま感満載なので,それを一気に30件に増やそうという試みである.
 それには,/lib/MT/App/CMS.pmを書き換えるだけでよい.281行目あたりの

    $iter = MT::TBPing->load_iter({ blog_id => $blog_id },
{ 'sort' => 'created_on',
direction => 'descend',
limit => 5 });

ここのlimit => 5をlimit => 30に書き換えれば,最近のトラックバックの表示数が30件に増える.
 しかし,見てみると結構な数のトラックバックスパムである.11月24日が15件,23日が24件.そしてこうして消している間にも次々にトラックバックがやってくる.スクリプトを使って絨毯的にやっているのだろう.大きなサイトではこれらをどう扱っているのだろうか?

コメントスパム対策

水曜日, 11月 24th, 2004

先日,コメントスパムをまとめて削除したのだが,あれから数日経ってまた大変な量のコメントスパムが投稿されていた.しかもそれにまぎれて,通りすがりさんのコメントを見落としてしまっていた!
もはやこれまでのように,ちまちまと削除していてはどうしようもない.ということで,根本的なコメントスパム対策をすることにした.
MTコメントスパム対策Software Linkage)には,さまざまなコメントスパム対策が,その効果や副作用の度合いとともに紹介されている.そこで効果がありそうだと思ったのは,「半角英数字のみのコメントをブロックする」というもの.

難易度 2
効果 5
副作用 2(外国人が投稿できない)

これはいい!さっそくリンク先にとんでみる.
続々コメントスパムきままにぽろぽろ

今回私のとった解決方法はそれではなく・・・・
「オール英語(半角文字のみの文字列)で記入された場合のみ強制終了する」という、ブロガーにあるまじき(?)奥の手の方法なのでした(^^;;;
(略)
具体的な方法はmt-comments.cgiにちょこっと記述を追加するだけのものなのですが、ここにその具体的な記述を書いてしまうとスパマーさんに手の内を悟られてしまう恐れもあるので、それは控えさせていただきたいと思います。

この方法はBBSに書かれているらしいので,それを読んでみる.何となく難しそう.このサイトでは,さらにひらがな必須バージョンを現在導入しているそうだ.むむ.そんなに手の込んだものじゃなくてもいいんだけどなぁ.
そこで,もう少し検索をしてみると,別の方法が書かれたサイトを見つけた.
コメントスパム対策小林Scrap Book Heartlogic
この方法は簡単そうだ.今回はこの方法で行ってみよう.

そこで、日本語が含まれていないコメントは弾くという、より強力かつ日本ローカルなスパム対策がこちらです。あちこちのソースを参考にしています。
(略)
これだけで、コメント本文に日本語が含まれていないと、mt-commentsがエラーで終了するようになります。

具体的なやり方は,スパマーにソースを公開するのはあまり良くないという観点からここでは公開しない.まあ,他のサイトではばしばし公開されているが・・・
さて,この対策がどうなるか.しばらく見守っていこう.

今更ながらコメントスパムをまとめて削除

水曜日, 11月 10th, 2004

今日の今日まで実は,コメントスパムを放置していたちなさいとである.だって消すのは面倒くさい(すでに300件近く投稿されていた).デフォルトでは,いちいち編集メニューから該当コメントを選び,削除→再構築を行う.再構築は最後にまとめてやればいいとしても,これではあまりに効率が悪い.
そこで,編集メニュー画面からコメントスパムを一括削除Memo Leaves)を参考にして,うっとうしいコメントスパムの削除に挑戦してみた.

いろいろ試行錯誤した結果、編集メニュー画面に出てる最近のコメントにチェックボックスをつけてDeleteボタンもつけることにした。
とりあえず暫定対処法なんで、これでいいやーということで。

こういうのがらくちんでいいですねぇ.編集メニューから選んでさくっと消せる.これですよ.しかも,いじるファイルは「menu.tmpl」だけという手軽さ.なので,そのファイルそのものをアップしてくださっています.ということは,ただそれをダウンロードして,自分のサーバにアップすればよいのだ.そこでちなさいとでは,/tmpl/cms/menu.tmplをそのまま上書きした(一応バックアップはとっておいた).
 さて,同じページを見ると,こんなことが書いてある.

デフォルトでは編集メニュー画面にはコメントは5個しか表示されないので、CMS.pmの263行目の
 limit => 5
を10に増やしてやると効率アップ。

さっそくやってみよう.このファイルは/lib/MT/App/CMS.pmである.このファイルをちょいと書き換えて上書き!
おぉ~(感嘆)
これでやっとあのわけのわからないコメントスパムを全部消すことができた.しかし,今回消していて感じたのは,2004年9月11日からスパムが来始め,14日から19日あたりにかけてがピークだったのだ,ということ.ちなみにひどい日(15日とか)は1日に30件以上もスパムが来ていた.でも最近はそれほど多くはない.MTを3.1にアップグレードしようかどうかまだ迷っているのだが,アップグレードも面倒くさいしなぁ.でもコメントスパムのブロックはできるんだけどなぁ...まあ,おそらく,しばらくはスパムがたまったら消す,という手動でがんばることになると思う.だって弱小サイトだからそれほど影響はないと思うし.

トラックバック:完結編?

土曜日, 3月 6th, 2004

 先ほど,リーセントトラックバックを表示する修正を行った.これだけではなく,さらに各エントリーの個別表示画面にもトラックバックを表示させるように修正を行うことにする.
 参考にしたのはトラックバック表示(BLOG質問箱)である.これはとても簡単で,Individual Entry Archiveに以下のソースを追加するだけでOKであった.

<!-- トラックバック表示 -->
<MTEntryIfAllowPings>
<div class="comments-head">Trackback</div>
<MTPings>
<div class="trackback-body">
<span class="trackback-post">
<b>Title:</b> <a href="<$MTPingURL$>" target="new"><$MTPingTitle$></a><br />
<b>Excerpt:</b> <$MTPingExcerpt$><br />
<b>From:</b> <$MTPingBlogName$><br />
<b>Date:</b> <$MTPingDate format="%Y.%m.%d"$>
</span>
</div>
</MTPings>
</MTEntryIfAllowPings>
<!-- トラックバック表示終わり -->

 さて,実はここで問題が発生する.先のBLOG質問箱には,こう書いてあった.

トラックバック表示がPermalinkに反映されるタイミングは、トラックバックを受けた後でそのエントリーにコメントを受けるなどしてリビルドされたときになります。

そのため,今度はこれを何とかしないといけない.これに関する情報はいくつかあったが,今回参考にしたのは,トラックバック着信で自動リビルド(HuntingGirledCollective)と,MTいじり(numalog)の二つであった.ソース記述の部分が微妙に異なっていたこともあり,今回は前者を特に参考にした.
 これも実は非常に簡単で,/lib/MT/App/Trackback.pmのソース部分(200行ちょっと越えたあたりかな)に以下のような記述を追加するだけである.なお,追加分は赤字で設定してある.

require MT::Blog;
my $blog = MT::Blog->load($blog_id);
$app->rebuild_indexes( Blog => $blog )
or return $app->_response(Error =>
$app->translate("Rebuild failed: [_1]", $app->errstr));

$app->rebuild_entry( Entry => $entry )
or return $app->_response(Error =>
$app->translate("Rebuild failed: [_1]", $app->errstr));

 これでトラックバック関係はほぼ大丈夫だろう.あとはトラックバックがたくさん来るのを待つだけ,か.

リーセントトラックバックを表示させる

土曜日, 3月 6th, 2004

 このサイトは弱小サイトなので,まだまだどこからもトラックバックがない.なので全然必要なさそうな機能ではあるが,もしだれかからトラックバックがあったときに困るため,リーセントトラックバックを表示させる機能を付けてみよう.
 知らない間にこのサイトも,PHP化してサイドメニューのテンプレートも別に作成し,includeで表示させている.そのため,サイドメニューのテンプレートを修正すればいいようだ.ちなみに参考にしたのはカスタマイズ vol.22(G@MANIA)である.このエントリーには,トラックバックとは何か?みたいなことからいろいろと,他のサイトも紹介しながら書かれているので,一読をおすすめする(ていうか自分で書くのはめんどくさい).
 さて,実際のカスタマイズ作業に入ろう.リーセントトラックバックを表示させることはどうやら簡単にできるらしいのだが,そのトラックバックがどのエントリーにつけられたものなのか,を表示させることができないようだ.そのため,専用のプラグインがあるので,早速利用させてもらう.MTの「最近のTrackback」にエントリーのTitleとPermalinkを!(一色政彦 WEB SITE)に,「MTPingedEntry」プラグインがあるので,それをダウンロードする.
 解凍後,MTをインストールしたディレクトリの「plugin」ディレクトリにアップするのだが,実はいままでpluginディレクトリには何も入っていなかったことを知らなかったよ・・・まあどうでもいいけど.
 その後は,テンプレートの修正.プラグインのくわしい仕様などは一色さんのサイトを見てほしいが,ちなさいとでは以下のようにしてみた.

<div class="sidetitle">
Recent TrackBacks
</div>
<div class="side">
<MTPings lastn="4">
<MTPingedEntry>
・<a href="<$MTPingedEntryLink$>"><$MTPingedEntryTitle$></a>
</MTPingedEntry><br />
├ <$MTPingBlogName$><br />
├ <a href="<$MTPingURL$>" target="_blank"><$MTPingTitle$></a><br />
└ <$MTPingDate format="%Y.%m.%d - %X "$><br />
</MTPings>
</div>

 いまのところはこれで十分だろう.自分で自分にトラックバックを送って,ちょっとさみしい感じのテストを繰り返してみたから,大丈夫だと思うし.