Mailadresse auf webseiten vor Spam schützen (Grafik)

März 3rd, 2009 | Tags: , , , , , , , , , , , , ,
Anzeige

top_mailgrafikIch arbeite gerade an einem “kleinen” Projekt1. Dabei werden Daten von Firmen öffentlich dargestellt. Um nun den Firmen zumindest von dieser Seite aus keinen Spam zu zuschanzen, habe ich mich dazu entschlossen, die Mailadressen der Firmen nicht im klartext, und auch nicht in einer “Verschlüsselten” Form (@ wird zu (at) usw) anzuzeigen, sondern sie relativ Spamsicher art als Grafik dazustellen. Und wie man das Technisch macht, und was es bringt will ich hier einmal beschreiben.

Warum ist es sinnvoll Mailadressen als Grafiken anzuzeigen?

Die Personen, die (finanzielles) Interesse daran haben Emailadressen aus dem Internet heraus zu holen sind immer dabei Ihre “Dienste” zu verbessern. Eine Emailadresse aller test@test.de2 ist dabei schnell aufgefunden und in ihr System übertragen. Mailadressen haben einen ungeahnten Nachteil, wenn es darum geht sie Automatisiert aufzufinden. Sie haben eine vorgegebene Syntax (Schreibweise). So muss immer ein @ und (mind.) ein Punkt enthalten sein. Somit kann man eine Mailadresse recht einfach mit Regulären Ausdrücken ausfindig machen ([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4} . Auch die (mehr oder weniger) erfolgreichen Versuche Mailadressen zu “Codieren” sind auf dauer gesehen eher weniger wirkungslos. Auch die Spamsammler betrachten sich ab und an mal Webseiten und können ihre Suche ohne weiteres auf (at), [at], <at>, (punkt), [punkt], <punkt> und was es da nicht alles gibt einstellen. Der Zeitaufwand, den die Maschienen für duzende von varianten brauchen sind so gering und kosten die Adresshändler kaum etwas3.
Da gibt es ja noch die zahlreichen varianten Mailadressen per JavaScript zu codieren und bei einem klick wieder zu entschlüsseln. Die Spamrobotter können (meines wissens) kein JS. Damit ist es eine Sinnvolle Sache, wenn da nicht die Besucher sind, die JavaScript in ihrem Browser ausgestellt haben. (Die sehen keine Mailadressen)

So genug damit die anderen Methoden schlecht zu machen. Warum nun Grafiken? Meines Wissens ist es sehr schwer und kompliziert Text von Grafiken abzulesen. Besonders dann, wenn der Kontrast (Vordergrund zu Hintergrund) sehr gering ist. (Dazu später mehr). Die Roboter können somit den Text auf den Grafiken nicht auslesen und ihnen bleibt der Inhalt verborgen. Doch Achtung, man macht die gesamte wirkung wieder kaputt, wenn man die Mailadresse beispielsweise als alt-Atribut an das IMG Tag anhängt. (Doch auch dazu gleich mehr). Nach dem gleichen Prinzip funtionieren auch die Image Catcher die man beispielsweise beim anmelden auf einigen Seiten ausfüllen muss.

Welche Nachteile bringt es mit sich?

Alles hat eine Schattenseite, so auch diese Methode. Dadurch, dass die Mailadresse als Bild angezeigt wird, und wir das alt-Atribut des IMG-Tags nicht sinnvoll belegen dürfen schließen wird Besucherkreise vollkommen aus. Gemeint sind die Benutzer, die a) Grafiken in ihrem Browser (zum Traffic sparen) ausgestellt haben b) Benutzer, die mit einem reinen Texteditor unterwegs sind4 und c) (fast am wichtigsten) Benutzer mit einer Beeinträchtigung im Sehvermögen. Benutzer aus der letzen Zielgruppe lassen sich meist Webseiten vorlesen, in Blindenschrift übersetzen oder versuchen diese durch besondere Browsereinstellungen der Webseite zu vergrößern.5 Beim übersetzen/ vorlesen lassen wandeln sich die Vorteile der Grafiken gegen Spammer auf einmal in Nachteile gegen unsere Besucher. Auch die Software, die diese Übersetzungen macht kann den Inhalt dieser Bilder nicht erkennen, und übersetzen/ Vorlesen. Und die Benutzer, die mit einer vergrößerten Schriftart unterwegs sind, können die Grafiken nicht erkennen, da sie sich nicht mit vergrößern lassen. Zudem kann es vorkommen, wenn man die Grafiken auf einem anderen Server speichert/ erzeugen lässt, dass die Grafiken nicht erreichbar sind.

Aufgrund all dieser Nachteile ist der Einsatz dieser Methode im (deutschen) Impressum nicht erlaubt. Aber für ein Impressum empfehle ich eh die Verwendung von Spamgourmet Adressen.

Wie wird es technisch (in PHP) umgesetzt?

