2012-05-22 7 views
5

Tengo 500 o más spambots y aproximadamente 5 usuarios registrados en mi wiki. He usado Nuke para eliminar sus páginas, pero solo siguen publicando. Tengo el registro de spambot bajo control usando reCaptcha. Ahora, solo necesito una forma de eliminar/bloquear/fusionar a unos 500 usuarios a la vez.Usuario masivo de Mediawiki eliminar/fusionar/bloquear

Respuesta

7

Se podía eliminar las cuentas de la tabla user manualmente, o al menos desactivar su información de autenticación con una consulta como:

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

(Reemplazar /*_*/ con su $wgDBprefix, en su caso Ah, y hacer. hacer una copia de seguridad en primer lugar.)

Neutralización de los campos user_password y user_newpassword evita que el usuario inicie sesión. Además acabando con user_email les impide solicitar una nueva contraseña por correo electrónico, y acabando con una gotas user_token algunas sesiones activas que puedan tener.


Actualización: Desde que por primera vez de esto, he tenido la experiencia adquirida sobre la limpieza de un gran número de usuarios de spam y el contenido de una instalación de MediaWiki. Documenté el método que usé (que básicamente consiste en eliminar primero a los usuarios de la base de datos, eliminar todas las revisiones ahora huérfanas y finalmente ejecutar rebuildall.php para arreglar las tablas de enlaces) en this answer on Webmasters Stack Exchange.


Como alternativa, también puede ser que encuentre Extension:RegexBlock útil:

"RegexBlock es una extensión que agrega página especial con la interfaz para el bloqueo, la visualización y desbloqueo nombres de usuario y direcciones IP que utilizan expresiones regulares."

+0

Muchas gracias. La eliminación manual de las tablas de usuario funcionó bien. Me alegra que PHPmyAdmin tenga un botón para seleccionar todo. Hubo 836 spambots y 5 usuarios reales. – user1410744

+0

Las personas pueden encontrar la extensión [Deleteuser] (http://www.mediawiki.org/wiki/Extension:Deleteuser) útil, para evitar el riesgo de errores peligrosos con los comandos SQL. – qris

2

Existen riesgos relacionados con la aplicación de la solución en la respuesta aceptada. ¡El enfoque puede dañar su base de datos! Elimina de forma incompleta a los usuarios, sin hacer nada para preservar la integridad referencial, y casi con certeza causará errores de visualización.

Here se presenta una solución mucho mejor (un requisito previo es que se ha instalado el User merge extension):

que tienen un poco más difícil de llevar a cabo la mayor fusionar a través de un trabajo en torno . Espero que alguien lo encuentre útil! (Debe tener un poco habilidades de concatenación en hojas de cálculo, o se puede utilizar un pitón o secuencia de comandos similares, o usar un editor de texto con el reemplazo mayor características)

  1. preparar una lista de todos los SPAMuserIDs, almacenarlos en una hoja de cálculo o archivo de texto. La lista puede ser preparada a partir de los registros de creación del usuario. Si tiene acceso a dB, la tabla Wiki_user se puede importar a una lista local.

  2. El método de publicación utilizado para enviar la combinación & Eliminar formulario de usuario (al hacer clic en el botón) se debe convertir a un método get. Este nos proporcionará una URL larga.Vea el segundo comentario (por Matthew Simoneau) del 13/Jan/2009) en http://www.mathworks.com/matlabcentral/newsreader/view_thread/242300 para el método. La cadena URL resultante debe ser algo parecido a continuación:

    http: // (Su dominio Wiki)/Especial:? UserMerge olduser = (OldUserNameHere) & nuevoUsuario = (NewUserNameHere) & deleteuser = 1 & token = 0d30d8b4033a9a523b9574ccf73abad8 2B% \

  3. Ahora, divida esta URL en cuatro secciones:

A: http: //(Your Wiki domain)/Special:UserMerge?olduser= 

B: (OldUserNameHere) 

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

D: &token=0d30d8b4033a9a523b9574ccf73abad8%2B\ 
  1. Ahora, utilizando un editor de texto u hoja de cálculo, Prefijo en cada ID de usuario spam con la parte A y Sufijo cada uno con la Parte C y D. Parte C incluirá el NewUser (que es un solo ID de usuario ficticio creado especialmente). La Parte D, la cadena Token es un token dependiente de la sesión que se cambiará por usuario por sesión. Por lo tanto, deberá obtener un token nuevo cada vez que se requiera una nueva sesión/lote de trabajo de .

  2. Con el paso anterior, debe obtener una larga lista de URL, cada una buena para hacer una operación de borrado Merge & para un usuario. Ahora podemos crear un archivo HTML simple , verlo y usar un descargador de lotes como DownThemAll en Firefox. Agregue dos piezas más "Texto de enlace" a cada línea al principio y fin. También agregue en la parte superior y en abajo y guarde el archivo como (por ejemplo :) userlist.html

  3. Abra el archivo en Firefox, use DownThemAll add-on y descargue todos los archivos! Efectivamente, está visitando la página de borrado Merge & para por usuario y haciendo clic en el botón.

Aunque esto puede parecer un trabajo largo y complicado al principio, una vez que sigue este método, puede eliminar decenas de miles de usuarios sin mucho esfuerzo manual.

Puede verificar si la operación funciona bien abriendo algunos de los archivos html descargados (o mirando los cambios recientes en en otra ventana).

Una ventaja es que no edita directamente las páginas MySQL . Tampoco requiere acceso directo a la base de datos.

Hice un poco de reescritura en el texto citado, ya que el texto original contiene algunos defectos.

+1

En realidad, la consulta que figura en mi respuesta no elimina a * ningún * usuario (simplemente deshabilita su información de autenticación para que no puedan iniciar sesión), por lo que no romperá la integridad referencial (no es que MediaWiki se haya preocupado mucho de eso, de todos modos) y no debería causar ningún problema de visualización (excepto en la medida en que su Special: ListUsers aún se llenará con cuentas de correo no deseado). Dicho esto, ya no recomendaría ese método en la mayoría de los casos; es mucho más limpio [solo eliminar por completo a los usuarios de correo basura y sus contribuciones, y luego usar scripts de mantenimiento para arreglar la base de datos] (http://webmasters.stackexchange.com/a/45486). –

+0

@IlmariKaronen, gracias por el enlace, parece una buena solución también. – Ruut

Cuestiones relacionadas