匿名ユーザーのIPアドレスを非表示にする

提供: 何かしら図書館

MediaWikiの匿名投稿者・編集者のIPアドレスを非表示(もしくは別の文字列に置き換える)方法。 なお、MediaWiki Ver.1.14.1に対応。


目次

[編集] IPアドレスを置き換える

元情報は2ch

正規表現(preg_replace)を使うことで、IPアドレスを一律に特定文字に置き換えることができます。 MediaWikiのインストールフォルダにある、該当ファイルに以下を追記しましょう。


[編集] 編集履歴

includes/PageHistory.phpを編集します。 各ページの編集履歴に表示される、IPアドレスを別の文字列に置き換えます。

wfRunHooks( 'PageHistoryLineEnding', array( &$row , &$s ) );

MediaWikiのVer.によっては

wfRunHooks( 'PageHistoryLineEnding', array( $this, &$row , &$s ) );

この行の次に以下を追記してください。

$s = preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $s);


[編集] 差分表示

includes/diff/DifferenceEngine.phpを編集します。1.14からはincludes/diff/DifferenceEngine.phpです。 履歴の差分表示をした際に表示される、IPアドレスを別の文字列に置き換えます。

'<div id="mw-diff-otitle2">' . $sk->revUserTools( $this->mOldRev, true ) . "</div>" .

以下のコードに書き換えてください

'<div id="mw-diff-otitle2">' . preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $sk->revUserTools( $this->mOldRev, true )) . "</div>" .


'<div id="mw-diff-ntitle2">' . $sk->revUserTools( $this->mNewRev, true ) . " $rollback</div>" .

以下のコードに書き換えてください

'<div id="mw-diff-ntitle2">' . preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $sk->revUserTools( $this->mNewRev, true )) . " $rollback</div>" .


ここで2か所を書き換える理由は、差分表示した際に前版と最新版との2つの編集者履歴が表示されるからです。


[編集] 画像関連

includes/ImagePage.phpを編集します。 画像ページの履歴に表示される、IPアドレスを別の文字列に置き換えます。

$s = $list->beginImageHistoryList($navLink);

この次の行に以下を追記してください。

$s = preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $s);


includes/ImageGallery.phpを編集します。 Special:NewImagesに表示される、IPアドレスを別の文字列に置き換えます。

. $textlink . $text . $nb

以下のコードに書き換えてください

. $textlink . preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $text) . $nb


[編集] 最近更新したページ

includes/special/SpecialRecentchanges.phpを編集します。 Special:Recentchangesに表示される、IPアドレスを別の文字列に置き換えます。

$s .= $list->endRecentChangesList();

以下のコードに書き換えてください

$s = preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $s);


[編集] RSSフィード

最近更新したページの、配信されるRSSフィードに編集者情報が表示されます。その部分を置き換えないと、IPアドレスがそのまま表示されてしまうため、上記だけでは不完全です。


includes/Feed.phpを編集します。

<?php if( $item->getAuthor() ) { ?><dc:creator><?php print $item->getAuthor() ?></dc:creator><?php }?>

上記を下記に書き換えてください

<?php if( $item->getAuthor() ) { ?><dc:creator><?php print preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $item->getAuthor()) ?></dc:creator><?php }?>


<?php if( $item->getAuthor() ) { ?><author><name><?php print $item->getAuthor() ?></name></author><?php }?>

上記を下記に書き換えてください

<?php if( $item->getAuthor() ) { ?><author><name><?php print preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $item->getAuthor()) ?></name></author><?php }?>

書き換え箇所が2つ存在するのは、RSS2.0とAtomの両方をMediaWikiがサポートしているからです。 もし、RSSフィードを配信しないのであれば、LocalSettings.phoで$wgFeedをfalseにしてください。


[編集] 新しいページ

includes/special/SpecialNewpages.phpを編集します。 Special:Newpagesに表示される、IPアドレスを別の文字列に置き換えます。

$ulink = $this->skin->userLink( $result->rc_user, $result->rc_user_text ) . ' ' .
	$this->skin->userToolLinks( $result->rc_user, $result->rc_user_text );

この行の次に以下を追記してください。

$ulink = preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $ulink);


[編集] 注意事項

この方法でIPアドレスをMediaWiki上に一切表示しなくなります。しかし、これは投稿者のIPアドレスを"名無しさん"に置き換えて表示しているだけなので、IPアドレスが記録されていないというわけではありません。 投稿者のIPアドレスを調べてたい場合、以上のうちどれかを削除することで確認することが出来ます。


[編集] 匿名ユーザーを一律名無しさんとする

includes/User.phpにある"$this->mName = IP::sanitizeIP( wfGetIP() );"を"$this->mName = 名無し;"と書き換える。これだけ。

これによって、匿名ユーザーはIPアドレスが表示されることなく名無しさんと表示される。これを使用すると、MediaWiki上では名無しというアカウントを持った人が投稿したと言うことになり、IPアドレス置き換えとは違ってMediaWiki上で誰か一人についてあれこれ調べることができなくなる。


また、名無しというアカウントが既に存在していたり、後から取得されたりすると、その人が投稿したことになってしまう。この場合はUsername BlacklistTitle Blacklistを使って事前に防ぐことが出来る。

ブラウザ
Google AdSense
個人用ツール