トラックバック時の HTTP error: 403 Throttled について トラックバック時の HTTP error: 403 Throttled について

この記事に関連して 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 を設定

OneHourMaxPings

一時間あたりのコメントおよびトラックバックping受付最大数。
この値を越えると全てのコメントおよびトラックバックを1時間受け付けなくなります。
(ログにも出力されません)
デフォルト : 10

OneDayMaxPings

一日あたりのトラックバック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をはじくことができます。
導入方法は、先方のページを参照下さい。

このプラグインでは、はじいたトラックバックスパムをログに出力する機能があるので、これでスパム数を把握することができるようになります。

ASCII-TBPing-Filter-Plugin.JPGのサムネール画像

以上、対策でした。

私のようにトラックバックを比較的たくさん打っていると、403 Throttled エラーによく引っかかります。
気づかないうちに正常なトラックバックを蹴ってしまっている事態が起こらないよう、Movable Typeを使っている管理者の方は気をつけて頂きたいと思います。

トラックバック(2)


トラックバックを送る際には、この記事へのリンクを記事内につけてください。

from kwLog

ゴリ丸さんよりkwLogにトラックバックできないという報告と、この問題に対する対応についての情報をいただきました。 http://www.hyk-home...

from 充電式ぶろぐ

トラックバック時の HTTP error: 403 Throttled について...

コメント(2)

#1: 投稿者: makoto_kw [RES]

ありがとうございます。参考にさせていただきました。ところで、Trackback.pmのipの前に"+"が2個ついているのはdiffの+の重複でしょうか??

#2: 投稿者: ゴリ丸 Author Profile Page [RES]

>>1 makoto_kw さん
どちらかというと、Perlを知らない私の修正ミスです。
ご指摘ありがとうございます。
修正しました。

コメントを投稿してください。