pre1

Endlich Spamfrei

29. November 2007

nasendackel.pngMoinsen. Der folgende Beitrag hat zwar nichts mit Apple zu tun, aber viele von euch führen vielleicht ebenfalls ein Blog. Daher haben der Ad und ich uns gedacht, dass es vielleicht Sinn macht, einige meiner alten Tutorials hier einzubinden. Fangen wir doch mal mit dem Spamschutz an. Weitere Tutorials folgen Stück für Stück.

Achtung: Ich bin nicht dafür verantwortlich, wenn nachher irgend etwas auf eurem System nicht mehr läuft. Das Basteln geschieht auf eigene Gefahr!

Teil 1:

Der Thorsten von puzich.com erläutert uns WordPress’lern eine sehr einfach Methode zur Spamabwehr (die auch für andere Systeme geeignet ist).

Wie ich das verstanden habe, basiert die Methode auf der Tatsache, dass…

a) Bots so doof sind und alles ausfüllen und
b) Bots kein CSS beherrschen.

Daher baut man in die comments.php ein weiteres Eingabe-Feld ein, das man per CSS versteckt. Am besten gibt man dem Textfeld als name=”author”, damit der Bot garantiert darauf anspringt. Die anderen Inputfelder passen wird in Teil 2 an.

<input class="feld" type="text" name="author" size="25" style="display:none;" />

In der wp-comments-post.php fügen wir nach

$comment_content = trim($_POST['comment']);

noch

if ( !empty($_POST['author'])) { wp_die( __('Sorry, but it seems you are a spam bot.') ); };

ein.

Vom Prinzip her wird geschaut, ob das versteckte Feld ausgefüllt wurde. Wenn ja, dann kann man sicher sein, dass es sich um einen Bot handelt.

Teil 2

Mit der Methode sind immer noch ein bis zwei Spams durchgerutscht. Ich habe den Verdacht, dass die Bot nach den “name=” der Inputfelder schauen. Daher trickse ich sie jetzt aus. Das versteckte Inputfeld, welches nur der Bot erkennt, heißt “author” und den richtigen Feldern hab ich einfach andere Namen gegeben. Das Feld für den Autor heißt nicht mehr author, sondern bei mir jetzt “heinz“. Auch den restlichen Feldern habe ich andere Namen gegeben. “wilma” ist email, “willy” ist url und “johnny” ist comment.

Nun muss man noch die wp-comment-post.php anpassen, so dass WordPress auch mit den neuen Namen umgehen kann.

$comment_author = trim(strip_tags($_POST['author']));
$comment_author_email = trim($_POST['email']);
$comment_author_url = trim($_POST['url']);
$comment_content = trim($_POST['comment']);

…sieht bei mir nun folgendermaßen aus…

$comment_author = trim(strip_tags($_POST['heinz']));
$comment_author_email = trim($_POST['wilma']);
$comment_author_url = trim($_POST['willy']);
$comment_content = trim($_POST['johnny']);

Scheinbar klappt das wunderbar, denn bis heute ist kein einziger Kommentar-Spam mehr aufgetaucht.

Ich danke Thorsten für diese klasse Idee.

Desweiteren bietet Thorsten noch ein System an, welches mit Sessions und Hash-Werten arbeitet. WordPress ließ sich aber leider nicht dazu überreden, damit zu arbeiten. Wer jedoch ein WordPress-Crack ist und sich auch mit der Entwicklung von Plugins auskennt, sollte sich das auf jeden Fall mal anschauen. Das würde dann schon der Burner werden. Zusätzllich kann man Trackback-Spam mit dem Simple Trackback Validation Plugin abwehren. So wird Akismet dann gänzlich arbeitslos.

{ 30 Kommentare… lese sie unten oder schreibe selbst einen }

Rafael Bugajewski November 29, 2007 um 16:07

Hm, wollt ihr die nicht einfach integrieren, so wie das damals mit den Beiträgen von ad geschehen ist?

Ansonsten müssen alle, die dein Blog schon abonniert hatten, alles “neue” wegklicken. Alternativ kann man die Beiträge ja auch konsistent kennzeichnen.

Antworten

Christoph November 29, 2007 um 16:09

Nö. Ich schreib nur noch einen, in dem ich alles für Wordpress mal zusammen fasse. So viel war das ja auch nicht. Integrieren würd ich nicht so gerne machen

Antworten

Boris November 29, 2007 um 16:14

Eine weitaus bessere Methode gegen Spam wäre es, eine Frage einzubauen, die niemals ein Spambot “ermitteln” oder erraten kann.

So zum Beispiel:

Der 2. Buchstabe im Namen “LUTZ” lautet:

