Willkommen in der Webstatt Zum Webstatt Blog und Stories
Rene Rene am 30.04.07 01:09

Ich weiß, es ist simpel. Aber 1. hatten wir gerad darüber eine Diskussion im wChat, was mich motiviert hat, ein simples Script zu schreiben. 2. Denke ich, dass es evtl.zukünftig noch einige interessieren könnte.
Vielleicht habt ihr ja noch mehr, andere oder bessere Lösungen.

Hier also ein (echt simples) Script um seine E-Mail-Adresse vor Crawlern zu verbergen und die ungewollten Kaufanreize über mögliche Penisverlängerungen (als ob ich das nötig hätte) oder Rolex-Uhren zu minimieren.

head:
<script type="text/javascript">
function mail_to_me() {
maildata = new Array(
"name", "meine_seite", "com" // aus dem Schema: name@meine_seite.com
);

mailaddress = maildata[0]+"@"+maildata[1]+"."+maildata[2];
location.href="mailto:"+mailaddress;
}
</script>


body:
<a href="javascript:mail_to_me();">Schreiben Sie mir eine E-Mail, aber bitte kein Spam</a>


Wie gesagt, es ist simpel. Mir gehts auch eher darum andere Möglichkeiten kennenzulernen (es muss nicht unbedingt JS sein). Vielleicht kriegen wir ja was für die zukünftige Scriptsammlung hin.

Gruß,
René

netcup.de Warum gibt es hier Werbung?
Michael Michael am 30.04.07 11:20

Ein interessantes Thema. Mich würden Ideen interessieren, auch beliebige E-Mail Adressen so zu verbergen.
Vermutlich hat es weder Sinn alle Teile der E-Mail Adresse an eine JS Funktion zu übergeben noch das @-Zeichen durch Konstrukte wie [at] zu ersetzen.

Al3x0r Al3x0r am 30.04.07 12:27

Wie viel Sinn macht es , die eMail in ASCII Zeichen im Code zu hinterlegen?

Ich habe gelesen, dass man einige Bots damit austricksen kann:

Meine Funktion dazu sieht so aus: (Bitte steiningt mich nicht, die ist mit Sicherheit total hässlich und unprofessionel aber sie funktioniert)

function email_to_ascii($email) {
$upper_letter = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
$upper_letter_ansi = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'I', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
$lower_letter = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$lower_letter_ansi = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' );
$numbers = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$numbers_ansi = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$other_chars = array('-', '.', '@', '_');
$other_chars_ansi = array('-', '.', '@', '_');
$email = str_replace($numbers, $numbers_ansi, $email);
$email = str_replace($upper_letter, $upper_letter_ansi, $email);
$email = str_replace($lower_letter, $lower_letter_ansi, $email);
$email = str_replace($other_chars, $other_chars_ansi, $email);
return $email;
}


// Die Funktionen funzt nicht, er wandelt die Ascii-Zeichen sofort um.

hier das Ganze online...

die Möglichkeit mit JS finde ich nicht gut, denn sie schließt gleich wieder einige User aus...

BNightSpeeder am 30.04.07 12:35

Ich dachte daran einfach die E-Mail als Text in eine Flash Datei zu packen den man markieren kann. Den ich denke das die Spam Bots kein Flash unterstützen und für den Benutzer gibt es ja keine Änderung den es ist alles gleich.
Nachteil: Die die kein Flash installiert haben sehen's nicht.

Pyth0n Pyth0n am 30.04.07 12:46

Aber ist es nicht zuviel Arbeit einfach ein Flashfeld zu nehmen? Dann bin ich ja schon mehr für ein simples Kontaktformular mit Capchacode drin. Und wenn man z.B. ein Foren-Script schreibt wo viele E-Mail Adressen gibt sollte man dann schon eher eine angebrachte JS oder alternative finden.

Gruß, Pyth0n :)

fish fish am 30.04.07 12:47

Quote
Original von Al3x0r
Wie viel Sinn macht es , die eMail in ASCII Zeichen im Code zu hinterlegen?

Ich habe gelesen, dass man einige Bots damit austricksen kann:

Meine Funktion dazu sieht so aus: (Bitte steiningt mich nicht, die ist mit Sicherheit total hässlich und unprofessionel aber sie funktioniert)

//--//

// Die Funktionen funzt nicht, er wandelt die Ascii-Zeichen sofort um.

hier das Ganze online...

die Möglichkeit mit JS finde ich nicht gut, denn sie schließt gleich wieder einige User aus...

nur kurz dazu:
function no_spam($mail)
{
$str = "";
$a = unpack("C*", $mail[1]);
foreach ($a as $b)
$str .= sprintf("%%%X", $b);
$mail[1] = str_replace(".", " dot ", $mail[1]);
$link = str_replace("@", " bei ", $mail[1]);

return "<a href=\"mailto:".$str."\">".$link."</a>";
}
?>

--


gibts ne möglichkeit die emailadresse mit php irgentwie zu verschlüsseln und mit js wieder zu entschlüsseln?

also zb einfach alle buchstaben durch einen anderen ersetzen und mit js das dann wieder "rückzuübersetzen"?

