WP: (続)Akismet de-spam view Hack
前回までのあらすじ
「何っ!?ME 2.0.4 同梱の akismet.php は、2.0.5 とコードが違うだと!?」
情報部に緊張が走る。WordPress 本体のアップグレードという障壁を前に、ひろまささんハック を諦めようとするぼの。
Akismet による誤捕獲は見逃され続けてしまうのか――!?
WP: (未)Akismet de-spam view Hack
今度こそハック
そんな中、WPの魔術師 ひろまささんより、救済の手が差し伸べられた。
wp-content/plugins/akismet/akismet.php 267行目でオッケー。
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_approved = 'spam'AND LENGTH(comment_content) <> CHAR_LENGTH(comment_content)ORDER BY comment_date DESC LIMIT 150");
そうなのだ。仮に1ヶ月放置したところで、うちのサイトにマルチバイト文字コメントが150件以上来ようはずもない。リミット切られようが、ページ替えがなかろうが、関係ないのだった。
ハック後の捕獲画面:
うーむ、すっきり。
しかし、1件もないと逆に削除しにくかったりもする。(^^;
ついでに、ここに [ 全て見る » ] ボタンを付けて、必要に応じて全スパムを見ることもできるように、気が向いたらするかもしれない。
ダッシュボードに件数表示
(注) 「Ronan くんお誕生記念・バージョンアップ前にいろいろ試してみよう週間」は延長され、今月も引き続き「試してみよう月間」となっております。
先日のダッシュボード修正により、Akismet 累計スパム数ではなく、現在の捕獲数を表示するようにしてあった。
今回は、誤捕獲の可能性がダッシュボードで分かるように、マルチバイトものの捕獲数を併記してみる。
323行目あたり(ME2.0.4同梱の akismet.php の場合):
function akismet_stats() {
// $count = get_option('akismet_spam_count');
$count = ksd_spam_count();</code>
$mbs_count = mb_spam_count();
if ( !$count )
return;
$path = plugin_basename(FILE);
echo '<h3>'.('Spam').'<h3>';
echo '<ul><li>'.sprintf(('<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.'), 'http://akismet.com/', "edit.php?page=$path", number_format($count) ).'</li>';
if ( $mbs_count ) {
echo '<li><strong><a href="edit.php?page='.$path.'">要チェック</a></strong>: スパムじゃないかもしれないものを '.$mbs_count.' 件捕獲中です。</li>';
} else {
echo '<li>この中に日本語を含むものはありません。</li>';
}
echo '</ul>';
}
add_action('activity_box_end', 'akismet_stats');
function mb_spam_count() { // マルチバイトスパムの件数
global $wpdb, $comments;
$count = $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_approved = 'spam' AND LENGTH(comment_content) <> CHAR_LENGTH(comment_content)");
return $count;
}
mb_spam_count()というネーミングは、php のマルチバイト関数みたいでイマイチ。orz- 日本語もなんだかおかしいけど、まあいいや。2.0.5 にアップしてからまともに直そう。
- っていうか、その前に 2.1 がきてしまうのだろうか。 Σ(゜д゜lll)
- (メモ) TOC Generator より DeCoder を先に動かしたい。コードブロック中の h3 タグにも目次用 id が振られてしまう。(・;) とりあえず実体参照の手書きで回避。
改造後・初トラックバック
ひろまささんが、ダッシュボード改造の件を元記事に追記して、トラックバックしてくださいました。(^-^)
そしてそれを Akismet くんが捕獲。 … orz
ひろまささん、ごめんなさい。(・;)
でも、早速動作を確認できて、ありがたくもありました。
マルチバイト捕獲時画面:
ダッシュボード

捕獲画面切り替えハック 追記
Akismet htaccess extension2 を使うようになると、IP でアクセス制限する前に、本当にその IP を弾いていいのかを確認するため(欧米語系でも誤捕獲の可能性はあるので)、捕獲内容をチェックする必要が出てきた。
思いつきで従来の一覧表示もできるようにしてみました。
雑念ベース » Akismet 有名ハックの解説と追加ハック
よしともさんの追加ハックをすると、次のように自動的に 通常表示←→マルチバイトスパム表示 が切り替わるようになる。
- 普段は全スパム表示4
- マルチバイトスパムが捕獲されているとき、ダッシュボードの「要チェック」をクリックすると、マルチバイトスパムのみを表示
実際に試してみると、「このときはこの表示で見たい」という気持ちのままに、自然に表示が切り替わってくれて、とても使いやすいです。ありがたく使わせていただきますー。
従来からの修正箇所(うちの場合):
適用開始: 2007.1.9~
267行目: ひろまささんハックの行を差し替え。
- (旧)
$comments = ~ (新)
switch ($_GET['akismet_spam_list']) { case 'mb': $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_approved = 'spam' AND LENGTH(comment_content) <> CHAR_LENGTH(comment_content) ORDER BY comment_date DESC LIMIT 150"); break; default: $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_approved = 'spam' ORDER BY comment_date DESC LIMIT 150"); }
switchによって次のように場合分け:case 'mb':→ ひろまささんハックコードでマルチバイトスパムのみ表示default:→ ハック前コードで通常表示
これによって、
http://~/wp-admin/edit.php?page=akismet/akismet.php&akismet_spam_list=mbでアクセスされたとき、case 'mb':に該当するのでマルチバイトスパム表示、&akismet_spam_list=mbが付かなければ通常表示となる。- (旧)
ぼのハックの「要チェック」の行に強調部分を追加(
function akismet_stats()内)。- (旧)
echo '<li><strong><a href="edit.php?page='.$path.'">要チェック</a></strong>: スパムじゃないかもしれないものを '.$mbs_count.' 件捕獲中です。</li>'; - (新)
echo '<li><strong><a href="edit.php?page='.$path.'&akismet_spam_list=mb">要チェック</a></strong>: スパムじゃないかもしれないものを '.$mbs_count.' 件捕獲中です。</li>';
これによって、要チェックのときのリンク URI が
http://~/wp-admin/edit.php?page=akismet/akismet.php&akismet_spam_list=mbになる。- (旧)
関連ハックまとめ 追記
- 捕獲画面にマルチバイトスパムのみ表示:
hiromasa.zone :o) » Akismet de-spam view Hack [ME 2.0.5]- ME 2.0.4 の場合は、今のこのページの「今度こそハック」の項を参照。
- ダッシュボードにマルチバイトスパム捕獲数表示: このページ [ME 2.0.4]
- 捕獲画面の通常表示←→マルチバイトスパム表示切り替え
- 方法A: ダッシュボードのマルチバイト捕獲表示クリックで切り替え - 雑念ベース » Akismet 有名ハックの解説と追加ハック [ME 2.0.4]
- 方法B: URI の末尾に引数を追加してアクセス - BirDesign » Akismet de-spam view Hack
- サイドバーにマルチバイトスパム捕獲数・承認待ちコメント数を表示:
BirDesign » 日本語スパム数を表示するプラグイン — ダッシュボードじゃなくてブログ上に件数を表示する Kairaさん作プラグイン、Sidebar Awaiting Moderation。
- 反省のため、広辞苑で「あだ」を引きました。
あだ【仇・敵】
1. 攻めて来る者。敵兵。
2. 自分に害をするもの。かたき。「親切心がかえって―になる」
3. うらみ。遺恨。「恩を―で返す」 「広辞苑」第三版/新村 出 編(岩波書店)あれ?2 の意味じゃないのか…!Σ(゜д゜lll) [back]
- 注: 最新版は Worst Offenders という名前で出ています。Akismet htaccess extension は Akismet 1.15 用です。Akismet と差し替えて使うので、WP 2.0.5 以上に使うと Akismet がダウングレードされることになります。[back]
- リンクからよしともさんのページを知りました。ハックの解説ありがとうございます。そして、お誕生日おめでとうございます。
[back] - ME2.0.4 付属 Akismet では 150件まで。[back]



