トラックバックスパム対策

[MovableType]トラックバックスパム対策
MovableTypeにコメントスパムだけではなくて、トラックバックにもスパムがくるようになったので対策を考えた。

どのエントリーにpingされたのか分からない!! - 対策失敗
メイルでpingのお知らせはくるけど、MovableTypeのmenu画面では、どのエントリーにpingされたのか分からなくて困るので、以下のような対策を考えたが失敗してしまった。
失敗した作戦は、menu.tmplにコメントスパムの対応と同様に


<TMPL_IF NAME=HAS_EDIT_ACCESS><a class="list" href="<TMPL_VAR NAME=SCRIPT_URL>?__mode=view&_type=entry&id=<TMPL_VAR NAME=ENTRY_ID>&blog_id=<TMPL_VAR NAME=ENTRY_BLOG_ID>"><TMPL_VAR NAME=PING_CREATED_ON></a><TMPL_ELSE><font class="title"><TMPL_VAR NAME=PING_CREATED_ON></font></TMPL_IF>

なんていれたらすぐに、「最近 5つの Ping」で、どのエントリーにpingされているのか分かって便利かとおもってやってみた。
しかし、PING_LOOP中では、ENTRY_IDが取れないのでダメ

とりあえずいままでにpingされたものだけでも削除!!
いろいろ調べたけど、とりあえず、いままでにpingされたものを削除するには、コメントスパムの時と同じでDBの中で削除するのが良いらしい。


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%' ;

で削除できるらしいので、まず


select * 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%';

で確認してから削除した。

ベイジアンフィルタ for MovableType」を使ってみる。
spamsssianと同じようなベイジアンフィルタをMovableTypeでも実現してくれているひつがいるので、早速使ってみる。
日本語解説: KANWAKYUDAI::Blog:ベイジテンフィルタ for MovableType
てもとのMovableType 2.64 + PostgreSQLにインストールしようとしたら色々問題が有った。


■tinyintなんて無い!!
Documentのとおりに進むとbayesian-init-db.cgiの実行のところで、PostgreSQLに「"tinyint"なんて知らない」と言われるので、bdb/bayesian_postgres.dumpのtinyintをsmallintに変えて実行
※mysqlでの1byte intがtinyintらしいが、手元のPostgreSQLでは無いらしいのでSQL92にもある2byte intのsmallintで代用させた。


■PostgreSQL用のTable dumpが間違い
bayesian-init-db.cgiの実行で利用するbayesian_postgres.dumpでは二つのテーブルを作った後にインデックスをつけているけどテーブル名が間違っていたので修正


誤: create index bayesianblog_blog_id on bayesian (bayesianblog_blog_id);
正: create index bayesianblog_blog_id on bayesianblog (bayesianblog_blog_id);

さらに最後のテーブルのインデックス作成でも、同様の間違いがあるので訂正


誤: create index bayesiantoken_blog_id on bayesian (bayesiantoken_blog_id);
正: create index bayesiantoken_blog_id on bayesiantoken (bayesiantoken_blog_id);

ここまで一度bayesian-init-db.cgiを実行しているとテーブルはできてしまっているので、psqlで


drop table bayesian; drop table bayesianblog;drop table bayesiantoken; drop sequence bayesian_id; drop sequence bayesianblog_id; drop sequence bayesiantoken_id;

を走らせて、テーブルとシーケンスを消してから再度トライの必要がある。

■なんとかDBスキーマ完成
mt-bayesian.cgiで


Loading database schema...
Done loading bayesian data into the database! All went well.

が出たので、なんとかDBは完成したみたい。
でもTRAINしても[Spam Probability: 50%]から変わらない何故?
そういえば、DBに作ったテーブルにも何も更新が入ってない
で、さらにDBのテーブルをDROPしてもエラー無し (;_;) うごいて無いじゃん!

Google
  Web on-o.com
Powered by Movable Type 7.9.8

このブログ記事について

このページは、わんこが2005年3月18日 18:14に書いたブログ記事です。

ひとつ前のブログ記事は「今年も梅が咲きました」です。

次のブログ記事は「さよならCAPA」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

アーカイブ