Trackback Spam を一括削除

tbspam.jpgTrackback spam をやられました。comments spam は「海外からのコメントスパムを完全撃退」で完全対策していたので良かったのですが、Trackback spam は被害に遭っていなかったので未対策でした。ここ数日で 120 件ほどやられました。 取り急ぎの対処として「Memo Leaves: 編集メニュー画面からコメントスパムを一括削除」に書いてある方法で MT の編集メニュー画面からコメント&トラックバックを一括削除できる機能を実装した menu-template を導入したが、数が多すぎて対処できない。そこで SQL で直接削除することに・・・
- スポンサーリンク -

自分で書いても良かったのですが、今回喰らったスパムの発信元は有名みたいで、同じ事を考えている人はちゃんといました。「F's Garage:MT TrackBackスパムを消す」に一括削除 SQL が記載されています。

DBからデータを削除したあとに、エントリを再構築することでblog上からも削除されます。

参考SQL文
delete from `mt_tbping` WHERE tbping_blog_name like '%poker%' or tbping_blog_name like '%texas%' or tbping_source_url like '%poker%' or tbping_source_url like '%texas%' ;

tbping_blog_name の部分が「poker」「texas」の部分一致になっています。今流行っているのはコイツなので、このままの SQL を phpMyAdmin 等で実行すればOK。
 
その他の対策をまとめた記事は「TBスパムボット 来襲!」にありました。参考になりました。
 
消し方はコレでよいとして、trackback spam そのものを拒否する patch を実装しなければなりませんが、きっと先人がいるだろうと思って検索してみたらありました。「BiancaのTrackBackSpam対策【トラックバックスパム対策】」です。これで、mt-tb.cgi に対策を打ちます。ただ、これだけでは突破してくる spam があるので、海外からの trackback をそもそも拒否する対策を入れました。「海外からのコメントスパムを完全撃退」と同様の処理で、
require Drk::JpOnly;
if(!(Drk::JpOnly->new)) {die('error')};
という記述を先ほどの対策の後に入れればOKです。副作用として、ごくたまに国内からの trackback も拒否されてしまいますが、多くの場合は正しく動作します。
- スポンサーリンク -