Wenn man ein “u” eingibt, ist alles ok. Wenn nicht – war der User betrunken oder es war ein Spambot. ;)

Antworten

Christoph November 29, 2007 um 16:16

Das ist dann aber nicht so schön für den Leser. Ich will ja gerade all diese Matheaufgaben, Bilder raten, etc verhindern.

Antworten

Rafael Bugajewski November 29, 2007 um 16:16

Gut! :)

Antworten

Boris November 29, 2007 um 16:22

Schon, aber das ist noch eine sehr einfache Aufgabe. Auch das wäre sicher:

“Wie heißt diese Website” … richtig, Apfelquak. ;-)

Die Variante mit dem via CSS unsichtbaren Inputfeld mag bequem sein, wird aber langsam bereits durch Bots herausgehebelt und ist alles andere als semantisch und sinnvoll (aus der Sicht eines Webentwicklers *g*). :D

Antworten

ad November 29, 2007 um 16:27

Ich darf anmerken, dass diese Methode der Spamabwehr seit dem Relaunch von AQ erfolgreich läuft.

Bis zu dem Einsatz hatten wir ca. 19000 Spams gezählt. Momentan sind es 19231. Die Differenz besteht zu 100% aus Trackback-Spam, den Akismet rausgefischt hat. Kommentar-Spam ist seitdem keiner mehr aufgetaucht!

Antworten

dolce November 29, 2007 um 16:50

das ist ja echt cool – wieso baut wordpress.org das nicht ein? man kann ja feldnamen auch generieren!

Antworten

Sebastian November 29, 2007 um 17:00

@ dolce

Würde zu Problemen beim automatischen Ausfüllen führen. Gut, kann man überleben wenn man jedes mal wieder seinen Namen, seine Adresse und das ganze Zeug eingeben muß aber ärgerlich wäre es.

Der Mensch ist faul, das beinhaltet tippfaul.

Antworten

Moritz November 29, 2007 um 17:17

Und was ist mit Leuten, die ohne CSS surfen, z.B. Menschen die fast blind sind und deshalb auf reine Textansicht angewiesen sind oder einen Speedreader? Die dürfen hier nicht posten? Oder habe ich was überlesen… ?

Antworten

Christoph November 29, 2007 um 17:19

Richtig, die dürfen nicht posten…. :-? Ne Quatsch

du kannst doch einfach ein einen verstecken Text einbauen. “Achtung dieses Feld nicht ausfüllen!” einfach in ein Span mit dem Attribut “display:none;” packen. Fertig.

Irgendwas müsst ihr auch noch selber machen :D

Antworten

Christoph November 29, 2007 um 17:20

@ dolce

Würde zu Problemen beim automatischen Ausfüllen führen. Gut, kann man überleben wenn man jedes mal wieder seinen Namen, seine Adresse und das ganze Zeug eingeben muß aber ärgerlich wäre es.

Der Mensch ist faul, das beinhaltet tippfaul.

Da bei bei Wordpress eh alles in Cookies gespeichert wird und man so nur einmal die Daten eingeben muss, dürfte ein kurzes tippen kein Problem sein.

Antworten

Matt November 29, 2007 um 22:04

das ist ja echt cool – wieso baut wordpress.org das nicht ein? man kann ja feldnamen auch generieren!

Dann wäre es ja wieder normal und die Spambots könnten sich auf die Situation einstellen. Der Versuch würde scheitern.

Antworten

Matt November 29, 2007 um 22:08

Und was ist mit Leuten, die ohne CSS surfen, z.B. Menschen die fast blind sind und deshalb auf reine Textansicht angewiesen sind oder einen Speedreader? Die dürfen hier nicht posten? Oder habe ich was überlesen… ?

Ohne jetzt hier den großen Exkurs über Zugänglichkeit und Barrierearmut abfackeln zu wollen: Screenreader sind durchaus in der Lage, CSS zu erkennen und korrekt zu interpretieren. Außerdem benötigen Personen mit Sehschwächen nicht zwingend kein Stylesheet, sondern formatieren sich beispielsweise bestimmte Bereiche der Seite mit einem User-Stylesheet so, wie es für sie am besten ist.

Aber spätestens beim nächsten CSS-Naked-Day fällt es auf, keine Frage.

Antworten

apfelnase November 29, 2007 um 22:24

Sehr klasse Tutorial! *twothumbsup*

Antworten

Franz Patzig November 30, 2007 um 08:38

