トラックバックスパムの大半は、ロボットで自動的にトラックバックURLを収集して、自動的に送信しているのであろうと思う。
なので、
トラックバックを弾く以前に、そもそも送信されないための予防対策ってのもあっていいんではないかと。
送信される数が減れば、弾く処理も減って、サーバ負荷も減りますからね。
というわけで、
ロボットにトラックバックURLを発見されにくくするための doEntity プラグイン を書いてみました。
上記リンクからファイルをダウンロードして、アーカイブを解凍してください。
doentity.pl を MT のプラグインディレクトリに設置(パーミッションは 0604 とか)。
テンプレートで、トラックバックURLを出力するMTタグ <$MTEntryTrackbackLink$> に以下のように doentity="1" を書き加えます。
すると、例えば、
というトラックバックURLがソースでは以下のように出力されます。
これは、トラックバックURLを実体参照文字に変換したものです。
実体参照(じったいさんしょう、Entity reference の訳語)とは、HTML文書などのSGML文書において、直接記述できない文字や記号(マークアップで使われる<や>など)を表記する際に用いられる方法である。
ブラウザで表示すると、普通に表示されますので、ご安心を(´ー`)。
デフォルトでは、文字列を50%の確率で実体参照に変換し、変換の仕方も50%の確率で10進数にしたり、16進数にしたりゴチャ混ぜにしています。
(16進数の実体参照を使用しない場合は、ソースの my $hex_change_probability = 50; の 50 を 0 にするとOKです)
このTBスパム予防の効果のほどは、doEntity単独では完全ではありません。
なぜなら、MovableTypeの場合、/mt/ の位置がわかれば、mt-tb.cgi(TBを受けるスクリプト)の位置も推測できてしまうからです。
したがって、
この doEntity プラグインは、mt-tb.cgi のファイル名変更(mt-config.cgi における TrackbackScript mt-tb.cgi の設定)とあわせて、トラックバックスパム予防として効果を発揮するでしょう。
もちろん、単独でも、ある程度は効果あると思いますけど。
そして、最後に重要な注意点。
トラックバックURLは、<$MTEntryTrackbackData$>で出力される内容にも含まれます。
<$MTEntryTrackbackData$> はトラックバックURLを抽出するのに利用される情報で、ブラウザで記事を見た際には表に出ていないので気づきにくいです。
<$MTEntryTrackbackData$>の出力内容を手動で設定するか、<$MTEntryTrackbackData$>を削除するなど対処が必要です。
以上、どうぞ、お試しあれ(´ー`)
喰らってしまったTBを弾くプラグインはこっちでメモしてます。
[2007/03/21] 2.00
doentity="2" と指定すると、JavaScriptによる出力を混ぜることでさらに複雑な出力になるようにしました。 ただし、doentity="2" はベタテキスト表示にしか使えないでしょう。属性値に入る値は、doentity="1"のままをオススメします。
![[TypeKey Profile Page]](http://tech.bayashi.jp/nav-commenters.gif)

はじめまして^^
doEntityプラグイン使わせていただきました。
今までいろんなスパム対策を見ましたが、トラックバックURLを発見されにくくする…というのは見たことなかったので、さっそくインストールしちゃいました。
ありがとうございます。