mixiのMTコミュで出されていたアイデアを元に作ってみました。
トラックバックSPAM防止プラグイン
MovableTypeをインストールしたところにあるpluginsディレクトリ以下に展開したファイルをコピーするだけでインストールは完了です。
でも、まだテストできてない…
どなたかこのエントリにでもトラックバックください。
都々目さんにご協力いただきテストできました。
最初はちゃんと弾くことができてなかったんですが、
今は大丈夫なようです。
(2005/3/14追記)
先日トラックバックSPAMが来ていたようですが、
このプラグインで弾かれていたことがログで分かりました。
しかし、内容のチェックまでは行ってなくて
URLへのアクセスだけで弾いていました。
どうやらトラックバックに送ってきたURLにアクセスすると
別のページにリダイレクトするようになっていたようで
通常のURLであれば200のコードが返ってくるところが
302が返ってきていたため、弾かれていたようです。
URLへアクセスするためのメソッドはLWP::UserAgentに二つあるんですが
リダイレクトを自動的に解釈するrequestではなく
単純なアクセスのみ行うsimple_requestを使うようにして正解でした。
そうそう、ログに弾いたトラックバックの情報を出力していたのですが
送られてくる情報の文字コードがPublishCharsetで指定されたものと異なっていた場合
管理CGIでログを表示すると文字化けしていましたので、
PublishCharsetで指定したものに変換するよう修正しました。
#都々目さんご報告ありがとうございます
テストさせていただきました。
何にも考えないで送信したのですが、トラックバックできてしまっていますね……。
書き忘れましたが、こちらのLogでは
Ping 'http://yebisuya.dip.jp/mt/mt-tb.cgi/514' failed: HTTP error: 500 read timeout
という状態でした。
投稿者 都々目さとし : 2005年02月25日 22:30だめみたいですねえ。やっぱり
Ping 'http://yebisuya.dip.jp/mt/mt-tb.cgi/514' failed: HTTP error: 500 read timeout
という状態です。2回やってみました。
「URLを記載していた場合」「記載していなかった場合」「長文の後ろにURLがあった場合」「複数のURLを記載しそのなかに正しいURLがあった場合」「複数のURLがあって正しいURLが無かった場合」などを試してみましたが、うまくいったようです。
はじかれたときは
Ping 'http://yebisuya.dip.jp/mt/mt-tb.cgi/514' failed: HTTP error: 403 Throttled
となりました。
ただ成功しても、必ず
Ping 'http://yebisuya.dip.jp/mt/mt-tb.cgi/514' failed: HTTP error: 500 read timeout
となってしまうのですが、これはこのプラグインと何か関係があるのでしょうか?
テストありがとうございました。
500 read timeoutとなるのはうちのサーバーのパワーが不足しているために
レスポンスが遅れているのではないかと思います。
ある程度の完成を見ましたので
テストで送られたトラックバックは削除しました。
こちらこそ、わざわざこのプラグインを作ってくれてありがとうございました。
投稿者 都々目さとし : 2005年03月05日 07:07一つ気づいたことがありましたので
文字コードがEUCのサイトからトラックバックを受けたとき、Logに残った表示が
Trackback ping with url include no-link to this site(U:http://blog-news.ameblo.jp/entry-ab23c5ac3aed93b3c4b2587a943788f2.html,B:?֥?˥塼??®ʳ??饃???Хå?????,T:??쥩???؏??Υȥ饃???Хå?????,EX:ʡ?怲ɒ???ȵ??ƆĤαDz襭???쥩
というように化けてしまっていました。
URL表記はASCIIになるはずだから大丈夫かもしれないですが、一応文字コードのチェックを追加した方がいいのではないでしょうか。
その辺はどうしたものか考えてたんですが、
サボってそのままにしてしまいました。
そのうち直します。
はじめまして。goriと申します
TB SPAMが急増したので、なにか対策をとネットを探してここを発見し、早速プラグインを利用させていただきました。が、自分のサイトでは巧く動作していないようです。具体的には、ちゃんとリンクが張ってあるblogからのトラックバックなのに、管理cgiでログを確認すると「Trackback ping with url include no-link to this site」となってトラバ拒否してるようです。
また、「seesaaブログ」を利用されているblogからのトラバの場合は「Trackback ping with invalid url」となっています。
どのような原因が考えられますでしょうか?
また、例えばトラバ元のURLに「http://www.wafu.ne.jp/~gori/」という文字列が含まれていればトラバを受け付けるというような改造をする事は可能でしょうか?
大変お手数ですがご教授願えれば幸甚です。
最後になりましたが、当方から間違ってトラバを複数回送ってしまい申し訳ありません。適当に削除していただいて結構です。
投稿者 gori : 2005年05月14日 21:33手元にある環境でしかテストをしていないため、別の環境では想定通りに動かないことがあるようです。申し訳ありません。
まず確認したいのですがWEBLOGの設定でサイトのURLはどのように設定されていますか?
このプラグインではここの設定にある文字列がトラックバックされたURLに記述されているかどうかをチェックしているだけですので、
例えば%7EのようにURLエンコードされた文字列が混ざっていると同じと見なしていません。
この辺は修正する必要がありますね。時間ができたら直してみます。
こちらでもチェックしたいので、WEBLOGの設定に指定されているサイトのURLとトラックバックに失敗したURLを教えていただけませんか?差し障りがあるようでしたら直接メールで構いません。
あ、メールアドレスはこのブログにはまだ書いてないかも知れませんので、分からなければこのサイトのトップページを見てください。
Seesaaブログから送られてくるトラックバックがうまくいかない件は、Seesaaがどのような形式でトラックバックを送ってくるのか知らないのでよく分かりません。
できればSeesaaからこのエントリに試しに送ってみていただけませんでしょうか?
それから、ご要望のように改造するのであればmt-prevent-trackback-spam-no-link.plの
> my $blog_site_url = $blog->site_url;
の部分を
> my $blog_site_url = 'http://www.wafu.ne.jp/~gori/';
と書き換えればよいと思います。
ただ、こう改造したところで前述の問題が解決しないことには同じ結果となることが予想されます。
まだまだテストの足りないプラグインですのでご協力をお願いします。
投稿者 ゑ : 2005年05月14日 22:47メールにしようかと思いましたが、どうもうまく送れないので引き続きこちらに書き込ませていただきます。
当方のblogの設定は以下の通りです
サイトURL: http://www.wafu.ne.jp/~gori/mt/
アーカイブURL: http://www.wafu.ne.jp/~gori/diary3/
蛭子屋さんのコメントでの解説からそうぞうすると。URLに含まれる「~」が原因
のような気がしますね。
とりあえず応急処置としてプラグインの中を「my $blog_site_url =
'http://www.wafu.ne.jp/'」という風に書き換えて使ってみています。
Seesaaブログからのトラバは読者の方からのトラバなので、貴サイトへのトラバ
をテストする事が出来ませんが、管理cgiのログには下のような記録が残ってい
ました
==========
Trackback ping with invalid
url(U:http://ajipon.seesaa.net/article/3627168.html 以下略)
==========
貴重なお休みの日にお手を煩わせて申し訳ございません。
何か分かりましたら教えてください。
追記です。
「my $blog_site_url ='http://www.wafu.ne.jp/'」
に修正して使っていますが、とりあえず自分のもう一つのblogからトラバすることは可能でした。自分のblogなんで必然的にエントリー内に「http://www.wafu.ne.jp/」が入っており、これが入っていない場合にちゃんと拒否するかどうかは検証できておりません。
ご報告まで
投稿者 gori : 2005年05月15日 00:24今まで~をURLに含むサイトの方には使って頂けてないのでチェックできていませんでした。
今度修正を入れた時にはテストにご協力いただけるとありがたいです。
さて、SeesaaのURLにアクセスしに行ったんですが、何度かアクセスしないと開くことができまぜんでした。
おそらくサイトが不安定かレスポンスが遅いなどにより内容の取得に失敗しているものと考えられます。
指定のURLで内容が取得できなければ判定もできません。
これを回避するには…どうしたらいいでしょう。
3回ぐらいチャレンジして駄目だったら諦めるとかですかねぇ。
昨夜から「〜」を除いたURLを直接プラグインに書き込んでチェックしてますが、サンプル数は数件程ですが今のところ上手く動作しているようです。次回修正されるときは是非この点にも手を入れていただけるとありがたいです。
Seesaaは昨夜調子が悪かったようですね。
今は普通に見れますが、トラバされた際にどのような状況だったかは不明です。再度その読者の方にトラバをお願いしたいと思います。結果が出たら報告いたします。
もう修正版が出ているんですね。さっそくそちらを使用させていただきます。
素早いご対応、本当に感謝いたします。
こんにちは。J2さんからの紹介で伺いました。
MT3.01Dでプラグインを利用させていただこうと思ったのですが次のようなエラーが出ます。
Can't locate object method "instance" via package "MT" at plugins/mt-prevent-trackback-spam-no-link.pl line 13.
これって「MTフォルダが無い」ってことでしょうか。
ディレクトリは「/cgi/mt/plugins/mt-prevent-trackback-spam-no-link.pl」ってなってるんですが…
プラグインの中のフォルダ名をmtにすればいいのカモ、と思いましたが、何が変数で何がフォルダを指しているのかわかりませんでしたので、手をつけていません。
よろしくお願いします。
↑自己解決しました。
えー。フルパスっつーのを理解していませんでした。
ロリポップのユーザー設定見たらちゃんとロリポのサイトのフルパスが出ていました。
トラックバックができていてもログ上はエラーで表示されていましたので、
何度もトラックバックを送信してしまいました。spam対策に導入したプラグ
インがリンクを張ったブログのトラックバックを自動で検出する仕様らしく、ト
ラックバック先から削除してもトラックバックを行うのも拍車をかけたようです。
現在配布先に回避策を伺っています。申し訳ありません。