Mass Rollback on MediaWiki

6

Então,

Eu tenho um wiki pessoal que eu uso para documentar código e práticas de programação e todas essas coisas boas no StackOverflow. Liguei para uma das páginas em uma resposta SO e BOOM! Spam Bots.

Infelizmente, não estar preparado para isso faz com que a maioria das minhas páginas seja preenchida com links para sites nos quais eu nunca vou me preocupar em clicar.

Minha pergunta é: como posso fazer uma reversão em massa, em vez de reversões individuais. Por exemplo, existe uma maneira de excluir todas as alterações feitas por um determinado endereço IP? Ou eu tenho que passar individualmente por cada página e revertê-las manualmente.

Obrigado por qualquer ajuda!

Edit: Também parece que o sistema de reversão do MediaWiki também não é intuitivo. Os bots fizeram pelo menos 12 alterações em cada página, e não posso reverter 12 alterações atrás.

    
por Tyler Carter 25.01.2010 / 21:12

3 respostas

5

Você pode sempre restaurar seu banco de dados a partir do backup, certo?

Os métodos de reversão em meta.wikimeda.org devem funcionar, mas, como você aponta, não é vai voar em uma tonelada de páginas.

Eu acho que você poderia ir manualmente para o banco de dados MySQL e purgar antes dos spambots, mas não sei como isso funcionaria.

    
por 26.01.2010 / 01:12
1

Com base nas consultas SQL de Stan Sokolov, consegui limpar uma bagunça horrível no meu wiki - eu não monitorei por meio ano e estava cheio de spam. Eu tive que limpá-lo de uma data específica.

Se você vai tentar o mesmo, por favor faça um backup primeiro - essas consultas sql podem destruir seu wiki, matar gatinhos e causar gravidez.

Neste exemplo, "tr_" é o meu prefixo, "189" é o id da última página, "41" é o último id do usuário e "20130215152547" é a primeira data de entrada do spam.

#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';
    
por 21.08.2013 / 14:10
0

link é uma extensão que permite excluir todas as páginas criadas por um usuário / IP. O script JS mencionado em um comentário do Hello71 permite reverter todas as alterações de um determinado usuário. Usado em conjunto, funciona muito bem.

Para o seu caso específico de ter 12 alterações em cada página de vários bots, não sei como isso pode ser resolvido.

    
por 24.11.2010 / 05:07