Grundsätzlich war meine "private" Mediawiki-Instanz ungefähr so sicher wie ein Kleinkind-Sparschwein. Ich habe es jetzt verschärft, aber es verbleiben ungefähr hundert neue Seiten und Revisionen, die von Hunderten zufällig generierter Benutzer erstellt wurden.
2-teilige Frage; Gibt es eine Möglichkeit, alle verwaisten Seiten zu löschen? Kann ich sagen, dass alle Überarbeitungen, die NICHT von einem bestimmten Benutzer (mir) vorgenommen wurden, rückgängig gemacht werden sollen?
Antworten:
Wenn Sie die von danlefree vorgeschlagene Methode zum Exportieren und erneuten Installieren nicht verwenden möchten, ist die Nuke- Erweiterung möglicherweise auch hilfreich. Nach der Installation erhalten Sie auf der Spezialseite Spezial: Nuke als Administrator ein Formular wie das folgende:
Es gibt auch mehrere integrierte MediaWiki- Wartungsskripte , die nützlich sein könnten, darunter:
cleanupSpam.php , mit dem alle Revisionen, die einen Link zu einem bestimmten Hostnamen enthalten, zurückgesetzt und / oder gelöscht werden können,
deleteBatch.php , mit dem alle in einer Datei aufgelisteten Seiten gelöscht werden können, und
rollbackEdits.php (die derzeit keine ordnungsgemäße Dokumentation im Wiki zu haben scheint), mit der alle Änderungen eines bestimmten Benutzers rückgängig gemacht werden können.
Spam-Bereinigung mit direktem Datenbankzugriff
Es ist auch möglich, das zu tun, was Sie wollen, indem Sie die Datenbank direkt bearbeiten. Die Details können je nach Situation etwas variieren, aber die grundlegenden Schritte würden ungefähr so aussehen:
Setze dein Wiki in den schreibgeschützten Modus . Sie möchten nicht, dass jemand versucht, das Wiki zu bearbeiten, während Sie mit der Datenbank herumspielen.
Erstellen Sie eine Sicherungskopie Ihres Wikis. (Dies wird dringend empfohlen, bevor irreversible Massenlöschungen vorgenommen werden.)
Löschen Sie alle von den Spammern erstellten Benutzerkonten. Wenn Sie, wie in der obigen Frage, der einzige gültige Benutzer waren, können Sie einfach Folgendes tun:
Wenn keine neuen gültigen Konten erstellt wurden, nachdem die Spammer das Wiki entdeckt haben, können Sie alternativ die höchste gültige Benutzer-ID-Nummer finden und folgendermaßen vorgehen:
Oder Sie können ein Admin-Tool wie phpMyAdmin verwenden, um die gültigen Konten manuell auszuwählen und den Rest zu löschen.
Bereinigen Sie die zusätzlichen Daten, die mit den gelöschten Konten verknüpft sind. Dies ist nicht unbedingt erforderlich, aber diese verwaisten Datensätze haben keine Verwendung und überladen Ihre Datenbank nur, wenn Sie sie nicht löschen:
Löschen Sie alle Revisionen, die nicht von einem gültigen Benutzer vorgenommen wurden:
Das ist der große Schritt; alles, bevor es Vorbereitung war, alles, nachdem es aufgeräumt wurde. Wenn alle Spam-Konten gelöscht sind, können Sie einfach Folgendes tun:
Wenn in Ihrem Wiki die anonyme Bearbeitung deaktiviert war (was ich für private / Test-Wikis dringend empfehle), sollte die obige Abfrage ausreichen, um alle Spam-Revisionen zu entfernen. Wenn Sie jedoch die anonyme Bearbeitung aktiviert haben, müssen Sie den anonymen Spam separat bereinigen .
Wenn Sie sicher sind, dass alle anonymen Änderungen in Ihrem Wiki Spam sind, müssen wir möglicherweise nur die Änderungen von UID 0 beibehalten, die von MediaWiki selbst vorgenommen wurden (z. B. von außerhalb des Wikis importierte Seiten). In diesem Fall sollte etwa die folgende Abfrage funktionieren:
Dadurch werden alle Überarbeitungen von UID 0 gelöscht, bei denen der Benutzername (vage) wie eine IPv4-Adresse aussieht. Das heißt, es beginnt mit einer Ziffer zwischen 1 und 9.
Wenn Ihr Wiki einige legitime Änderungen enthält, müssen Sie möglicherweise kreativer werden. Wenn die Anzahl der von legitimen nicht registrierten Redakteuren verwendeten IP-Adressen begrenzt ist, können Sie
AND rev_user_text NOT IN ('1.2.3.4', '5.6.7.8', '9.10.11.12')
der obigen Abfrage einfach eine Klausel hinzufügen , um Beiträge dieser IPs vom Löschen auszuschließen. Sie können auch Bedingungen hinzufügen,AND rev_user_text NOT LIKE '192.168.%'
um beispielsweise alle Änderungen von IP-Adressen zu speichern, die mit einem bestimmten Präfix beginnen.Bei den oben aufgeführten Abfragen werden die Spam-Revisionen entfernt (obwohl der Inhalt weiterhin in der
text
Tabelle enthalten ist), aberpage_latest
alle betroffenen Seiten, die auf eine nicht vorhandene Revision verweisen, werden nicht angezeigt. Dies könnte zu Verwirrung führen, daher sollten wir es besser beheben.Zuerst müssen wir die
page_latest
Spalte für alle Seiten löschen:Als Nächstes erstellen wir die Spalte neu, indem wir entweder das Wartungsskript attachLatest.php ausführen (empfohlen; denken Sie daran, den
--fix
Parameter zu verwenden , damit das Skript die Datenbank tatsächlich ändert) oder eine manuelle SQL-Abfrage durchführen:Schließlich löschen wir alle Seiten, für die keine gültigen Überarbeitungen gefunden wurden (weil sie von Spammern erstellt wurden und keinen gültigen Inhalt hatten):
Erstellen Sie für den letzten Schliff die Tabellen mit den Links, dem Textindex und den letzten Änderungen neu, indem Sie das Wartungsskript rebuildall.php ausführen . Möglicherweise möchten Sie auch den Inhalt der gelöschten Spam-Revisionen aus der Datenbank entfernen, damit sie dort keinen unnötigen Speicherplatz belegen , indem Sie das Wartungsskript purgeOldText.php ausführen .
Überprüfen Sie anschließend, ob alles in Ordnung ist, und deaktivieren Sie in diesem Fall den Nur-Lese-Modus - hoffentlich nach der Installation einiger Anti-Spam-Funktionen , damit das Problem nicht erneut auftritt.
Für kleine Wikis empfehle ich dringend die QuestyCaptcha- Erweiterung, mit der Sie ein einfaches benutzerdefiniertes textbasiertes CAPTCHA konfigurieren können. Der Trick ist, dass jedes Wiki seine eigenen Fragen hat und es eine Menge Arbeit bedeutet, einen Spambot zu programmieren, um sie richtig zu beantworten. Ich habe es in meinem eigenen Wiki installiert, nachdem ich ein paar Mal von XRumer getroffen wurde, und seitdem habe ich keinen Spam mehr gesehen.
Ps. Mit diesen Anweisungen habe ich ungefähr 35.000 Spam-Revisionen überprüft, die von ebenso vielen Benutzern aus einem kleinen Wiki erstellt wurden . Alles lief gut. In diesem speziellen Fall erlaubte das Wiki (zum Glück!) Keine anonyme Bearbeitung, und fast alle legitimen Benutzer wurden erstellt, bevor die Spammer das Wiki fanden, sodass ich ziemlich einfach zuerst alle Spam-Konten und dann alle Überarbeitungen löschen konnte sie hatten geschaffen. (Ich habe zuerst versehentlich ein legitimes Konto gelöscht, daher musste ich es aus dem Backup wiederherstellen und den Vorgang genauer wiederholen.) Ich habe die obigen Anweisungen aktualisiert, um besser zu reflektieren, was ich tatsächlich getan habe, und um etwas allgemeiner zu sein .
quelle
rebuildall.php
ist nicht in Wartung: O Sonst dankeDie einfachste Möglichkeit, mit dieser Situation umzugehen (wenn Sie nichts dagegen haben, können Sie nuke'n'pave verwenden), besteht darin, alle von Ihrem Benutzernamen erstellten oder bearbeiteten Wiki-Seiten zu exportieren, das Wiki neu zu installieren und die von Ihnen erstellte Exportdatei zu importieren.
"Neu installieren" würde in diesem Zusammenhang bedeuten:
LocalSettings.php
Datei an einen sicheren Ort/config/
Verzeichnis erneut hoch/config/
Verzeichnis und verschieben Sie Ihre alteLocalSettings.php
Datei zurück in das MW-StammverzeichnisBearbeiten: Möglicherweise möchten Sie eine Datenbanksicherung (einschließlich Spam-Überarbeitungen) abrufen, falls Sie Probleme mit diesem Vorgang haben oder mit alternativen Methoden zum Entfernen von Spam experimentieren möchten.
quelle
Theoretisch könnten Sie eine MediaWiki-Erweiterung schreiben, um eine MediaWiki-Instanz nach Belieben zu bearbeiten, einschließlich der von Ihnen genannten Aufgaben.
Abgesehen von der von danlefree vorgeschlagenen "nuke'n'pave" -Erweiterung ist die Erweiterung " User Merge and Delete " möglicherweise hilfreich: Sie können damit mehrere Spambot-Konten zu einem einzigen Konto zusammenfassen, dessen Änderungen dann besser bearbeitet werden können leicht.
quelle
Die einfachste Möglichkeit, mit dieser Situation umzugehen, besteht darin, die Erweiterung DeleteBatch zu installieren . Verwenden Sie Special: AllPages in Ihrem Wiki, um eine Skriptdatei mit den Seitennamen zu erhalten, die Sie löschen möchten, und laden Sie sie in Special: DeleteBatch.
quelle
Wenn es nur einhundert Spam-Seiten sind, geht es Ihnen nicht allzu schlecht. Ich musste ein Wiki mit Tausenden von Spam-Seiten aufräumen. Ich habe einige gute Tipps von User: Halz auf dieser Seite gefunden: https://www.mediawiki.org/wiki/User:Halz/Mass_despamming, einschließlich einer Aufschlüsselung der Einschränkungen der verschiedenen Tools.
Unten hat er eine nützliche SQL-Abfrage bereitgestellt, die etwas langsam ausgeführt wird, aber Ihnen hilft, Seiten zu finden, bei denen es sich höchstwahrscheinlich um Spam handelt, insbesondere wenn Sie den Zeitraum ermitteln können, in dem das Wiki von Spammern übernommen wurde. Halz hat auch eine gehackte Version von Extension: Nuke, die diese Art von abfragbaren Parametern zum einfachen Löschen von Massen enthält. Er hat mir eine Kopie zur Verwendung gegeben, aber ich glaube nicht, dass er sie veröffentlicht hat.
quelle
Ich empfehle dringend, sich nicht mit MediaWikis SQL anzulegen! MediaWiki ist ein komplexes Biest, sehr optimiert für Wikipedia. Es gibt einige seltsame Dinge in SQL, und wenn Sie Zeilen einfach LÖSCHEN, kann dies zu Konsistenzverlusten führen.
Wenn Sie über Programmierkenntnisse verfügen, gehen Sie die API durch. Pywikibot ist eine gute Wahl.
Andernfalls überprüfen Sie die Tools im
maintenance/
Verzeichnis. Sie können mein eigenes Tool ausprobieren , mewsh , um dies zu unterstützen (und ich habe dort gerade "Anti-Spam-Tools" hinzugefügt).quelle
Ich habe eine Installation übernommen und über 47.000 Spam-Einträge in der
user
Tabelle und fast 900.000 Spam- Einträge gefundenexternallinks
. Ich habe Sequel Pro verwendet und jede Tabelle besucht und Einträge gelöscht, die nicht von authentischen Benutzern erstellt wurden. Ich fand Spamexternallinks
,page
,searchindex
,user
,watchlist
. Es war ziemlich zeiteffizient; Der Großteil meiner Zeit wartete darauf, dass Löschabfragen ausgeführt wurden. Ich hatte Glück, denn die meisten authentischen Änderungen erfolgten früh in der Reihenfolge der Dinge.quelle
externallinks
, da dies eine redundante Metadatentabelle ist, die im Grunde nur für Dinge wie Special verwendet wird: LinkSearch; Sobald Sie die eigentlichen Seiten bereinigt haben, können Sie sie einfachrebuildall.php
löschen und neu erstellen . Das Gleiche gilt fürsearchindex
.