Kodierung von Mail-Adressen
Der Sinn: Spammer, die Mailadressen sammeln und verkaufen, untersuchen per robots die Webseiten (ähnlich wie Suchmaschinen es auch machen). Aus diesem Grund der Versuch, die Mailadressen zu verstecken. Die robots führen gewöhnlich keinen Code aus und erkennen / dekodieren (hoffentlich) nicht die eingebetteten Mailadressen.
Der Browser dagegen führt das kleine script aus und dekodiert die Zeichenkette. Der Leser der Webseite bemerkt nichts davon.
Ein Automat kann eine Mailadresse z.B. erkennen an- der Zeichenfolge "mailto:" oder auch beliebige Zeichen, gefolgt von
- dem Zeichen "@" und
- nachfolgend eine Zeichenfolge, in der mindestens ein Punkt "." vorkommt.
Kodieren
Die Kodierung übernimmt das script "EnCryptMailAdr", indem man lokal auf einer dummy Seite den folgenden Code einfügt und die Seite aufruft.
<script type="text/javascript"> EnCryptMailAdr('info@zisslaweng.de');</script>
Das Ergebnis sieht dann so aus:
Dekodieren
Den generierten Nummernblock z.B. per drag and drop in der Zeile
<script type="text/javascript"> DeCryptMailAdr('nummernblock'); </script>
an die Stelle nummernblock zwischen die beiden "'" einfügen, und dann ersetzt
<script type="text/javascript"> DeCryptMailAdr('18496:
14280: 14960: 13872: 15096: 8704: 16592: 14280: 15640: 15640:
14688: 13192: 16184: 13736: 14960: 14008: 6256: 13600:
13736'); </script>
die übliche Schreibweise von <a>mailto:...</a> ...und natürlich das decode-script in die Webseite einfügen.
So sieht es aus
Noch einfacher..
..wenn Ihre Webseite unter php läuft. Hier verwende ich mal eine tatsächlich nicht vorhandene Adresse, da sie ja im Codebeispiel lesbar ist. Sie benötigen nur diesen kleinen Einschub:
<script type="text/javascript">
DeCryptMailAdr('<?echo encryptmailadr('forspam@zisslaweng.de');?>');
</script>
und das Ergebnis:
Programmcode
Kodieren
mit einigen Zeilen Code (JavaScript):
function EnCryptMailAdr (c){
var mail=c.split("");
var nummern="";
for(i=0;i<mail.length;++i){
nummern+=": " + (mail[i].charCodeAt(0) * 136);
}
document.write(c + " = 18496" + nummern);
}
oder in PERL ( zugesandt von Arnd Otto )
sub encryptmailadr {
my $m = shift;
my @mail = split( //, $addr );
my $nummern='18496';
foreach @mail {
$nummern .=":".(ord($_)*136);
}
return $nummern
}
oder gleich PHP
function encryptmailadr ($m) {
$mail=explode(':',chunk_split($m,1,":"));
$nummern='18496';
for ($i=0; $i < sizeof($mail)-1; $i++) {
$nummern .= ":".(ord($mail[$i]) * 136);
}
return $nummern;
}
Dekodieren (Javascript)
function DeCryptMailAdr (c){
var ac=c.split(":");
var s="";
for(i=1;i<ac.length;++i){
s+=String.fromCharCode(Number(ac[i])/Math.sqrt(Number(ac[0])));
}
document.write('<a href="mailto:' + s + '">' + s + '<\/a>');
}