Массовый откат на MediaWiki

2978
Tyler Carter

Так,

У меня есть личная вики, которую я использую для документирования кода и практики программирования, и всего такого хорошего в StackOverflow. Я связался с одной из страниц на SO ответе и BOOM! Спам Боты.

К сожалению, неготовность к этому приводит к тому, что большинство моих страниц теперь заполнены ссылками на сайты, на которые я никогда не буду нажимать.

У меня вопрос, как я могу сделать массовый откат вместо отдельных откатов. Например, есть ли способ удалить все изменения, сделанные с помощью определенного IP-адреса? Или мне нужно по отдельности просматривать каждую страницу и откатывать их вручную.

Спасибо за любую помощь!

Изменить: Это также выглядит как система отката MediaWiki также не является интуитивно понятным. Боты внесли не менее 12 изменений на каждую страницу, и я не могу откатить их 12 изменений назад.

6
Ну, просто Google это: "массовый откат" включает JS-скрипт этого пользователя: http://en.wikipedia.org/wiki/User:John254/mass_rollback.js Hello71 13 лет назад 0

3 ответа на вопрос

5
Tyler

Вы всегда можете просто восстановить свою базу данных из резервной копии, верно?

Эти методы ткатить на meta.wikimeda.org должны работать, но, как вы указываете, что не собирается летать на тонну страниц.

Я думаю, вы могли бы вручную войти в базу данных MySQL и очистить ее до появления спам-ботов, но я не уверен, как это будет работать.

1
Jehy

Основываясь на SQL-запросах Стана Соколова, мне удалось устранить ужасный беспорядок в моей вики - я не наблюдал за ним в течение полугода, и он был полон спама. Я должен был очистить его от конкретной даты.

Если вы собираетесь попробовать то же самое, пожалуйста, сделайте резервную копию в первую очередь - эти sql запросы могут разрушить вашу вики, убить котят и вызвать беременность.

В этом примере «tr_» - мой префикс, «189» - последний хороший идентификатор страницы, «41» - последний хороший идентификатор пользователя, а «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`; 
Спасибо много! Это работало как очарование, за исключением того, что «Случайная страница» все еще посещает мусорные страницы. Отображается текст, подобный следующему: `Редакция № 0 страницы с именем" TedderConover162 "не существует. Это обычно вызывается переходом по устаревшей исторической ссылке на страницу, которая была удалена. Подробности можно найти в журнале удаления. Lori 8 лет назад 0
0
Dave Brondsema

http://www.mediawiki.org/wiki/Extension:Nuke - это расширение, которое позволяет удалять все страницы, созданные пользователем / IP. Сценарий JS, упомянутый в комментарии Hello71, позволяет откатить все изменения от определенного пользователя. При совместном использовании это работает довольно хорошо.

Для вашего конкретного случая 12 изменений на каждой странице от нескольких ботов, я не знаю, насколько хорошо это можно обработать.

Похожие вопросы