MediaWikiでの大量ロールバック


6

そう、

StackOverflowでコードやプログラミングプラクティスなどの優れた情報を文書化するために使用する個人用のWikiがあります。私はSOの答えとBOOMのページの1つにリンクしました!スパムボット。

残念ながら、これに対する準備ができていないと、ほとんどのページがクリックすることのないサイトへのリンクでいっぱいになります。

私の質問は、個々のロールバックではなく、大量のロールバックをどのように行うことができるかです。たとえば、特定のIPアドレスによって行われたすべての変更を削除する方法はありますか?または、各ページを個別に確認し、手動でロールバックする必要がありますか。

助けてくれてありがとう!

編集:MediaWikiロールバックシステムも直感的ではないようです。ボットは各ページに少なくとも12個の変更を加えましたが、12個前の変更をロールバックすることはできません。


さて、Googleだけ:「マスロールバック」は、このユーザーJSスクリプトを
有効にし

回答:


5

バックアップからデータベースをいつでも復元できますか?

meta.wikimeda.orgrevertメソッドは機能するはずですが、指摘するように、大量のページを飛ぶことはありません。

手動でMySQL dbにアクセスして、スパムボットの前にパージできると思いますが、どのように機能するかはわかりません。


1

Stan SokolovによるSQLクエリに基づいて、Wikiのひどい混乱をクリーンアップしました-半年間監視しておらず、スパムでいっぱいでした。特定の日付からそれをきれいにしなければなりませんでした。

同じことをしようとする場合は、最初にバックアップしてください- これらのSQLクエリは、Wikiを破壊し、子猫を殺し、妊娠を引き起こす可能性があります。

この例では、「tr_」が私のプレフィックス、「189」が最後の有効なページID、「41」が最後の有効なユーザーID、「20130215152547」が最初のスパム入力日です。

#Update page state to last good before the date
UPDATE tr_page p SET p.page_latest=( SELECT MAX(r.rev_id) FROM tr_revision r 
WHERE r.rev_page=p.page_id 
AND rev_timestamp <20130215152547) WHERE p.page_id IN 
(SELECT  r2.rev_page FROM tr_revision r2 WHERE rev_timestamp >=20130215152547);

#Update page length to match actual
UPDATE tr_page p SET p.page_len=( SELECT r.rev_len FROM tr_revision r WHERE
r.rev_page=p.page_id AND r.rev_id=p.page_latest );

#Clean up spam revisions

DELETE FROM tr_revision WHERE rev_timestamp >=20130215152547;

#Clear recent changes

DELETE FROM tr_recentchanges WHERE rc_timestamp >=20130215152547;

#Block all new bad users from ever entering wiki with this login
UPDATE tr_user SET
  user_password    = '',
  user_newpassword = '',
  user_email       = '',
  user_token       = ''
WHERE user_id>41;

#Delete pages, staring from the last good id
DELETE FROM tr_page WHERE page_id>189;

#Also, you will need TO clean TABLE tr_pagelinks.
#You will have to do it manually. It's easy, use some editor
#like PHPMyAdmin or SQLyog

#Clean cache

DELETE FROM `tr_objectcache`;
DELETE FROM `tr_querycache`;
DELETE FROM `tr_querycachetwo`;

どうもありがとう!これは、「ランダムページ」が依然としてガベージページにアクセスすることを除いて、魅力のように機能しました。次のようなテキストが表示されます The revision #0 of the page named "TedderConover162" does not exist. This is usually caused by following an outdated history link to a page that has been deleted. Details can be found in the deletion log.
。– Lori

0

http://www.mediawiki.org/wiki/Extension:Nukeは、ユーザー/ IPによって作成されたすべてのページを削除できる拡張機能です。Hello71のコメントで言及されているJSスクリプトを使用すると、特定のユーザーからのすべての変更をロールバックできます。一緒に使用すると、かなりうまく機能します。

複数のボットから各ページに12の変更がある特定のケースについては、それがどの程度うまく処理できるかわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.