2012-05-22 9 views
5

私のウィキには500人ほどのスパムロボットと実際に登録されたユーザーがいます。私は彼らのページを削除するために核を使いましたが、彼らはただ再ポストしています。私はreCaptchaを使ってコントロール下でスパンボット登録をしています。今は、一度に約500人のユーザーを削除/ブロック/マージする方法が必要です。MediaWiki大量のユーザーの削除/マージ/ブロック

答えて

7

あなただけ手動でuserテーブルからアカウントを削除、または少なくともクエリなどとの認証情報を無効にできます。

UPDATE /*_*/user SET 
    user_password = '', 
    user_newpassword = '', 
    user_email  = '', 
    user_token  = '' 
WHERE 
    /* condition to select the users you want to nuke */ 

(ああ、もしあれば、あなたの$wgDBprefix/*_*/を交換し、そして行います。最初のバックアップを作成します。)

user_passworduser_newpasswordフィールドを一掃するには、ログインからユーザーを防ぐことができます。また、 user_emailを一掃する電子メールを介して新しいパスワードを要求し、一掃することを防ぎ user_token低下します彼らが持つ可能性のあるアクティブセッション。


アップデート:私は最初の投稿ですので、私はMediaWikiのインストールからスパムのユーザーとコンテンツを大量にクリーンアップの更なる経験をしました。私は使用した方法(基本的にデータベースから最初にユーザーを削除し、孤立したすべてのリビジョンを一掃し、最後にrebuildall.phpを実行してリンクテーブルを修正する)を文書化しました。this answer on Webmasters Stack Exchangeにあります。


また、あなたも有用Extension:RegexBlock見つけるかもしれない:

「をRegexBlockは、正規表現を使用して、ユーザー名とIPアドレスを、ブロックの表示およびブロック解除するためのインターフェイスでの特別ページを追加拡張したものです。」

+0

ありがとうございます。手動でユーザーテーブルを削除するとうまくいきました。私はPHPmyAdminにselect allボタンがあることをうれしく思っています。 836人のスパムロボットと5人の実際のユーザーがいました。 – user1410744

+0

[Deleteuser](http://www.mediawiki.org/wiki/Extension:Deleteuser)拡張機能は、SQLコマンドで危険なミスをする危険性を避けるために役立ちます。 – qris

2

受け入れられた回答に解決策を適用する際にリスクがあります。この方法はデータベースに損害を与える可能性があります。ユーザーを不完全に削除し、参照整合性を保つために何もせず、ほとんどの場合、表示エラーが発生します。

私はバルク 回避策を通じて併合を達成するために少し厄介な方法を持っている:より良い解決策が提示され

Hereは、(前提条件は、User merge extensionがインストールされていることです)。誰かがそれが役に立つと思うことを願っています!それらを格納、すべてのSPAMuserIDsのリストを準備し

  1. (またはバルク交換 機能を備えたテキストエディタを使用してスプレッドシートに少し 文字列連結のスキルを持っている必要があります;または1つは、Python または類似のスクリプトを使用することができます)スプレッドシートまたはテキストファイルに保存します。リストは、ユーザ作成ログから作成された であってもよい。 dBのアクセス権を持っている場合は、Wiki_userテーブルをローカルリストにインポートできます。

  2. Merge &ユーザーの削除フォームを送信するために使用されるpostメソッドは、ボタンをクリックすることによってgetメソッドに変換する必要があります。この は長いURLを取得します。2番目のコメント(Matthew Simoneau著) 、2009年1月13日) http://www.mathworks.com/matlabcentral/newsreader/view_thread/242300 の方法を参照してください。

    ます。http://(お使いのWikiドメイン)/特別:?UserMerge olduser =(OldUserNameHere)& NEWUSER =(NewUserNameHere)&は、deleteuser = 1つの&トークン= 0d30d8b4033a9a523b9574ccf73abad8 結果のURL文字列は、以下のようなものでなければなりませんさて%2B \

  3. 、4つのセクションにこのURLを分割:

ここで、テキストエディタやスプレッドシートを使用して、
A: http: //(Your Wiki domain)/Special:UserMerge?olduser= 

B: (OldUserNameHere) 

C: &newuser=(NewUserNameHere)&deleteuser=1 

D: &token=0d30d8b4033a9a523b9574ccf73abad8%2B\ 
  • 、パートAとサフィックスを持つ各スパムのユーザーIDを接頭部C及びDパートCとのそれぞれが NEWUSERを含むであろう(これ特別に作成された単一ダミーのユーザーIDです)。パートDの トークン文字列は、セッションごとに 人ごとに変更されるセッション依存トークンです。新しい セッション/作業のバッチが必要になるたびに新しいトークンを取得する必要があります。

  • 上記の手順では、1人のユーザーに対してMerge & Delete操作を実行するのに適した長いURLのリストを取得する必要があります。 シンプルなHTMLファイルを作成して表示し、FirefoxのDownThemAll のようなバッチダウンローダを使用することができます。 開始と終了で、各行に2つ以上の「Linktext」を追加します。また、上に追加して 下に追加してください(例::) userlist.html

  • Firefoxでファイルを開き、DownThemAllアドオンを使用してすべてのファイルをダウンロードしてください。効果的には、各ユーザー の[&削除]ページをマージしてボタンをクリックしています。

  • これは、あなたがこの方法に従う たら、あなたは 多くの手作業なしで数万ユーザーを削除することができ、最初に長く、トリッキーな仕事に見えるかもしれないが。

    ダウンロードしたhtmlファイルの一部を開いて(または 別のウィンドウの最近の変更を調べることで)正常に動作しているかどうかを確認できます。

    1つの利点は、 MySQLページを直接編集しないことです。また、データベースに直接アクセスする必要もありません。

    元のテキストにはいくつかの欠陥が含まれているので、私は引用したテキストに少し書き直しました。

    +1

    実際には、私の答えで与えられたクエリは*すべてのユーザーを削除しません(ログインできないように認証情報を無効にするだけです)ので、参照整合性は損なわれません(MediaWikiでは、とにかく)あなたのSpecial:ListUsersがまだ迷惑メールアカウントで満たされている場合を除いて、表示に関する問題は発生しません。つまり、私はもはやその方法をほとんどの場合推奨しません。 [スパムユーザーとその投稿を完全に削除し、メンテナンススクリプトを使用してデータベースを修正する](http://webmasters.stackexchange.com/a/45486)ははるかにクリーンです。 –

    +0

    @IlmariKaronen、リンクありがとう、良い解決策にも思われる。 – Ruut

    関連する問題