2012-05-22 62 views
5

Ho 500 o più spambot e circa 5 utenti registrati sul mio wiki. Ho usato nuke per cancellare le loro pagine ma continuano a ripubblicare. Ho la registrazione spambot sotto controllo usando reCaptcha. Ora, ho solo bisogno di un modo per eliminare/bloccare/unire circa 500 utenti contemporaneamente.Mediawiki utente di massa delete/merge/block

risposta

7

Si potrebbe semplicemente eliminare gli account dalla tabella user manualmente, o almeno disattivare le loro informazioni di autenticazione con una ricerca del tipo:

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

(Sostituire /*_*/ con il $wgDBprefix eventuale Oh, e da fare. fare un backup prima.)

pulendo i campi user_password e user_newpassword impedisce all'utente di effettuare il login. anche spazzare via user_email impedisce loro di richiedere una nuova password via e-mail, e spazzando via user_token gocce di un tutte le sessioni attive che possono avere.


Aggiornamento: da quando ho postato prima questo, ho avuto ulteriori esperienze di ripulire gran numero di utenti di spam e contenuti da un'installazione MediaWiki. Ho documentato il metodo che ho usato (che in pratica comporta innanzitutto l'eliminazione degli utenti dal database, quindi la cancellazione di tutte le revisioni ormai orfane e infine l'esecuzione di rebuildall.php per correggere le tabelle di collegamento) in this answer on Webmasters Stack Exchange.


In alternativa, si potrebbe anche trovare Extension:RegexBlock utile:

"RegexBlock è un'estensione che aggiunge pagina speciale con l'interfaccia per il blocco, la visualizzazione e sblocco nomi utente e indirizzi IP utilizzando le espressioni regolari."

+0

Grazie mille. L'eliminazione manuale delle tabelle utente ha funzionato correttamente. Sono contento che PHPmyAdmin abbia un pulsante Seleziona tutto. C'erano 836 spambots e 5 utenti reali. – user1410744

+0

Le persone potrebbero trovare utile l'estensione [Deleteuser] (http://www.mediawiki.org/wiki/Extension:Deleteuser), per evitare il rischio di errori pericolosi con i comandi SQL. – qris

2

Ci sono rischi nell'applicazione della soluzione nella risposta accettata. L'approccio potrebbe danneggiare il tuo database! Rimuove in modo incompleto gli utenti, non facendo nulla per preservare l'integrità referenziale e quasi certamente causa errori di visualizzazione.

Here una soluzione molto migliore è presentato (un prerequisito è che si è installato il User merge extension):

Ho un po 'scomodo per raggiungere la massa si fondono attraverso un work-around. Spero che qualcuno lo troverebbe utile! (Deve avere un po ' competenze concatenazione di stringhe in fogli di calcolo, oppure si può usare un pitone o uno script simile, o utilizzare un editor di testo con sostituzione di massa caratteristiche)

  1. preparare un elenco di tutti i SPAMuserIDs, memorizzarli in un foglio di calcolo o un file di testo. L'elenco può essere preparato dai registri di creazione dell'utente. Se si dispone dell'accesso dB, la tabella Wiki_user può essere importata in un elenco locale.

  2. Il metodo di post utilizzato per inviare il modulo Unisci utente & Elimina (facendo clic sul pulsante) deve essere convertito in un metodo get. Questo ci porterà un URL lungo.Vedere il secondo commento (di Matthew Simoneau) datato 13/Jan/2009) a http://www.mathworks.com/matlabcentral/newsreader/view_thread/242300 per il metodo. La stringa URL risultante dovrebbe essere simile di seguito:

    http: // (Il dominio Wiki)/Special:? UserMerge olduser = (OldUserNameHere) & nuovoutente = (NewUserNameHere) & deleteUser = 1 & di token = 0d30d8b4033a9a523b9574ccf73abad8 % 2B \

  3. Ora, dividere questo URL in quattro sezioni:

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

B: (OldUserNameHere) 

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

D: &token=0d30d8b4033a9a523b9574ccf73abad8%2B\ 
  1. Ora utilizzando un editor di testo o fogli di calcolo, con prefisso userids spam con la parte A e il suffisso ogni parte C e D. Parte C includerà il NewUser (che è un singolo ID utente fittizio appositamente creato). La parte D, , la stringa token è un token dipendente dalla sessione che verrà modificato per utente per sessione. Quindi è necessario ottenere un nuovo token ogni volta che è richiesta una nuova sessione di lavoro.

  2. Con il passaggio precedente, è necessario ottenere un lungo elenco di URL, ognuno valido per eseguire un'operazione di unione & Elimina per un utente. Ora possiamo creare un semplice file HTML , visualizzarlo e utilizzare un downloader batch come DownThemAll in Firefox. Aggiungi altri due "Linktext" a ciascuna riga a inizio e fine. Aggiungi anche in alto ea in basso e salva il file come (per esempio :) userlist.html

  3. Apri il file in Firefox, usa il componente aggiuntivo di DownThemAll e scarica tutti i file! Effettivamente, stai visitando la fusione & Elimina pagina per ogni utente e facendo clic sul pulsante!

Anche se questo potrebbe sembrare un lavoro lungo e difficile in un primo momento, una volta che si segue questo metodo, è possibile rimuovere decine di migliaia di utenti senza molto sforzi manuali.

È possibile verificare se l'operazione sta andando bene aprendo alcuni dei file html scaricati (o esaminando le recenti modifiche in un'altra finestra).

Un vantaggio è che non modifica direttamente le pagine di MySQL . Né richiede l'accesso diretto al database.

Ho fatto un po 'di riscrittura al testo citato, dal momento che il testo originale contiene alcuni difetti.

+1

In realtà, la query data nella mia risposta non elimina tutti gli utenti * * (solo disabilita le loro informazioni di autenticazione in modo che non possono accedere), in modo da non rompere l'integrità referenziale (non che MediaWiki è mai importato molto di questo, in ogni caso) e non dovrebbe causare problemi di visualizzazione (tranne nella misura in cui la tua Special: ListUsers sarà comunque piena di account spam). Detto questo, non consiglierei più quel metodo nella maggior parte dei casi; è molto più pulito [elimina solo gli utenti spam e i loro contributi interamente, e poi usa gli script di manutenzione per correggere il database] (http://webmasters.stackexchange.com/a/45486). –

+0

@IlmariKaronen, grazie per il link, sembra una buona soluzione anche. – Ruut