2006年07月08日(土) 22:38

トラックバックスパム予防プラグイン for MovableType

トラックバックスパムの大半は、ロボットで自動的にトラックバックURLを収集して、自動的に送信しているのであろうと思う。

なので、
トラックバックを弾く以前に、そもそも送信されないための予防対策ってのもあっていいんではないかと。
送信される数が減れば、弾く処理も減って、サーバ負荷も減りますからね。

というわけで、
ロボットにトラックバックURLを発見されにくくするための doEntity プラグイン を書いてみました。


doEntity


上記リンクからファイルをダウンロードして、アーカイブを解凍してください。


doentity.pl を MT のプラグインディレクトリに設置(パーミッションは 0604 とか)。


テンプレートで、トラックバックURLを出力するMTタグ <$MTEntryTrackbackLink$> に以下のように doentity="1" を書き加えます。

<$MTEntryTrackbackLink doentity="1"$>


すると、例えば、

http://www.bayashi.net/mt/mt-tb.cgi/304

というトラックバックURLがソースでは以下のように出力されます。

&#x68;&#116;&#116;&#112;&#x3A;&#x2F;&#x2F;&#119;&#119;w.&#98;&#x61;&#x79;&#x61;s&#104;&#105;.&#x6E;&#x65;t/&#109;&#116;/m&#x74;&#45;&#116;b&#x2E;&#99;gi&#x2F;&#x33;&#48;&#x34;


これは、トラックバック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"のままをオススメします。
あなたのコメントをお待ちしています。

名前  クッキーに保存 
このエントリーへのコメント(5件)

はじめまして^^

doEntityプラグイン使わせていただきました。

今までいろんなスパム対策を見ましたが、トラックバックURLを発見されにくくする…というのは見たことなかったので、さっそくインストールしちゃいました。

ありがとうございます。

MT4に導入してみたのですが,ページのソースを見てみるとプレーンのままですね...
ひょっとして未対応ですか?
もちろんテンプレートも該当箇所を書き換えたのですが...

>XAXさん
ロリポップに設置したMT4.0で試してみましたが、doEntityプラグインは正常に動作するようです。

ひょっとしてPerl版ダイナミックパブリッシングを使ってないのが原因とか...ですかねぇ
どうも,自動生成されるファイルが生成されなくて,導入できずに居るんですが...

>XAXさん
ダイナミックパブリッシングには対応してないです(MT3 or 4とも)。
Perl版というのがどういうものかわかりませんが、通常のPHPで動的生成するダイナミックパブリッシングには対応してないです。すいません。

エントリーナビ
トラックバックスパム予防プラグイン for MovableType」は、
MTプラグイン(3.Xまで) カテゴリーの記事です。


関連エントリー
SPAM対策にAntibotプラグイン
簡単に引用してもらうリンクの作り方
管理画面のカテゴリーをDescriptionで表示するプラグイン
ファイルのアップロード・パス オプションをデフォルトで表示する
ファイルのアップロードで「HTMLを表示」がデフォルト選択されるプラグイン


次のエントリー:GDのインストールメモ 次のエントリー
前のエントリー:更新Pingの送信

トラックバック

受信したトラックバックのリスト

» トラックバックスパム対策
MT4にしてから、コメントスパムが激減したのですが、トラックバックスパムはこんな辺鄙なブログにも1日200くらいくるので、根本的な対策をしてみました。do...
» トラックバックスパム対策
mt-tb.cgi のファイル名変更し、mt-config.cgi における TrackbackScript mt-tb.cgi の設定そしてみたものの、...
» ゴミTB駆逐策
出張中にも挙げたゴミトラックバック、出てこないようにすることはちょちょいとすぐに...
このエントリーへトラックバックするURL (言及リンクのないトラックバックは無効です)