Zur Umsetzung dieser Technik habe ich mir das Programm von “mike at mike-griffiths dot co dot uk” von de3.php.net als Vorbild genommen.

Zunächst einmal einmal die Verarbeitung des Bildes in einer PHP Datei (bei mir heißt sie email.php)

<?php
// Den String der Mailadresse erst zurückübersetzen und dann
// als $string speichern
$erse = Array("@", ".");
$such = Array("_++_", "_+_");
$string  = str_replace($such, $erse, $_GET[value]);

// Schriftgröße setzen
$font_size = 2;

// Breite des Bildes berechnen (Abhängig von Schriftgröße
$width  = imagefontwidth($font_size)*strlen($string);
// Höhe so setzen, dass die Schrift auch raufpasst
$height = imagefontheight($font_size);
// Rohgerüst des Bildes erstellen
$img = imagecreate($width,$height);
// Hintergrundfarbe (Anpassen auf eigene BG-Color
$bg    = imagecolorallocate($img, 255, 255, 255);
// Schriftfarbe (selbstwehlbar (siehe Verbesserungen))
$color = imagecolorallocate($img, 240, 145, 71);
// Stringlänge
$len = strlen($string);
// Y-Koordinate des Zeichens, X ändern, Y ist fest
$ypos = 0;
// Durch den String laufen
for($i=0;$i<$len;$i++){
// Position des Zeichens horizontal
$xpos = $i * imagefontwidth($font_size);
// "Zeichne" Zeichen
imagechar($img, $font_size, $xpos, $ypos, $string, $color);
// Entferne Zeichen aus dem String
$string = substr($string, 1);

}
// Headertyp um als Img angezeigt zu werden
header("Content-Type: image/gif");
imagegif($img);
// Und bild wieder löschen (Speicheraufräumen)
imagedestroy($img);
?>

Ich denke es ist alles selbsterklärend. Das einzigste ws zu erklären wäre sind die Zeilen 4-6 aber das wird sicherlich jetzt klar, wenn ich meinen Aufruf dieser “Grafik” zeige:

<?php
/* Umwandeln der Markanten Zeichen in FREI wählbare Zeichen, um bei der Übergabe
 * an die php Datei keinen "Verdacht" zu erzeugen
 */
$such = Array("@", ".");
$erse = Array("_++_", "_+_");
$emailadcode = str_replace($such, $erse, "test@test.de");
// Aufrufen der PHP Datei mit Übergabe der codieren Mailadresse (wie immer)
echo "eMail: <img src=\"/img/email.php?value=$emailadcode\" alt=\"Zum Schutz vor Spam wird diese Mailadresse als Grafik angezeigt. Wir bitten dies zu entschuldigen.\" />";
// Achtet bitte auf das alt-Atribut, um auch Menschen eine Erklärung zu geben, die keine Bilder sehen
?>

Wie kann man das ganze (theoretisch) noch optimieren?

Es ist alles erlaubt, um den Spamrobotern das “Leben” zu erschweren. Denkbar ist dabei:

  • Die Schriftfarbe in einem möglichst geringen Kontrast zur Hintergrundfarbe halten (Achtung Benutzerfreundlichkeit)
  • Die Emailadresse zwei teilen. Entweder horizontal oder Vertikal. Selbst wenn ein Roboter den Inhalt auslesen kann, kann er mit der halben Adresse wenig anfangen. Ich Empfehle die Teilung in horizontaler Ebene.

Ich hoffe euch hat meine Erklärung gefallen. Für Anregungen und verbesserungen bin ich stets dankbar.

  1. Was auch erklärt, warum hier in den letzten Tagen (und warscheinlich auch in den nächsten Tagen) wenig neues los war. []
  2. Gibt es die Mailadresse eigentlich? Wenn Ja, wird da sicher nen Haufen Spam drauf ankommen, ich kenne viele, die diese Mailadresse als Beispiel nutzen []
  3. Botnetze sei dank []
  4. Ja die gibt es immernoch []
  5. Thema Barierefreiheit SEHR WIRCHTIG []

Weiter lesen


  1. Als Impressum darf man übrigens soweit ich weiss kein bild verweden.. rechtlich.

  2. März 8th, 2009 at 13:06

    Hallo,
    vielen Dank das du es noch einmal bestätigt hast (war mir da auch nicht ganz sicher, hatte aber auf dem WordCamp in Jena auch ein Gespräch darüber.

    btw. Ich hab auch darauf deutlich Hingewiesen
    “Aufgrund all dieser Nachteile ist der Einsatz dieser Methode im (deutschen) Impressum nicht erlaubt.”

  3. André
    September 30th, 2009 at 13:28

    Beim nächsten Projekt probier ich Mailhide (http://mailhide.recaptcha.net/) aus. Das setzt ein Captcha vor die Anzeige der Adresse. Sollte auch fürs Impressum geeignet sein. Und man spart sich die serverseitige Berechnung von Bildern…

Kommentieren