Akismet vs. Antispam Bee

Was macht der Blogger gegen Kommentarspammer? Meist Antispam-Plugins verwenden natürlich. Ein lange Zeit sehr beliebtes ist Akismet, das aber nicht ganz unproblematisch ist: So gibt es Datenschutzbedenken, weil alle Daten, die der Kommentator eingegeben hat, samt IP-Adresse an Akismets amerikanische Server übertragen werden – die diese dann bewerten und mit bekannten Spammern abgleichen, so funktioniert Akismet eben.

Ein Vorteil davon ist, dass auch manuelle Kommentarspammer so erfasst werden können (wenn sie nicht zu neu oder zu abwechslungsreich sind=, ein Nachteil, dass auch Unschuldige im Spam landen können (false positives), was auf meinem Blog ein paar Mal pro Monat vorkam – was für den Kommentator unschön ist, insbesondere weil er standardmäßig nur eine Seite ohne seinen Kommentar geliefert bekommt (wogegen ich letztes Jahr eine entsprechende Lösung eingebaut hatte), was alle ohne Akismet-Erfahrung verwirren könnte. Und wenn der Blogger zu selten oder zu unaufmerksam in seinen Spam-Ordner schaut, kommt der eigentlich gute Kommentar nie ans Tageslicht – und je öfter das vorkommt, umso mehr hält Akismet den Kommentator für einen Spammer. Thomas hat gestern auch darüber geschrieben.

Ein weiteres Problem mit aktuelleren Versionen von Akismet ist/war, dass die wp_commentmeta-Tabelle mit u.U. Tausenden Einträgen zugemüllt wurde, in der das Plugin den Status der Spam-Abfrage für jeden Kommentar einträgt und selbst bei bereits gelöschten Spams nicht entfernte; letzteres müsste in der neuesten Version 2.5.3 aber behoben sein.

Ach ja, und Diskussionen über eine eventuelle Gebührenpflicht gab’s auch – zumindest Neu-Benutzer, die noch keinen API-Key haben, dürften auf diese Frage stoßen.

Wegen all dieser Dinge hatte ich mich nach einer Alternative umgesehen – d.h. eigentlich nicht groß umgesehen, denn Antispam Bee ist ja eh schon in fast aller Munde. Und die Biene macht ihren Job ganz ohne Inhaltsvergleiche auf einem Server sehr gut. Sie kann auch optional rein anhand der IP-Adresse mithilfe externer Dienste bestimmte Länder oder bekannte Spammer aussperren – was ich hier aber (noch?) nicht aktiviert habe. Deswegen erwischt sie manuelle Kommentarspammer aber nicht so gut, sodass man mitunter solche false negatives selbst löschen muss.

Vor ziemlich genau drei Wochen hab ich Antispam Bee installiert und hatte in dieser Zeit sieben solche nicht geblockten Spams (von fünf „Kommentatoren“). Vielleicht ein Grund, auch mal die angesprochenen IP-Prüfungen zu testen… Auf jeden Fall gab’s auch keinen false positive, und die automatischen Spams wurden sehr zuverlässig geblockt – ich bin also mit der Biene zufrieden und werde sie behalten.

Ich denke dann auch, ich kann nach der Testphase die Spams auch gleich löschen lassen, ohne dass die Biene sie in den Spam-Ordner schickt; dann wären dort nur solche, die wegen meiner Einträge in die WordPress-eigene Blacklist dort landen, was die Sache auch übersichtlicher macht (falls das mal vorkommt – ist selten, aber vorgestern hab ich dort z.B. eine IP einer (mutmaßlichen) Schule, von der eine Schulklasse hier blödel­chatten wollte, eingetragen…).

Aber ein Problem muss ich noch ansprechen:

Antispam Bee und Ajax Comment Preview

Nun besteht ein wesentlicher Punkt in der Spam-Bot-Abwehr der Biene darin, den Namen des Kommentarfeldes zu ändern – es heißt nicht mehr comment, sondern hat eine blogspezifische Zahl angehängt bekommen. (Die ID ist gleich geblieben, lässt sich also mit CSS wie sonst auch ansprechen.) Dadurch mag die Kommentar­vorschau­funktion von Ajax Comment Preview aber nicht mehr1 – es sei denn, man ändert ein bisschen in dessen JavaScript-Code. Meine Lösung mag nicht die eleganteste sein – insb. weil sie an jedes Blog angepasst sein muss –, aber sie funktioniert:

Man ersetze in ajax-comment-preview.js in der Funktion send diese drei Zeilen:

if ( !t.data.comment || t.oldData == $.param( t.data ) ) {
    return false; // Blank || Last AJAX request was the same, so bail on this one.
}

– sie befinden sich ab Zeile 28 direkt vor dem großen weit eingerückten Block, der mit jQuery.post beginnt – durch diese:

if (t.oldData == $.param( t.data )) { return false; } // Last AJAX request was the same, so bail on this one.
if (t.data['comment-12345']) t.data.comment = t.data['comment-12345']; //--ag fuer Antispam Bee
if ( !t.data.comment ) { return false; } // Blank

Wobei ihr die gelb hinterlegte Zahl 12345 an beiden Stellen durch die bei eurem Blog verwendete ersetzen müsst – diese findet ihr ganz einfach im Quelltext (oder mit FireBug o.ä.) einer Seite mit Kommentarfeld raus, sucht dort am besten nach einer textarea mit name="comment-, das sollte in den meisten Themes reichen. (Und wenn’s dann noch nicht gleich funktioniert, dran denken, die Seite im Browser explizit neu zu laden, damit das neue JavaScript auch geladen wird.)

So, gibt’s noch Fragen, Anregungen und sonstige Meinungen zu meinem Code oder zu den Plugings allgemein? Nur raus damit, die Chance, dass ihr fälschlicherweise im Spam landet, sind geringer als früher.^^

  1. und andere Ajax-Plugins können auch Probleme haben []

16 Kommentare
1 Trackback

  1. bFQ

    Ich bin ja nach der ganzen Akismet-Diskussion auch zu AntiSpam Bee gewechselt. Generell war ich anfangs auch recht zufrieden, habe allerdings mittlerweile leider auch einiges an Mehraufwand im Gegensatz zu Akismet.

    Zum Einen hat das Plugin teils wie bei dir ja auch vereinzelte Spam-Kommentare nicht erkannt. Andererseits habe ich aber auch schon den einen oder anderen False Positive gehabt. Für mich bleibt also vorerst nur, täglich meine Spam-Kommentare durchzuschauen, was allerdings bei den ja meistens extrem offensichtlichen Dingern nicht weiter schwer ist.

    Ein wirklich blöder Fall hat mich aber schon fast dazu getrieben, doch wieder nach etwas anderem zu suchen. In den letzten Tagen hatte es nämlich ein Spambot extrem auf mich abgesehen. Der hatte täglich nachts etwa 90 Kommentare auf immer den selben alten Beitrag geschrieben und alle sind einfach so durch den Spamfilter gelangt. Nach dem ich das Problem drei Mal in Folge hatte und auch andere Einstellungen währenddessen (Einbindung des externen Dienstes „Project Honey Pot“ etc) nichts brachten, konnte ich den Kerl letztendlich nur durch einfaches Sperren der Kommentare auf dem Beitrag loswerden. Sowas ist dann schon ärgerlich. Vor allem weil man ja an sich auf Honey Pot selbst IP-Adressen melden kann, für die des Spambots aber angeblich keine Meldungen bekannt seien, obwohl es seit mehreren Monaten dort diverse Meldungen zu der IP gibt.

    Naja, zum Glück hat es bisher nicht noch so ein Massenspammer auf mich abgesehen und daher bleibe ich vorerst bei AntiSpam Bee.

    • c

      Hmm, kam der Spambot immer von derselben IP? Dann würd ich die einfach in der htaccess blocken. Da stehen bei mir schon ’n paar von früher drin…

      Das mit den False Positives muss ich dann wohl auch noch weiter beobachten. Mit der Bee-Standardmethode werden die nicht entstanden sein, denke ich – hattest du da schon Honey Pot und andere schärfere Kontrollen aktiviert?

      • bFQ

        Oh, hab deinen Kommentar erst jetzt entdeckt, da er im Spam gelandet war! Passt ja :D

        Ja an die htaccess hatte ich auch gedacht. Ich war nur zu faul, nen FTP aufzumachen und mir die Syntax zum Blocken per htaccess raus zu suchen ;) – der Bot hat aber auch schon aufgehört.

        Die False Positives sind komischerweise alle aufgetreten, während Honeypot und die „schärfere Prüfung“ noch abgeschaltet waren. Seitdem ich sie u.a. wegen des Bots aktiviert habe, gab’s aber noch keine neuen False Positives.

        Probleme hatte ich auch mit den Trackbacks, denn da wurden mir so einige als Spam markiert, die keiner waren. Die Trackback-Prüfung habe ich daher auch ausgeschaltet.

  2. CG

    Zur Spamabwehr nutze ich rein nur NoSpamNX, welches ausschließlich nur auf die Spambots greift. Das ziemlich zuverlässig, ohne False Positive, so dass man hier auch die Einstellung „blockieren“ kann und somit diese Kommentare gar nicht mehr zustande kommen. Mit einer Blacklist kann man zusätzliche manuell eintragen.
    Ich habe auch schon von einigen gehört, dass sie Antispam Bee und NoSpamNX in Kombination nutzen, und das zusammen ziemlich erfolgreich sein soll ;-)

    • c

      NoSpamNX klingt auch interessant, ja. Könnte ich auch mal testen. Wobei’s auch interessant wäre zu sehen, ob die Kombination wirklich mehr schafft, d.h. ob manche Spambots nur auf eine der beiden Methoden reinfallen…

  3. CG

    Ich habe NoSpamNx bzw. den Vorgänger von Anfang an in meinem Blog aktiv. Bis dato haben es erst 2 Spambots geschafft, das Ding zu knacken. Und dann auch nur kurz. Bezüglich Spambots ist das wirklich äußerst effektiv.
    Antispam Bee hatte ich nie im Einsatz, deswegen kann ich zum Vergleich nichts sagen. Ich habe es aber in einigen Blogs immer mal wieder gelesen, dass diese beiden Plugins kombiniert eingesetzt werden.

  4. CG

    NoSpamNX kannst Du ruhig auf blockieren stellen ;-) und ich bin schon gespannt, was Du sagst. Bei mir steht da nur …hat NoSpamNX 7555 dumme Spambots gestoppt… :mrgreen:

    • c

      NoSpamNX steht jetzt auch auf blockieren. Und ich hab die Zahlen von Freitag und jetzt verglichen: NoSpamNX ist mittlerweile bei 245 „birdbrained spambots“, wie’s in der englischen Version vogelbeleidigend heißt, und ist damit um 19 mehr gestiegen als Antispam Bee im selben Zeitraum – das klingt danach, dass die Biene diese 19 durchgelassen hätte (und beide vmtl. diejenigen zählen, die sie beide erkannt haben).

      (Oder korrekterweise: der Unterschied in der Erkennung liegt bei 19, könnte ja sein, dass die Biene X gefangen hat, die an NoSpamNX vorbeikamen, und umgekehrt 19+X…)

      Allerdings kam auch mit NoSpamNX ein weiterer der o.a. Sorte durch. Manuell sah der auch nicht aus – vielleicht schafft’s der Bot, das display:none zu erkennen, das offenbar seit Version 3.17 wieder anstelle der CSS-Datei verwendet wird. Naja, wenn das wieder vorkommt, ändere ich das manuell…

      Ich lass die Kombination jetzt jedenfalls mal so laufen.

  5. T

    Also die Verbindung NoSpamNX und AntiSpamBee arbeitet bei mir optimal. Wenn pro Woche tatsächlich 1 Spamkommentar durchkommt ist das wirklich viel. Da wird alles verschluckt was so kommt OHNE dass es allerdings zu guten Kommentaren kommt die verschwinden. Anders also wie bei Akismet. Nur sehr selten landet jemand im Spam wo ich ihn dann aber nicht unter 476 anderen rausfischen muss. Alles in allem bin ich hoch zufrieden damit. Wenn jetzt mit WP 3.1 die PB/TB Angelegenheit noch so gut funktionieren würde wäre alles spitze.

  6. T

    Du nimmst mir aber auch jede Hoffnung :cry: :)

  7. CG

    @Thomas: Da die Problematik der Trackbacks/Pingbacks/Pings meist am Memory Limit des Servers scheitert werden wir auf eine diesbezügliche WP-Lösung wohl eher warten bis wir schwarz werden ;-)

  8. T

    Wollen wir das? Hä? WOLLEN WIR DAS??? :king:

  9. H

    Was ist denn z.B. mit IntenseDebate, braucht man damit dann überhaupt noch einen anderen Spamfilter wie Askismet oder AntispamBee?

    • c

      Hmm, Erfahrung hab ich damit nicht, aber wenn sich ein anderer Anbieter wie IntenseDebate um die Kommentare kümmert, wird man selber kaum einen Spamfilter brauchen, wenn’s um manuelle Kommentare geht.

      Automatische „Kommentare“ von Spambots und Trackbacks/Pingbacks sind aber evtl. ein anderes Thema; solange IntenseDebate & Co. keine Umleitung per WP-Plugin bieten, wirst du wohl dafür einen Spamfilter brauchen – oder sie besser gleich deaktivieren. Dazu sollte es aber Hinweise/FAQs bei IntenseDebate & Co. geben, denke ich.

Schreibe einen Kommentar an cimddwc

Alle Angaben sind freiwillig. Die E-Mail-Adresse wird nicht veröffentlicht oder weitergegeben.

  • Moderation: Wer zum ersten Mal kommentiert, dessen Kommentar muss manuell von mir freigeschaltet werden.
  • Benimm dich! Keine Beleidigungen, keine rechtswidrigen Inhalte u.s.w.! Sollte eigentlich selbst­verständlich sein, oder...?
  • Webseite: Nichts gegen Blogs mit Werbung, aber rein kommerzielle Links sind unerwünscht und werden gelöscht. Reine Spam-Kommentare natürlich auch.
  • E-Mail-Benachrichtigung bei neuen Kommentaren: Diese Funktion musst du über eine beim ersten Mal verschickte Bestätigungs-Mail freischalten. Diese Benachrichtigungen können mit dem auch in jeder Mail enthaltenen Link auch wieder deaktiviert werden.
  • Twitter: Wenn du einen Twitter-Account hast, kannst du im entsprechenden Feld deinen Twitter-Namen eingeben (egal ob mit oder ohne dem @), der dann bei allen (auch älteren) Kommentaren, die dieselbe E-Mail-Adresse enthalten, angezeigt wird. (Heißt auch: das E-Mail-Adressfeld muss auch ausgefüllt sein.)
  • Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <sub> <sup> <big> <small> <u>