Für Benutzer, die nicht so “skilled” sind, kann ich “TanTan Noodles Simple Spam Filter empfehlen” (hier beschrieben: http://www.franztoo.de/?p=265 ). Mein Comment Spam ist ebenfalls quasi auf Null damit gesunken. Nach der oben genannten Beschreibung, sind noch weitere Verbesserungen am Plugin vorgenommen worden.

Antworten

Basil Zurbuchen November 30, 2007 um 09:21

Bei mir läuft ganz einfach das bereits vorinstallierte Akismet (http://akismet.com/) und filtert ganz wunderbar alles raus, was nicht reingehört. Da brauchts doch gar keine komplizierten Umbauten, oder?

Antworten

ad November 30, 2007 um 09:24

Kommt darauf an, wie hoch dein generelles Spamaufkommen ist. Je größer, desto höher ist natürlich die Wahrscheinlichkeit, dass auch mal welche durchschlüpfen. Ich hatte eine Zeit lang auf admartinator.de ein Spam-Aufkommen von 2000-3000 Spams pro Monat. Da waren dann schon mal so 1-2% dabei, die durchgeflutscht sind.

Antworten

Franz Patzig November 30, 2007 um 09:25

Bei Askimet sieht gibt es aber immer wieder “false positives”, man muss sich also durch den Müll wühlen, wenn man seine Kommentatoren mag.

Bei der oben beschriebenen Methode und bei dem TanTan Filter, werden Askimet Spams sofort abgewiesen, sie landen also erst gar nicht dort.

Antworten

ad November 30, 2007 um 09:29

Stichwort “False Positives”: Das, was bei mir jetzt im Akismet-Filer liegen bleibt, ist zu 99% False Positive. Die restlichen 1% sind Spammer, die zu Fuß durch die Blogs pilgern.

Antworten

Tobias November 30, 2007 um 11:12

Danke! Ich habe mir diese Ausführung gespeichert!
Gleiches Problem wie AD:

Stichwort “False Positives”: Das, was bei mir jetzt im Akismet-Filer liegen bleibt, ist zu 99% False Positive. Die restlichen 1% sind Spammer, die zu Fuß durch die Blogs pilgern.

Aus irgendeinem Grund ist ein Etiketten-Verkäufer der Meinung in meinem Comments-Bereich Werbung machen zu müssen!

Antworten

kuschti November 30, 2007 um 14:39

kennt eigentlich jemand ein Tool mit dem man seinen Wordpressblog nach toten links absuchen kann?
z.B. jetzt nach den toten Nasendackel links?

Antworten

Tobias November 30, 2007 um 14:45

kennt eigentlich jemand ein Tool….

“Integrity” das kleine Programm checkt alle Links der angegebene Webseite und ist Freeware!

Antworten

ad November 30, 2007 um 14:46

kennt eigentlich jemand ein Tool mit dem man seinen Wordpressblog nach toten links absuchen kann?

Ich bis dato noch nicht, aber Google weiß alles:
http://w-shadow.com/blog/2007/08/05/broken-link-checker-for-wordpress/

Antworten

Guennersen November 30, 2007 um 15:10
kuschti November 30, 2007 um 15:15

lol danke!
dachte auch google findet was für mich aber irgendwie hab ich wohl falsch gesucht.

gleich mal testen.

Antworten

D.Venske Dezember 5, 2007 um 11:37

Wieso verstehen Bots kein CSS?
Spätestens nach den “Tricks”, die immer veröffentlicht werden, wird auch der dümmste Bot es verstehen.
Im übrigen sind die oben veröffentlichten Methoden schon Jahre alt!

Antworten

ad Dezember 5, 2007 um 11:41

Im übrigen sind die oben veröffentlichten Methoden schon Jahre alt!

Und wenn schon – sie halten mein Blog seit Monaten spamfrei.

Antworten

Christoph Dezember 5, 2007 um 12:32

Wieso verstehen Bots kein CSS?
Spätestens nach den “Tricks”, die immer veröffentlicht werden, wird auch der dümmste Bot es verstehen.
Im übrigen sind die oben veröffentlichten Methoden schon Jahre alt!

Naja. Auch wenn’s schon 10 Jahre alt ist, die schnallen das trotzdem nicht. Diese Seite ist der lebende Beweis. Und bei den Besucherzahlen, die wir hier haben, sollte auch sämtliche Blogs auf uns aufmerksam werden.

Vom Prinzip her stören, glaub ich, auch einfach die veränderten names am meisten.

Antworten

Matt Dezember 5, 2007 um 18:23

Bots sind nun mal per se doof, schlecht programmiert oder beides. Außerdem bietet CSS dank Kaskade diverse Möglichkeiten, ein Element auszublenden. Die Bots müssten also eigentlich einen kompletten CSS-Parser mit sich rumschleppen.

Antworten

{ 16 Trackbacks }

Schreibe einen Kommentar

Smilies gefällig?

Previous post:

Next post: