Wiki-Spam unterdrücken
Aus Tipps, Tricks und Anleitungen
| Wie kann ich Spambeiträge in meinem Wikimedia-Wiki verhindern? | ||
| Wichtige Hinweise
Die beschriebene Lösung ist eine programmiertechnische Lösung und bezieht sich auf die Mediawikiversion 1.6.8, die mittlerweile veraltet ist. Andere ältere oder neuere Versionen werden vermutlich ähnlich funktionieren. Der Zeitaufwand sollte deutlich weniger als eine halbe Stunde betragen. Dafür werden zukünftig die meisten unerwünschten Nachrichten automatisch abgewiesen, so dass man diese Zeit schnell wieder eingespart hat. Es wurde versucht, sie so genau wie möglich zu beschreiben, damit auch Laien sie durchführen können. Bitte lese Dir den Artikel erst einmal genau durch und entscheide dann, ob Du die Anleitung umsetzen willst. Die Beschreibung wurde nach besten Wissen und Gewissen erstellt, allerdings wird keinerlei Haftung übernommen für irgendwelche Probleme, die trotz oder wegen der Anwendung der hier beschriebenen Methode auftreten. Wenn Du nicht sicher bist, ob du dieses Risiko eingehen möchtest, unterlasse bitte alle Änderungen und führe bitte keinen der genannten Schritte durch Einleitung Die Wikisoftware von Mediawiki ist sehr beliebt (so basiert insbesondere das bekannte Wikipedia auf dieser Wikisoftware) und verbreitet und kann kostenlos heruntergeladen und auf einer eigenen Internetpräsenz genutzt werden. Innerhalb des Wikis haben Besucher die Möglichkeit, Artikel neu zu erstellen, zu ändern oder Kommentare zu hinterlassen. Leider missbrauchen einige Benutzer und automatische Spambots die Mitarbeitsfunktionalität gezielt, um ungewünschte Botschaften und insbesondere ungewollte Werbung zu verbreiten. Wenn man diese ungewollten Botschaften nicht unterdrückt, wird die Qualität des Wikis deutlich gemindert da zwischen dem ganzen "Müll" wichtige Beiträge schwerer auffindbar sind. Schlimmer noch scheuen sich die Bots nicht bestehende Artikel einfach mit Werbebotschaften zu überschreiben. Der Betreiber des Wikis muss in vielen Fällen per Hand entscheiden, ob ein Artikel erwünscht ist oder nicht. Glücklicherweise erlaubt die Wikisoftware mit wenigen Handgriffen das Löschen von Artikeln oder das Wiederherstellen des Originalzustands eines Artikels. Auch lassen sich unerwünschte IP-Adressen künftig unterdrücken. Bei manchen Wikis sammeln sich allerdings täglich hunderte von Spameinträgen, die ganz offensichtlicher Müll sind, da sie bestimmte Merkmale enthalten, die sie eindeutig unerwünscht machen. Dieser eindeutige Müll soll abgewiesen werden, ohne dass der Betreiber je wieder einen Blick auf sie werfen muss. Wenn ein Wikibetreiber ins Visir eines Spambotnetzes geraten ist, werden Spameinträge teilweise im Minutentakt eingetragen. Das manuelle Rücksetzen wird damit sehr zeitaufwändig, zumal Bots nicht schlafen müssen. Auch das Sperren von IP-Adressen hilft nur wenig, da oft jeder Eintrag mit einer anderen IP-Adresse gemacht wird. Das Erstellen einer Abwehrmaßnahme gegen Spameinträge mit den hier beschriebenen Methoden, kostet etwas Zeit, kann aber im Gegenzug im Idealfall ein Blog in der Praxis komplett von Spamattacken befreien.
Die Wikisoftware selbst bietet im Unterordner "includes" eine Datei mit dem Namen "Defaultsettings.php". Diese hat etwa in Zeile 1400 den Eintrag $wgSpamRegex = false; Wenn man diesen Eintrag ändert zu $wgSpamRegex = "|http://|"; dann werden künftig alle Einträge, die die Zeichenkette "http://" enthalten abgewiesen. Wenn man andere Textbestandteile statt "http://" filtern will, kann man das in dem Eintrag entsprechend ändern. Die Zeichen "|" am Anfang und Ende sind dabei beizubehalten. Diese Methode hat allerdings den Nachteil, dass künftig alle Beiträge, die "http://" als Bestandteil haben verboten sind. Wer einen solchen Beitrag dennoch eingibt, landet auf einer speziellen Hinweisseite, auf der das Wikiprogramm den Autor darauf hinweist, dass sein gesamter Text wegen Spamverdacht nicht übernommen werden konnte. Es ist also fortan überhaupt nicht mehr möglich, Artikel zu schreiben, die Links auf externe Webseiten zulassen. Wer damit leben kann, ist an dieser Stelle fertig: 1. Datei "Defaultsettings.php" vom Server herunterladen (mit einem FTP-Programm) 2. Zeile "$wgSpamRegex = false;" suchen und wie beschrieben ändern und speichern. 3. Datei "Defaultsettings.php" wieder auf den Server hochladen (mit einem FTP-Programm) 4. Testen, ob der Filter wie beabsichtigt funktioniert
Etwas weniger im Sinne der Wikiprogrammierer ist es, mitten im Programm eine Änderung einzubauen, die künftig als Filter dient. Dies hat jedoch den Vorteil, dass man einen Filter nach eigenen Vorstellungen an der Stelle ins Programm einbaut, bevor ein Artikel gespeichert wird. In der Wikisoftware geschieht das Speichern in der Datei "EditPage.php", die ebenfalls im Unterordner "includes" zu finden ist. Dort setzen wir einen Filter direkt vor den wikieigenen Filter. Dieser eigene Filter vunterscheidet sich von der oben vorgestellten einfachen Lösung dadurch, dass er eingeloggten Nutzern (also solchen die einen Nutzeraccount besitzen) die Benutzung der Phrase "http://" erlaubt, während Bots und anderen Nutzern ohne Namen, die Benutzung verweigert wird. Darüber hinaus kann man sich außerdem über Email über verworfene Änderungen informieren lassen. Wichtig ist dabei, dass in der Datei "Defaultsettings.php" die Zeile "$wgSpamRegex = false;" stehen bleibt, also die im vorigen Abschnitt beschrieben einfache Änderung nicht gemacht wird. 1. Lade die Datei "EditPage.php" aus dem Unterordner "includes" der Onlineversion des Blogs herunter. Dies ist die "Arbeitsdatei". 2. Mache in einem anderen Ordner eine Sicherheitskopie dieser Datei (falls irgendein Problem auftritt, kannst du jederzeit wieder die Originalversion von dieser Sicherheitskopie wiederherstellen. 3. Öffne die Arbeitsdatei (nicht die Sicherheitskopie) und suche in dem Programtext die folgenden Zeilen (sie sind ungefähr in Zeile 470): # Check for spam
if ( $wgSpamRegex && preg_match( $wgSpamRegex, $this->textbox1, $matches ) ) {
$this->spamPage ( $matches[0] );
wfProfileOut( "$fname-checks" );
wfProfileOut( $fname );
return false;
}
4. Füge vor diesen Zeilen folgende Zeilen ein: #Mein Spambot Filter
$blockphrase = '|http://|';
$test_if_user = $wgUser->mName;
if ($test_if_user == '' && preg_match($blockphrase, $this->textbox1, $matches ) )
{
$geblocktertext = $this->textbox1;
#mail("meineemail@example.com","Wiki - Spam abgewehrt",$geblocktertext);
$this->spamPage ( 'Nur eingeloggte Nutzer dürfen folgenden Text eingeben:"'.$matches[0].'"');
wfProfileOut( "$fname-checks" );
wfProfileOut( $fname );
return false;
}
5. Um eine andere Phrase als "http://" zu filtern, muss man die Zeile $blockphrase = '|http://|'; andern zum Beispiel in $blockphrase = '|GanzbösesSchimpfwort|'; Wenn in der Zeile #mail("meineemail@example.com","Wiki - Spam abgewehrt",$geblocktertext); das führende "#"-Zeichen entfernt wird, wird bei jeder gelockten Nachricht eine Email an meineemail@example.com (hier natürlich die eigene email-Adresse eintragen!!) mit dem Titel Wiki - Spam abgewehrt (kann man ändern wenn man mag) geschickt, die außerdem die abgewiesene Nachricht enthält (Wenn man $geblocktertext in der Zeile durch "" ersetzt, erhält man den abgewiesenen Text nicht als Bestandteil der email. 6. Speichere die Änderungen in der Arbeitsdatei und lade sie dann hoch auf die Internetpräsenz. Dabei muss die online vorhandene Version erstezt werden. Keine Angst: wenn etwas schiefgeht, hast Du ja immer noch die Sicherheitskopie. 7. Besuche dein Wiki und versuche, einen Beitrag zu schreiben, der auch weiterhin erlaubt sein soll. Der Beitrag sollte ganz normal behandelt werden. Wenn es einen Fehler gibt, hast du in der Arbeitsdatei etwas falsch gemacht. Lade dann die Sicherheitskopie wieder hoch, damit dein Wiki wieder korrekt funktioniert. Gehe dir obigen Schritte dann noch einmal durch, suche den Fehler und versuche es erneut. 8. Wenn der vorige Schritt geklappt hat, versuche nun eine "verbotene" Nachricht zu schreiben, die du künftig automatisch abweisen willst. Sei dabei nicht im Wiki angemeldet. Nach dem Absenden der Nachricht sollte eine Benachrichtigung des Wikis kommen und der Artikel sollte nicht geändert sein. Mit dem "Zurück"-Button des Browsers kommst du von der Benachrichtigung wieder zurück zur Eingabeseite. Wenn es einen Fehler gibt, hast du in der Arbeitsdatei etwas falsch gemacht. Lade dann die Sicherheitskopie wieder hoch, damit dein Wiki wieder korrekt funktioniert. Gehe dir obigen Schritte dann noch einmal durch, suche den Fehler und versuche es erneut. 9. Wenn der vorige Schritt geklappt hat, versuche nun eine "verbotene" Nachricht zu schreiben, die du künftig automatisch abweisen willst. Sei dabei im Wiki angemeldet. Der Beitrag sollte ganz normal behandelt werden. Wenn es einen Fehler gibt, hast du in der Arbeitsdatei etwas falsch gemacht. Lade dann die Sicherheitskopie wieder hoch, damit dein Wiki wieder korrekt funktioniert. Gehe dir obigen Schritte dann noch einmal durch, suche den Fehler und versuche es erneut. 10. Fertig. | ||
Was muss ich beachten?
| ||
| Wieso funktioniert das?
Die genannte Datei ist für die Entgegennahme der Änderungen von Artikeln (auch Diskussionsbeiträge zählen als Artikelseiten) zuständig. Der Filter benutzt ein eigenes Kriterium, um damit die Spamabwehrfunktion des Wikis künstlich zu aktivieren. Das führt zu einer Benachrichtigungsseite und das Wiki führt die verbotene Änderung dabei nicht durch. Wenn man die Filterkriterien so setzt, dass man nur absolut unerwünschte Artikelbestandteile blockt, werden auch nur die Schreiber solcher Artikel mit dem Benachrichtigungsbildschirm "bestraft" und das sind in vielen Fällen ohnehin automatische Spamprogramme. | ||
| Dieser Artikel gehört zu folgenden Kategorien: "Computer" |
| Neuen Artikel erstellen | Diesen Artikel bearbeiten | Rückmeldung geben |