hiromasa.zone :o) :
November 27th, 2006 at 2:00
Akismet de-spam view Hack…
もーどうしようもなく、Akimet くんがスパムじゃないコメントを捕獲してくれます。 どうしようかと思案…。
とりあえず、うちのサイトの場合基本は日本語だっ (more…)
ぼの :
December 1st, 2006 at 2:00
ひろまささん、ありがとぉー。o(^-^)o
動作確認を兼ねて送ってくださったとは。。。(感涙)
ということで、ぼのも追記返しですー。
Tips Community :
December 11th, 2006 at 0:08
スパム対策プラグイン Akismet に日本語フィルタを搭載…
最近の WordPress には標準装備されているスパム対策プラグインである Akismet 。
スパムを自動判定するということもあって、スパムではないコメントやトラッ (more…)
おで(Odyssey) :
December 13th, 2006 at 0:50
こんばんは!
我が家も1日100件程度だったスパムが本日ついに1日1000件越えを達成してしまったのでorz、ひろまさ’sハック+ぼの’sハックの二重対処をぶちこんでふぁいあああああああしてやろうと思ったのですが、ぼの’sハックでエラーが出ちゃいました。
2.0.5だとダメみたいですね。てへ(/ω\)
ぼのさんも早くバージョンアップしてしてヽ(´ー`)ノ
ぼの :
December 15th, 2006 at 0:14
>べんじゃみんさん
はじめまして。Tips Community、いつも拝見しております。(^-^)
トラックバックありがとうございます。
うう、それなのに、ごめんなさい。。。べんじゃみんさんのTBも捕らわれの身になっていました。(・;)
改造を試してくださって、どうもありがとうございました。
同じ状況の方がいらして、少しでもお役に立てたと分かってうれしかったです。
さらに、常々「かわいいなあー」と思っていたパンダくんfavicon が表示されていて、ダブルでうれしいですー。
今後ともよろしくお願いいたします。
>おでさん
こんにちは。トライしてくださってありがとうございますー。
2.0.5とはあそこも違うのですねえ。ごめんなさいです。。。
でも、うちのバージョンアップは 2月くらいです。てへ(/ω\)
そんなわけで、Akismet de-spam view Hack シリーズ第三弾は、おで’sハックになる可能性が急浮上…?
早くトラックバックしてしてヽ(´ー`)ノ(拝借)
なぁんて。(笑)
Odysseygate.com :
May 16th, 2007 at 1:15
[WP] Akismet de-spam View Hack…
スパムのちスパム、ところによりスパムということで相変わらずスパム多いですね。こんなに多いといちいちAkismetの画面なんて見てられません。
Akismet de-sp (more…)