スパム投稿を防ぐためのMediaWikiエクステンション ConfirmEdit

Extension

北大Wikiで利用しているMediaWikiではエクステンションを活用することで機能拡張ができます。

この記事では実際に利用しているエクステンションを紹介します。

投稿時に質問をするConfirmEdit

スパム投稿を防ぐために有効なエクステンションです。

投稿時やユーザー登録時に質問することによって機械的な操作を防ぎます。

デフォルトでは極シンプルな算数の問題を解かされる機能があるのですが、botによって突破される危険性が高いため、北大WikiではQuestyCaptchaプラグインを利用し、問題に回答することで承認される設定にしています。

北大の初代教頭として「ボーイズビーアンビシャス」という有名な言葉を残したのは、カタカナ4文字で何先生でしょうか。(ログインするとスキップできるようになります)

答えは北大Wikiに書き込もうとする人には難しくないものです。特に日本語による回答を設定していることで、海外のユーザーに突破されにくくしています。

「カタカナ4文字」と指定しているので間違うことはほぼないでしょう。ちなみに半角カナでも答えられるように設定しています。

コード例

LocalSettings.php に以下のように設定を書き込みます。

wfLoadExtension( 'ConfirmEdit/QuestyCaptcha' );
$wgCaptchaClass = 'QuestyCaptcha';
$wgCaptchaQuestions[] = array(
    'question' => "北大の初代教頭として「ボーイズビーアンビシャス」という有名な言葉を残したのは、カタカナ4文字で何先生でしょうか。(ログインするとスキップできるようになります)", 
    'answer' => ["カイトウ", "カイトウ"]
);
$wgCaptchaTriggers['edit'] = true;
$wgCaptchaTriggers['create'] = true;
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin'] = true;
$wgGroupPermissions['user']['skipcaptcha'] = true; # 登録 ユーザは Captcha をスキップできる
$wgGroupPermissions['sysop']['skipcaptcha'] = true; # sysop ユーザは Captcha をスキップできる

ソースコード内のコメントにもあるように、登録ユーザーや管理者ユーザーにはわざわざ質問することがないようにしています。この理由からも北大Wikiで編集をする際にはユーザー登録してから編集することがオススメです。

編集プレビュー時の裏ワザ

非登録ユーザーで編集しようとすると質問されてしまうのですが、編集確定(変更を保存)する前に「プレビューを表示」をする際にも何か答えないと「このフィールドは入力必須です」と表示されてしまい、プレビューできません。

しかしプレビューの際には正しい答えである必要がありません。とにかく適当な文字が入っていればプレビューは表示できます。

もしユーザー登録せずに編集前プレビューを利用したい場合は試してみるといいでしょう。もちろんそんな煩わしさを避けるためにも、北大Wikiについてはユーザー登録されることをオススメします。

参考資料

コメント