トラックバック時の HTTP error: 403 Throttled について
- Next Page: MTSocialBookmarksプラグインをXHTML1.0に対応してもらった。
- Prev Page: MTSocialBookmarksプラグイン0.10を使ってみた。
この記事に関連して makoto_kw さんの kwLogブログにトラックバックを送ろうとしたところ、トラックバックでエラーが発生。ログを確認してみると、次のようなエラーが発生していました。
http://example.com/mt/mt-tb.cgi/nnnn へトラックバックできませんでした: HTTP error: 403 Throttled
エラー内容からググってみると、Movable Typeが抱える意外と根深い問題が発覚。
Movable Type の HTTP error: 403 Throttled に関するまとめ
要約すると、以下みたいな感じです。
- 最近はトラックバックスパムがとにかく大量にやってくる。
- Movable Typeにおけるトラックバックスパムに対する閾値が低い。
- そのため、1日中トラックバックを受け付けない状態になってしまっている。
- 本当は正常なトラックバックが来ているんだけど勝手に蹴ってしまっていて、しかもログには残らないという 「管理者が気づくまで問題が発覚しない」 という問題。
気づいて良かった。対策をしましょう。
以下3種類のうち、いずれかの対策をしましょう。
1. mt-config.cgi に OneHourMaxPings と OneDayMaxPings を設定
一時間あたりのコメントおよびトラックバックping受付最大数。
この値を越えると全てのコメントおよびトラックバックを1時間受け付けなくなります。
(ログにも出力されません)
デフォルト : 10
一日あたりのトラックバックping受付最大数
この値を越えると全てのコメントおよびトラックバックを1日間受け付けなくなります。
(ログにも出力されません)
デフォルト : 50
この程度の値は最近のトラックバックスパム数から言っても値が少なすぎていて、常にトラックバックを受け付けない状態となっている可能性が高いと思われます。
そこで、以下の行を mt-config.cgi に追加します。
(値はブログのトラックバック実績などから適宜修正してください。これはかなり緩い設定です。)
OneHourMaxPings 50
OneDayMaxPings 1000
2. MT::App::Trackback.pm を修正する
ここギコ!: MovableType 3.2、MT::App::Trackback.pmの修正 を参照し、同一IPからの頻繁なトラックバックをはじくようにすることで、スパムを防ぐ方法もあります。
MTOS4.1では、以下の修正となります。
--- Trackback.pm.orig 2008-01-09 06:02:50.000000000 +0900
+++ Trackback.pm 2008-04-06 22:34:41.000000000 +0900
@@ -143,6 +143,7 @@
$app->config('OneHourMaxPings') <= MT::TBPing->count(
{
blog_id => $tb->blog_id,
+ ip => $user_ip,
created_on => [$from]
},
{ range => { created_on => 1 } }
@@ -162,6 +163,7 @@
);
my $terms = {
blog_id => $tb->blog_id,
+ ip => $user_ip,
created_on => [$from]
};
my $count = MT::TBPing->count( $terms, { range => { created_on => 1 } } );
ここにパッチを置いておきますので、同一環境の方は以下の手順でパッチを当ててください。
MT-APP-Trackback.pm.patch
# cd /lib/MT/App # wget http://www.hyk-home.com/blog/infra/src/MT-APP-Trackback.pm.patch # patch -p0 < MT-APP-Trackback.pm.patch
2008/04/06 追記
この修正をすると、IPアドレスごとに「OneHourMaxPings」と「OneDayMaxPings」がカウントされるようになります。
see also
http://blog.makotokw.com/2008/04/06/kwlog_1/
3. asciiTBPingfilter プラグイン を導入する
小粋空間さんが作成されたasciiTBPingfilter プラグインを導入すると、2バイト文字列を含まないトラックバックpingをはじくことができます。
導入方法は、先方のページを参照下さい。
このプラグインでは、はじいたトラックバックスパムをログに出力する機能があるので、これでスパム数を把握することができるようになります。
以上、対策でした。
私のようにトラックバックを比較的たくさん打っていると、403 Throttled エラーによく引っかかります。
気づかないうちに正常なトラックバックを蹴ってしまっている事態が起こらないよう、Movable Typeを使っている管理者の方は気をつけて頂きたいと思います。
コメント(2)
ありがとうございます。参考にさせていただきました。ところで、Trackback.pmのipの前に"+"が2個ついているのはdiffの+の重複でしょうか??
>>1 makoto_kw さん
どちらかというと、Perlを知らない私の修正ミスです。
ご指摘ありがとうございます。
修正しました。
コメントを投稿してください。