nuit nuit am 30.04.07 13:18

nur mal so? warum schreibt ihr die addy mit einem php script auf ein bild? dynamisch generiert? sollte ja nicht der grosse aufwand sein...und ocr ist noch lange nicht soweit....man kann es dann captcha mässig sogar noch gestalten, wenn man ganz fanatisch ist :D

edit: achso ihr wollte einen direkten link haben
na dann...eine extra datei...irgendwas: getMail.php
der dann die mail anhand von der id, bzw dem Namen rausgibt beim klick müsste doch irgendwie gehen

edit: zu dem verschlüseln ja gibt es....das geht mit base64 können beide sprachen...naja Js brauch ne funktion, aber die findet man im netz...zur not...rot13? cäsar Chiffre...einfach aber hilft für bots ;)

Michael Michael am 30.04.07 14:10

Ich finde Renes Ansatz immer noch am besten.
Gegen Flash und unleserliche Captchas habe ich einfach persönliche Abneigungen. :(

Rene Rene am 30.04.07 14:15

fish hat ja noch eine interessante Möglichkeit :)
http://www.fish.bierquartier.de/uebersicht-1-11.htm (guckst du in Quelltext).

Quote
die Möglichkeit mit JS finde ich nicht gut, denn sie schließt gleich wieder einige User aus...

schon wieder diese Leier. Wer mit deaktiviertem JS durchs Internet surft, läuft doch wie'n Verkrüppelter durchs Web.

Michael Michael am 30.04.07 14:30

Quote
Original von Rene
fish hat ja noch eine interessante Möglichkeit :)
http://www.fish.bierquartier.de/uebersicht-1-11.htm (guckst du in Quelltext).

[QUOTE]die Möglichkeit mit JS finde ich nicht gut, denn sie schließt gleich wieder einige User aus...

schon wieder diese Leier. Wer mit deaktiviertem JS durchs Internet surft, läuft doch wie'n Verkrüppelter durchs Web.[/quote]

Sehe ich auch so. Die Seite muss noch irgendwie benutzbar sein (also keine permanent zugeklappten Menus oder so ähnlich). Auf vollständige Nutzbarkeit haben solche Benutzer aber schlicht kein Anrecht ;)

Johannes am 30.04.07 15:14

Was der Fish da verwendet, ist zwar an und für sich ein guter Ansatz. Bringt aber nichts mehr. Habe das schon mal getestet.

Morit2 Morit2 am 30.04.07 15:26

ich finde die idee, das mit JS zu machen, am besten!

Franky Franky am 01.05.07 01:54

Ich hatte da mal früher etwas auf meiner Seite: http://web.archive.org/web/20060227035920/frankyonline.de/E-Mail-Adresse-verschluesseln-schnipsel5.html

<?
// (c) 2005 by Franky
// http://FrankyOnline.de/
// Dieser Vermerk darf nicht entfernt werden

function cryptmail($email, $str='', $js=false){
if(empty($str)) $str = $email;
$link = '<a href="mailto:%s">%s</a>';

// Get JS-Info from browscap.ini
$browserinfo = (array)get_browser();
if($browserinfo['javascript'] == 1 && $js == true){
// JavaScript
$string = 'document.write("'.addslashes(sprintf($link, $email, $str)).'");';
for($i=0,$encode='';$i<strlen($string);$i++) $encode .= '%'.bin2hex($string[$i]);
$return = '<script type="text/javascript">eval(unescape(\''.$encode.'\'))</script>';
}else{
// No-JavaScript
for($i=0,$nojsmail='';$i<strlen($email);$i++) $nojsmail .= '&#x'.bin2hex($email[$i]).';';
$return = sprintf($link, $nojsmail, $str);
}

return $return;
}
?>


beispiel
<?
// Standard verschl&#65533;sseln
echo cryptmail('fr@nky.ath.cx');
echo '<br />';

// Oder mit Name
echo cryptmail('fr@nky.ath.cx', 'Schick mir \'ne Mail!');
echo '<br />';

// Wenn der Browser des Users JavaScript unterst&#65533;tzt, kannst du
// auch einen JS-Code senden:
echo cryptmail('fr@nky.ath.cx', 'Schick mir \'ne Mail mit js :P', true);
echo '<br />';

// Oder mit JS und ohne Text:
echo cryptmail('fr@nky.ath.cx', '', true);
echo '<br />';
?>

TheDoom TheDoom am 08.06.07 11:10

Quote
Original von Rene
fish hat ja noch eine interessante Möglichkeit :)
http://www.fish.bierquartier.de/uebersicht-1-11.htm (guckst du in Quelltext).

[QUOTE]die Möglichkeit mit JS finde ich nicht gut, denn sie schließt gleich wieder einige User aus...

schon wieder diese Leier. Wer mit deaktiviertem JS durchs Internet surft, läuft doch wie'n Verkrüppelter durchs Web.[/quote]

$x= preg_replace('/&#([0-9]{1,3});/sie', 'chr(\\1)', $x); ^^

//edit:
huch seh grad, dass das ganz was anderes is ^^ ok in dem Fall: urldecode()

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt