MovableType | メイン |
All Pages |  1  |  2  |  3  |  4  |  5  |  6  |  7 


コメントスパム対策

トラックバックスパムとある程度のコメントスパムは
Ogawa::MemorandaさんとこのQuasi_SpamFilterでだいたい防げているのだが、
これでも防げないコメントスパムが最近増えてきたので、
フィルタープラグインを改変してみた。

参照したのは小粋空間さんのこれ → Quasi-Spam Filter Plugin バージョンアップ

sub is_comment_spam {
my $comment = shift;
return ($comment->text =~ /$COMMENT_PATTERN/i);
}

sub is_tbping_spam {
my $tbping = shift;
return ($tbping->excerpt =~ /$TBPING_PATTERN/i);
}

オリジナル

sub is_comment_spam {
my $comment = shift;
return ($comment->text =~ /$COMMENT_PATTERN/i ||
$comment->author =~ /$COMMENT_PATTERN/i ||
$comment->email =~ /$COMMENT_PATTERN/i ||
$comment->url =~ /$COMMENT_PATTERN/i ||
$comment->ip =~ /$COMMENT_PATTERN/i);
}

sub is_tbping_spam {
my $tbping = shift;
return ($tbping->excerpt =~ /$TBPING_PATTERN/i ||
$tbping->title =~ /$TBPING_PATTERN/i ||
$tbping->source_url =~ /$TBPING_PATTERN/i ||
$tbping->blog_name =~ /$TBPING_PATTERN/i ||
$tbping->ip =~ /$TBPING_PATTERN/i);
}

改変後


要は全部いりにしてみたわけだが。
でもって、パターンマッチの対象になるNGワードに、sexやらadultやらを追加。
足りないようだったらまた足せばいい。
これでしばらく様子みるかのー。

ちなみに、もっと手軽にできるスパムブロックには
鵺的:想空間さんとこのmt-spamstop-tb_20050620がある。
<A>タグを含むトラックバックスパムをブロックするので、
リンク貼りまくり目的のスパマーには効果的なはず。

by Daryl 2006年04月04日 19:28 | Permalink


またInternal Error 500

カテゴリーアーカイブのrebuild時にまたしてもInternalError500が毎回登場するようになってしまた。
しょーがないのでまたカテゴリー・アーカイブのテンプレートを修正。

原因はこいつ

<p class="posted">by <$MTEntryAuthor$> <a href="<$MTEntryPermalink valid_html="1"$>"><$MTEntryDate format="%x %X"$></a>
<MTEntryIfAllowComments>
| <a href="<$MTEntryPermalink archive_type="Individual"$>#comments">コメント (<$MTEntryCommentCount$>)</a>
</MTEntryIfAllowComments>
<MTEntryIfAllowPings>
| <a href="<$MTEntryPermalink archive_type="Individual"$>#trackbacks">トラックバック (<$MTEntryTrackbackCount$>)</a>
</MTEntryIfAllowPings>
</p>

要はDBからTrackback/Commentの数をひっぱってこようとする時点で、
CPU負荷オーバーで異常終了になる。
なので、この部分を取っ払ってこうする。

<p class="posted">by <$MTEntryAuthor$> <$MTEntryDate format="%x %X"$></p>

これで瞬間リビルドになった。TB数やコメント数がカテゴリーアーカイブ上で表示されないのはちょっと痛いが、リビルドできないよりはマシだろう・・


by Daryl 2006年02月08日 23:33 | Permalink


メインページのモジュール化

記事本文(MTEntryBody)をPHPモジュールにしたついでに、
メインページを構成するパーツをバラしてモジュール化した。

これらをすべてPHP(ここでは拡張子CGI)のモジュールとして分離し、
メインページでinclude文を使って読み込むようにした。

phpentry5.jpg

おかげでメインページの再構築もチョッパヤ++になったヽ(´ー`)ノ


by Daryl 2006年01月14日 06:29 | Permalink


MTEntryBody記事のモジュール化

新規エントリー追加や再構築が重たくて耐え切れず、
とうとう記事そのもののPHPモジュール化に着手。
ってか、なにやってもInternalError500が出るのだ(たぶん日付アーカイブ復活したせい)
わかってはいるのだが、せっかくここまで手をいれたので悪あがきしてみることにする。

あなたのmovabletype、重たくないですか?(テンプレートモジュール化)
http://cross-breed.com/archives/200405140036.php

ここを参考にして作業を進める
(iswebならでは追加ポイントあり)

σ(゚∀゚ オレ!!の場合、月別・カテゴリー別をタイトル+概要にしてあったのだが、
それでも重くなったので記事本文だけを別個PHPファイル(iswebでは拡張子cgi)に移し、
それぞれのアーカイブ内に記事本文をいれないようにしたことで、
トラックバックやコメントリンクを復活させることができた。
なにより再構築がチョッパヤになるのが超うれしい。
InternalError500もでないし。


by Daryl 2006年01月14日 05:50 | Permalink


日付アーカイブ

いつのころからか、日付アーカイブが個別アーカイブに化けていた。
つーか、メインテンプレートの記述が変だったwww

本来ならこうなっているべきなのだが

<MTCalendar><span id="calendar">
<MTCalendarIfEntries><MTEntries lastn="1">
<a href="<$MTEntryLink archive_type="Daily"$>"
><$MTCalendarDay$></a>
</MTEntries></MTCalendarIfEntries>
<MTCalendarIfNoEntries><$MTCalendarDay$>
</MTCalendarIfNoEntries>
</span>
</MTCalendar>

こんなのになっていた

<MTCalendar><span id="calendar">
<MTCalendarIfEntries><MTEntries lastn="1">
<a href="<$MTEntrypermalink$>">
<$MTCalendarDay$></a></MTEntries></MTCalendarIfEntries>
<MTCalendarIfNoEntries><$MTCalendarDay$>
</MTCalendarIfNoEntries>
</span>
</MTCalendar>

permalink=日付アーカイブテンプレートを使用、という設定なら上記でも問題なかったのだが、
日付アーカイブを作るとInternalError500がでるというので、
個別アーカイブに変更していたのだった。
で、そのときメインテンプレートのMTタグをMTEntrypermalinkにしたのか、
もともとそうだったのかわからないが、日付アーカイブへのリンクのはずが、
個別アーカイブになっていたわけだ _| ̄|○


by Daryl 2006年01月07日 01:54 | Permalink


hoodia gordonii?

意味不明なhoodia gordoniiとかいう概要なしTBが2件もついていた。
URLはhttp://www.hoodia-gordonii-now.com/だが、
読みにいってもDNSエラー。
SPAMなTBなわりには何がしたいのかワカラナス。

とりあえずソッコーあぼーんの上、禁止IPにセットしておいた。

ちなみに、フーディア(ホーディア)・ゴルドニィというのはアフリカ産のサボテンのこと。

ソース
科名:ガガイモ科 Asclepiadaceae
学名:Hoodia gordonii
属名(読み):ホーディア
園芸名:麗盃閣

なんでもこのサボテンのアルカロイドが空腹感に効くとかいうんで、
ダイエットフードとして用いられているとかなんとか。。
しかしなぜスパマーがサボテン?いみわかんね。


by Daryl 2005年12月18日 23:08 | Permalink


htaccess - Redirect

index.cgiのディレクトリを/cgi-bin/mtに変更したことで、
自動的にWeblogのTOPディレクトリも/cgi-bin/mtに移動してしまった。
つまり、index.rdfやindex.xmlなども/cgi-bin/mt以下にあることになる。
これはRSSリーダーでWeblogを読んでいる人(σ(゚∀゚ オレ!!もそうだが)にとっては、
更新履歴を取得するべきファイルが勝手に移動している(つまり更新が見つからない)
という困った事態になる。

というわけで、/index.rdfや/index.xml等へのアクセスがあった場合、
自動的に/cgi-bin/mt/index.*を読ませるようにしたかったので、
isweb_htasccessに追加記述してみた。

RedirectMatch /index\.rdf$ http://delta-j.web.infoseek.co.jp/cgi-bin/mt/index.rdf

一見うまくいきそうだが、htaccessのRedirectではまったことのある人には
これが大きな間違いであることがわかるはず。
その理由は↓参照。

  1. ブラウザ(あるいはRSSリーダー)は /index.rdfを取得しようとすると、
  2. サーバから http://delta-j.web.infoseek.co.jp/cgi-bin/mt/index.rdfという値を渡される
  3. しかし渡されたURIを使ってアクセスしにいくと、
  4. 今度はhttp://delta-j.web.infoseek.co.jp/cgi-bin/mt/http://delta-j.web.infoseek.co.jp/cgi-bin/mt/index.rdfというURIを渡される
  5. こうして永久にループし、タイムアウトする

というわけだ。
DocumentRootにあるファイル群(ディレクトリを含まない)が/cgi-bin/mt以下に移動しており、
単体のファイルへのアクセスだけをRedirectしたいのなら、htaccessへの記述は次のようになる。

RedirectMatch ^/([^/]*)$ http://delta-j.web.infoseek.co.jp/cgi-bin/mt/$1

この処理では、
"/"を含まないファイル名へのアクセス要求(つまり、トップディレクトリにあるファイル)に対し、
これをhttp://delta-j.web.infoseek.co.jp/cgi-bin/mt/ファイル名に置換し、ブラウザへと返す。

ブラウザが改めてアクセスしたとき、URIには"/"が含まれているので、
置換対象にはならない、というわけだ。

これに気がつくのに半日かかったσ(゚∀゚ オレ!!はボケナスです。
どうぞ罵ってください あ、ああ・・・・ _| ̄|○


by Daryl 2005年12月16日 00:01 | Permalink


recent_pinged_on その後

やっぱり表示が微妙に気に食わない(長い)ので
またテンプレート書き換え。

<h2>最近のトラックバック</h2>
<ul>
<MTEntries recently_pinged_on="10">
<li>●<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><br /> <MTPings lastn="10">
→<a href="<$MTPingURL$>" target="new" rel="nofollow"><$MTPingTitle$></a> (<$MTPingBlogName$>)<br />
</MTPings>
</MTEntries>
</ul>
表示はこんな感じになる。
recent_tb2.jpg
おさまりが悪いのをなんとかするならサイドバー幅をもっと広げればいいのかもしれないが、
それやるとかなりめんどくさいことになるんだよなあ・・orz

by Daryl 2005年12月15日 12:37 | Permalink


どのエントリについたトラックバックか?

最近のトラックバック一覧をみても、どのエントリに対するトラックバックかわからなくて、
TB返ししようにも探すのが面倒くさいなあ~と思っていたら
やっぱりみんな考えることは同じようで、Ogawa::Memorandaさんのところに
recently_pinged_on Pluginというプラグインがあった。
ダウンロード後、MTDIR/pluginsディレクトリに放り込むのはいつもと一緒。
あとはインデックステンプレートのトラックバックを表示している箇所を書き換えるだけ。

<MTPings lastn="10">
<li>
<a href="<$MTPingURL$>"><$MTPingTitle$></a><br>
from <$MTPingBlogName$></li>
</MTPings>

before

<MTEntries recently_pinged_on="10">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><br />
<MTPings lastn="10">
 └ <a href="<$MTPingURL$>" target="new" rel="nofollow"><$MTPingTitle$></a> (<$MTPingBlogName$><br />
</MTPings>
</MTEntries>

after

これだけでサイドバーにある「最近のトラックバック」が、自分の投稿したエントリの子供になるカタチで表示されるようになる。


>>続きを読む

by Daryl 2005年12月14日 09:55 | Permalink


コメント/トラックバックスパム対策

超マイナーなWeblogのうちにもコメント・トラックバックのSPAMは稀にくる。
有名どころと比べるとその数は1%にも満たないが、いちいち手動で削除するのも鬱陶しい。
(改めてみると鬱陶しいという漢字自体、相当うっとうしさ爆発だが)

すでにフィルターにはいっているIPアドレスもあるのだが、
串変えてあれこれやられたら面倒くさいので、スパムフィルターの導入を考えていた。

で、最初はこれをいれてみた →  MovableType用スパムブロックプラグイン MT-NGWordBlock v2.00

悲しいかなiswebの問題か、初期設定用のCGIが動作しない。
これが動かないとdbに登録できないので利用のしようがないのだ。
そこでやはりここしかないかと、Ogawa::Memorandaさんところにお邪魔。
ここにはQuasi-Spam Filter Pluginというプラグインがあるので、こちらを導入させていただいた。
つーか、アーカイブ展開したら/mt/pluginsディレクトリに放り込むだけ。
うちの場合は初期設定を若干変更し、コメント・TBスパムが成功したかのように
見せかけることにした(エラーになると何回も繰り返される可能性があるため)

$COMMENT_METHOD = 'CommentFilter';
$TBPING_METHOD = 'TBPingFilter';

試しにぶろっぐぴんぴんでダミーのトラックバックを送ってみると、見事にはじいてくれた。
iswebの場合、storable.pmがサーバにセットされていないので
(mt-check.cgiを実行してみればわかる)
mt.cgiの管理画面にQuasi-Spam Filter Pluginの表示はでない。出ないだけでちゃんと動くのでヨシとしよう。(でも同じOgawaさんとこの多重トラックバック防止はstorableなくても表示でるんだよなあ・・・)

Quasi-Spam Filter Pluginの場合、フィルタリングする内容は.plファイルの中にパターンとしてセットされているので、追加訂正とかはいちいちファイルのuploadしなおしになるが、
まあ手口として共通なものをいれておけばたいていは引っかかってくれるだろう。
多重トラックバック受信も先日のエントリ(http://delta-j.web.infoseek.co.jp/cgi-bin/mt/archives/2005/12/post_226.cgi)があるんで、何回同じのを送られても弾くようになっている。

これで完璧さー、、とかおもってたらBBSのほうにSPAMがきてた_| ̄|○
しょーがないのでhtaccess作って前歴のあるドメインは出入り禁止にしておいた。


by Daryl 2005年12月14日 07:57 | Permalink

«前ページ |  1  |  2  |  3  | 4 |  5  |  6  |  7  | 次ページ»