Manual:$wgSpamRegex/ja

詳細
この正規表現とマッチするテキストはwikiスパムとして認識されます.

これはMediaWikiのもっとも効果的な組み込みのアンチスパム機能の一つです. すべてのスパムをブロックしませんが、登録ユーザーにネガティブな影響をほとんど与えることなく、劇的にスパムを減らすことが出来ます. この構成変数の設定はmediawikiがテキストの投稿を検査して回答を得る方法を制御します. これはスパムであるか？ yesかnoか？

大きな例
次の例はスパム攻撃の被害を受けている中/小規模のwikiで試してみるのに良い設定です. 次のコードをLocalSettings.phpに貼り付けて下さい:

最後の2番目の行は文字列の終わりに"|"を持たないことに注意して下さい.

この例は共通のスパミングキーワード(Meta-WikiのSpam Blacklistからいくつか採用)とCSS hiddenスパムに対するテクニックを受け入れます.

スパムをブロックするために正規表現を使う
幸いにも上記の例がどのように動作をするのか推測することが出来ます. $wgSpamRegex設定を試して、サンドボックスのページを編集してみて、何がブロックされるのか見て下さい. ただし気を付けて下さい！誤検出を避ける、すなわち、正当な編集を不正にマッチすることに避けるために気を付けて下さい. ここで何が行われているのか最初に理解して下さい.

$wgSpamRegexに割り当てた設定、は正規表現です(Wikipediaの記事の正規表現を参照と正規表現関数を参照). 上記の例は、PHPの文字列を連結させるドット構文を利用して、いくつか行を越えて組み立てられた正規表現を表示します. これによって長い正規表現が幾分かきれいに見えますが、少し複雑にもなります.

シンプルな例
よりシンプルな例です:

アイディアは...これはスパムか？ yesもしくはno？であることを決定するということを覚えておいて下さい. この例では'buy-viagra'を含むテキストの投稿はすべてスパムとしてマッチします. 最初と最後の'/'記号は、 正規表現の構文の一部です.

いくつかの異なる単語/ドメインをブロックする
より多くの種類のスパムにマッチするように上記の例を拡張してみましょう:

単語の間で'|'記号を使うことで、上記の例ではいくつかのスパムの単語とスパマーによって推奨されたドメイン名がブロックされます.

$wgSpamRegexは、スパムリンクのURLを含めて、投稿されるテキストすべてに適用されます. そういう訳なので、ドメイン名をブロックすることは特定のスパマーを除外するためにとても効果的な方法になります.

誤検出を避ける！
誤検出を避ける方法はここで実際に試してみることで、それが悪い例を描き出すための最良の方法です:

多くのスパマーは'cialis'(some kind of drug. Who cares? not us!)を話したがるようなんで、上記のようにこの単語をスパムとしてマッチしたくなるかもしれません、しかし...

...この場合ではユーザーが'specialist'の単語を言及することも妨げてしまいます.

よくご覧下さい... この種類の失敗をすることがいかに簡単であるか？

ユーザーに不便を強いることなくスパマーを停止させたい場合は、正規表現の設定には注意して下さい.

別の正規表現のトリック
正規表現はとても強力です. $wgSpamRegexのマッチングはユーザーがwiki上で編集している間、URLだけでなくユーザーによって追加されたすべてのテキストに適用されます. 望む文字列にマッチするよい正規表現を実現できるのであれば、これによって望まないは何でもブロックできるようになります(誤検出を避けるために出来る限り限定したものに). 次のセクションでは、CSS Hidden Spamに対してこのパワーを利用します.

スパムマッチメッセージ
通常$wgSpamRegex設定が何らかのスパムにマッチしたとき、次のメッセージが表示されます:

''保存したいページはスパムフィルタによってブロックされました. これはおそらく外部サイトにリンクしていることが原因です. ''

次のテキストはスパムフィルタを起動させるものです: [word/domain name which was blocked]

望むのであればこのメッセージを変更することが出来ます. このテキストはMediaWiki名前空間にある編集可能なwikiページです. 'Special Pages' -> 'All System Messages'をクリックして'Spamprotectionmatch'もしくは'spamprotectiontext'に対するリンクをクリックします. トップタブで'Edit'の代わりに'View Source'を得る場合、編集権限がないことを意味します. sysopユーザーとしてログインする必要があります(もしくはインストレーションの間に構成したWikiSysopユーザー)

マッチしたテキストを表示する/隠す
正規表現を制限しすぎる、もしくは別の間違った設置をすると、誤検出することになるかもしれません. 実際上記の例ではまれな上場で正当なテキストにマッチすることがあります(ユーザーが本当にviagraを買いたい場合など). マッチするテキストが表示されることによって、MediaWiki:Spamprotectionmatchのメッセージは誤検出によっておこんった問題を減らすために手助けになります. これによって、$wgSpamRegexの設定に関して、ユーザーは管理者に問題を正確に報告出来るようになります. 同時に次善策を考える手助けもしてくれるので、wikiの編集に関して彼らは続けることが出来ます.

不幸にもサイトに訪問するスパマーに関する情報はとてもわずかです. (信じるかどうか別として)多くのスパマーが人間である一方で、スパマーの中には自動化されたロボットなので、それらはこの情報を見られません. これらの人間が. マッチする情報を手間をかけて探すことが出来、次善策を考案しようとします(例えば、ブロックしたドメイン名が見つからないが、様々な別のドメインにリンクする). 広く行き渡ったこの種の振る舞いがどのようになものか知るのは難しいですが、彼らを生き辛いようにしたい場合...

...MediaWiki:Spamprotectionmatchのメッセージを空にすることがでスパムにマッチする情報を隠すことが出来ます. 誤検出に関する点について承知していてこれだけをして、それらを避ける正規表現を慎重に設計します.

スパマーへのメッセージ
時折、スパマーはスパムと戦う人と、スパムの犠牲者に対する彼らの振るまいをオープンに議論をします. これらの議論から、彼らは本当に何も悪いことをしていないと信じていることは明らかです. さもなければ我々が伝えるべきです.

'MediaWiki:Spamprotectiontext'ページを編集して、スパマーへのメッセージを書きます. あなた自身の言葉である方がいいでしょう. スパマーが多くの異なるwikiに訪問するとやめるように告げる異なるメッセージを得ることになります. 誰が知るのでしょうか？恐らく彼らは何をしているのか考え始めるでしょう. メッセージを通りにかなった礼儀正しいものにすることがベターでしょう. 結局は彼らに対して論理的に説明することになります. 誤検出の場合正規のユーザーもこのメッセージを得る場合があることも覚えておいて下さい.

例:

''このウェブサイトは検索エンジンのランキングであなたのサイトを宣伝することを手助けする場所ではありません. リンク付きの不正なメッセージを追加して、このようにwikiのサイトを周回することは'wikiスパミング'と呼ばれます. これは完全な反社会的な行為です. 違法行為でなければ、間違っていないということを意味するものではありません. ''

多くの場合、時間の無駄ですが、少数のスパマーが彼らの才能を良いことに使うようになるかもしれません.

CSS Hidden Spam
MediaWikiはHTMLタグとCSSスタイル定義に関してはとても寛容です(Help:HTML in wikitext on Meta-Wikiを参照).

これによってスパマーがビューからスパムをこっそりと隠すトリックを考え出す機会を与えられます. ページには現れませんが、編集ボックスに現れ、変更が'最近の更新'表示に姿を現します. そういうわけでリンクをホストすることによるスパマーの手助けの効果を考える前に正規のユーザーに混乱がもたらされます. 一般的に'CSS Hidden Spam'は(簡単には)見つからず、無視できないので、悪いものです.

問題は2005年にchongqed.orgの人々によって特定され、2006年になって大抵のmediawikiスパマーがこのトリックを使うまでに大きく悪化しました.

スパマーが使うCSSトリックを防止するために正規表現を使うことが出来ますこれらの2つは('|'記号を使って結びつけられた)上記の全部の例を合併したものです:

形式のCSS hiddenスパムを防止するため: overflow:\s*auto;\s*height:\s*[0-4]px;

style="display:none;"形式のCSS hiddenスパムを防止するため: style\s*=\s*\"\s*display\s*:\s*none";

スタイルタグの様々な属性を一緒に許可しないことを好む場合の少し厳密な設定: $wgSpamRegex = "/\<.*style.*(display|position|overflow|visibility|height)\s*:.*>/i";

...しかしあなたが望むよりもユーザーを制限することが始まっているかもしれません.

すべての外部リンクをブロックする
次の正規表現によってすべての外部リンクをブロックすることが出来ます:

明らかにこれは本当にユーザーに対して制限があります(もはや何もリンクできません). そういうものとして、スパム問題に対して貧弱な解決方法です(完全なロックダウンよりもわずかにベターですが)

これを本当に行っている場合、必ず'MediaWiki:Spamprotectiontext'ページで何が行われたのか説明して下さい.

wikiスパムと戦う別の方法
$wgSpamRegexはMediaWikiで利用できるアンチスパム機能のもっとも効果的なものの一つですが、別のトリックもいくつかあります. Anti-spam FeaturesとSpamRegex extensionもご覧下さい.