Extension:AbuseFilter/ja

AbuseFilter（不正利用フィルター）拡張機能は利用者が編集等の特定の種類の行動をとった場合、自動的に既定の挙動をするもので、権限を持つ利用者が設定・調整します.

例えば匿名利用者が外部リンクを追加できなくしたり、2,000文字以上を除去した利用者をブロックするなどのフィルターを作成できます.

利用者権限
拡張機能をインストールしたら、"LocalSettings.php" で利用者権限をセットアップしてください.

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

パラメーター

 * 緊急速度制限

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

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

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

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

フィルターが速度制限を発動した時、 で指定された制限された危険な操作は実行されず、"安全な"操作のみ実行が許可されます. 速度制限のフィルターは自動的は有効になりません. 速度制限を無効にするにはフィルターを編集する必要があります. フィルターに何らかの編集を加える必要があることに注意してください. フィルターのメモを変更するだけで十分です.

フィルターを編集すると統計期間が更新され、直前の編集から短期間にまた処理速度が落ちる状況になった時、作動不能になる可能性があること、また設定値によってはご利用のウィキで不正利用の編集が正当なものを上回った場合、フィルターが実効性を失う点にご注意ください. Filters can also get randomly throttled if the action count reaches, causing all filter matches count to reset to 0, and then someone repeatedly makes a filter to hit.

フィルターの作成と管理
拡張機能がインストールされた後は、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|user|title|action|result|timestamp|details) (ids|filter|user|ip|title|action|details|result|timestamp|hidden|revid|wiki)


 * 例:

起こりうるエラー

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

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

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


 * ホックのハンドラを追加します. 変数の追加には を使い、 に変数の名称、 に言語版の略称を当てます.  完全なキーは になります.
 * 先ほどのポイントに翻訳したメッセージを加えます.
 * 変数を計算するフックハンドラーを選択. 使用事例により以下の選択肢があります.
 * フックの実施. ページ関連の変数に特化したもの
 * フックを実行. 利用者関連の変数に対応.
 * を実行. ページあるいは利用者に特化しない変数に対応.
 * Implement the hook; this is a bit more flexible than the other hooks, but it has a downside: your variable will not be available when examining past RecentChanges entries. If you want to implement that feature (and it's recommended to do so), you should use one of the hooks listed above, and use its third parameter.
 * Inside the hook handler, there are two ways to add a variable:
 * 「直接的」な方法では を呼び出します. これは変数が単純で計算処理が重くない場合に限定されます. フィルターが使わない変数も計算処理の対象だからです.
 * 「手抜き」式なら を呼び出します. Here, 'method_name' is a (unique) identifier that will be used to compute the variable (it's recommended to prefix it with the name of your extension). To register the method, you should add a handler for the  hook; therein, you should check if the $method passed matches your 'method_name', and if so, compute the variable. Lastly, $params is an array of parameters that you'll need to compute the variable; these are passed to the computeVariable hook handler. For an example of this, you can check out CentralAuth's.

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


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

関連項目

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