Extension:AbuseFilter/ja

AbuseFilter（不正利用フィルター）拡張機能では、権限のあるユーザーが、ユーザーによる編集などのアクションが特定の条件に一致した場合に取るべきアクションを設定することができます.

例えば、匿名のユーザーが外部リンクを追加できないようにしたり、2000文字以上の削除を行ったユーザーをブロックするフィルターを作成することができます.

利用者権限
拡張機能をインストールしたら、"LocalSettings.php"にユーザー権限を設定する必要があります.

例えば、以下の設定例では、管理者にはAbuseFilterの全操作を、一般利用者には公開しているフィルターに限り設定、ログの閲覧を許可しています.

緊急速度制限
不正利用フィルターには最近の編集および特定の閾値に該当する最新の操作を、自動的に速度を制限 (無効化) させる機能が付属します.

これはフィルターに有害な編集ができないように、ウィキなどで特定の操作をする全ての利用者をブロックする措置です.

フィルターを無効化する条件は以下の変数で制御します:
 * - 観察期間の全ての操作に占める割合.
 * - 観察期間にフィルターが発動した件数.
 * - 考慮するフィルターの古さ. フィルターの最後の編集がこの秒数より古い場合、すでに絞り込まれていない限り、フィルターは絞り込まれません.
 * - 閾値と対比させた最近の操作の最大件数. 各操作はカウンターを増加させ、カウンターが設定された値に達すると、カウンターとすべてのフィルターに一致する最近の操作のカウントが0にリセットされることに注意してください.

速度制限フィルターは、フィルターのリスト（Special:AbuseFilter）の状態, で識別できます. 速度制限は密かに発動し、フィルターがいつ速度制限を発動したのか確認する方法はありません.

フィルターが速度制限を受けると、危険な操作 (通常、利用者をブロックしたり、グループから除去したりするような特別な権限に制限される操作で、$wgAbuseFilterActionRestrictions によって制御される) は行わず、「安全」な操作だけが許可されます (進行中の操作を警告したり防止したりすることができるものです). 速度制限のフィルターは自動的は有効になりません. 速度制限を無効にするにはフィルターを編集する必要があります. フィルターに何らかの編集を加える必要があることに注意してください. フィルターのメモを変更するだけで十分です.

フィルターを編集すると統計期間が更新され、直前の編集から短期間にまた処理速度が落ちる状況になった時、作動不能になる可能性があること、また設定値によってはご利用のウィキで不正利用の編集が正当なものを上回った場合、フィルターが実効性を失う点にご注意ください.

フィルターの作成と管理
拡張機能がインストールされた後は、Special:AbuseFilterから不正利用フィルター管理ページに飛び、フィルターを作成、テスト、変更、削除できます.


 * フィルターの記述法 - フィルタの記述法の基本
 * アクション
 * グローバルなルール
 * 制限条件の適用を最大化するには
 * 拡張機能をインストール後、対象のフィルターを読み込むにはウィキペディアのフィルター管理ページを開いて読み込む対象のフィルターを選択 (例) して「ツール」欄の「このフィルターを別のウィキにエクスポートする」をクリック. 表示された文字列をコピーし、フィルターを利用するウィキの「Special:AbuseFilter/import」を開き、ペーストします.
 * m:Small wiki toolkits/Starter kit/AbuseFilter - 小規模ウィキコミュニティのガイドライン（メタウィキ）

API
不正利用フィルターは2つのAPIリストモジュールを作成します. 一つは不正利用フィルター ("abusefilters") 、もう一つは不正利用ログの詳細情報です. これらは他の MediaWiki のログ ("abuselog") からは分離されているので、 API を使用しての不正利用フィルターの作成や修正はできません.

list = abusefilters
以下にフィルターについての情報を提示しています.


 * パラメーター:
 * - 列挙を開始するフィルター ID
 * - 列挙を停止するフィルター ID
 * - 列挙する方向 (古い順、新しい順)
 * - これらの基準を満たすフィルターのみ表示 (enabled|!enabled|deleted|!deleted|private|!private)
 * - 列挙するフィルター数の上限
 * - 取得するプロパティ (id|description|pattern|actions|hits|comments|lasteditor|lastedittime|status|private)

フィルターの提供時に  で指定したプロパティの一部は適切な利用者権限がない限り検出されません.


 * 例:

list = abuselog
不正利用フィルターで作動するインスタンスの一覧.


 * パラメーター:
 * - 列挙を開始するタイムスタンプ
 * - 列挙を停止するタイムスタンプ
 * - 列挙する方向 (古い順、新しい順)
 * - 特定の利用者または IP アドレスが試行したエントリーに限定.
 * - 操作が特定のページに関するエントリーのみ表示.
 * - 特定のフィルター ID を起動したエントリーのみ表示
 * - 列挙するエントリー数の最大値
 * - 取得するプロパティ: (ids|filter|user|ip|title|action|details|result|timestamp|hidden|revid|wiki)


 * 例:

起こりうるエラー

 * 利用者の中には新規のフィルタ作成もしくは既存のフィルタの編集に失敗し、編集しようとしたページが表示 (リダイレクト) されてしまうことがあります. SSL 認証を採用する Wiki をご利用の場合だと、エラーの要因は 値つまり「https://」ではなく「http://」を採用した url に反応したと想定できます. このエラー発生は、ブラウザが httpドメインに対する警告としてja:編集フィルターが発動します. (Topic:T23dyyih0ofjada5)

他の拡張との連携
不正使用フィルターを他の拡張機能と組み合わせて使う方法はいろいろあります.

フィルターに変数を追加するには
不正使用フィルターに新規に変数を追加できます. サンプルを. 実施するには、次の手順に従ってください.


 * ホックのハンドラを追加します. 変数の追加には を使い、 に変数の名称、 に言語版の略称を当てます.  完全なキーは になります.
 * 先ほどのポイントに翻訳したメッセージを加えます.
 * 変数を計算するフックハンドラーを選択. 使用事例により以下の選択肢があります.
 * フックの実施. ページ関連の変数に特化したもの
 * フックを実行. 利用者関連の変数に対応.
 * を実行. ページあるいは利用者に特化しない変数に対応.
 * フックを実行; 他のフックに比べてやや柔軟性がある代わりにマイナス面もある. 「最近の変更」の過去版を調べるときに変数が使えない. もしその機能を実行したいなら (試用は推奨される)、上記から選んだフックに限定して使い、3番目のパラメータ  を必ず設定すること.
 * フックのハンドラ内には、変数を指定する方法が2種類あります.
 * 「直接的」な方法ではを呼び出します. これは変数が単純で計算処理が重くない場合に限定されます. フィルターが使わない変数も計算処理の対象だからです.
 * 「手抜き」式ならを呼び出します. この場合は 'method_name' は (独自の) 識別子として変数の計算に使われます.  (そのため接頭辞としてご自分の拡張機能名 + 'method_name' と描くように推奨されます. ) 手法の登録には  フックにハンドラを設定してください. その中には命名した 'method_name' の一致を$method がパスするかどうか確認し、する場合のみ変数を計算させます.  最後に、変数を処理しておくべきパラメータは$paramsにまとめてあります. これらの送り先は computeVariable フックのハンドラです.  この事例を確かめるには、統合ログインCentralAuth の を表示してください.

カスタム操作の追加
ハンドラにカスタム操作を追加すると、個別のフィルターが実施する操作を増やせます. その方法は、操作に名前をつけて次へ進みます (例として 'my-action' とする):


 * クラスを作成してたとえば MyAction と命名、文字数は \MediaWiki\Extension\AbuseFilter\Consequence 以上で HookAborterConsequence または ConsequencesDisablerConsequence を要求できる
 * AbuseFilterCustomActions フックに購読者を追加; 購読者は、フックの解説文書に記したコールバックを必ず提供することで、上記のクラスのインスタンスが返される. たとえば:

次に以下の多言語版用の i18n メッセージを追加する必要がある; メッセージの用途を確認するには、'my_action' にたとえば 'block' を代入する.



新しい規則グループの追加
新しい規則のグループを複数追加し、既存の不正使用フィルターをグループ化することも可能です. 現状ではフィルターごとに指定できるグループは1件に限られる点にご留意ください(T116642). 現在、この機能を活用するのはExtension:StructuredDiscussionsのみです. 実行するには次の措置が必要です.


 * グループ名を  に追加
 * コードを追加し、ご利用のグループでフィルターを発動させます. AbuseFilter はその部分の措置自動化してありません.   対象を作成してご利用のグループ名で渡します.

関連項目

 * この拡張機能が有効な WMF のウィキ (設定を含む)