web-dev-qa-db-fra.com

Méthode efficace pour masquer les courriers électroniques des robots collecteurs de spam

Sur ma page d'accueil, j'utilise cette méthode pour cacher mon courrier électronique aux robots collecteurs de spam:

<a href="admin [at] example.com"
   rel="nofollow"
   onclick="this.href='mailto:' + 'admin' + '@' + 'example.com'">Contact me</a>

Qu'est-ce que tu en penses? Est-ce efficace? Quelles autres méthodes connaissez-vous ou utilisez-vous?

180
abatishchev

C’est la méthode que j’ai utilisée, avec une inclusion côté serveur, par exemple. <!--#include file="emailObfuscator.include" -->emailObfuscator.include contient les éléments suivants:

<!-- // http://lists.evolt.org/archive/Week-of-Mon-20040202/154813.html -->
<script type="text/javascript">
    function gen_mail_to_link(lhs,rhs,subject) {
        document.write("<a href=\"mailto");
        document.write(":" + lhs + "@");
        document.write(rhs + "?subject=" + subject + "\">" + lhs + "@" + rhs + "<\/a>");
    }
</script>

Pour inclure une adresse, j'utilise JavaScript:

<script type="text/javascript"> 
    gen_mail_to_link('john.doe','example.com','Feedback about your site...');
</script>
<noscript>
  <em>Email address protected by JavaScript. Activate JavaScript to see the email.</em>
</noscript>

Étant donné que je reçois des courriels via Gmail depuis 2005, le spam n'est pratiquement pas un problème. Donc, je ne peux pas parler de l'efficacité de cette méthode. Vous voudrez peut-être lire cette étude (bien que ce soit vieux) qui a produit ce graphique:

enter image description here

95
Fuhrmanator

Jetez un oeil à de cette façon , assez intelligent et utilisant les CSS.

CSS

span.reverse {
  unicode-bidi: bidi-override;
  direction: rtl;
}

HTML

<span class="reverse">moc.rehtrebttam@retsambew</span>

Le CSS ci-dessus remplacera alors le sens de la lecture et présentera le texte à l'utilisateur dans le bon ordre.

J'espère que ça aide

À votre santé

83
roundcrisis

Travailler avec le contenu et attr en CSS:

.cryptedmail:after {
  content: attr(data-name) "@" attr(data-domain) "." attr(data-tld); 
}
<a href="#" class="cryptedmail"
   data-name="info"
   data-domain="example"
   data-tld="org"
   onclick="window.location.href = 'mailto:' + this.dataset.name + '@' + this.dataset.domain + '.' + this.dataset.tld; return false;"></a>

Lorsque javascript est désactivé, seul l'événement click ne fonctionnera pas, le courrier électronique est toujours affiché.

Une autre approche intéressante (du moins sans clic) serait d'utiliser le repère de droite à gauche pour remplacer le sens d'écriture. plus à ce sujet: https://en.wikipedia.org/wiki/Right-to-left_mark

80
cyptus

J'ai une vision complètement différente de cela. J'utilise MailHide pour cela.

MailHide est un système de Google dans lequel l'utilisateur doit effectuer un test reCAPTCHA pour ensuite lui révéler le courrier électronique.

52
tvanfosson

Ce n'est pas mon idée à l'origine mais je ne trouve pas l'auteur:

<a href="mailto:[email protected]"
    onmouseover="this.href=this.href.replace(/x/g,'');">link</a>

Ajoutez autant de x que vous le souhaitez. Cela fonctionne parfaitement pour lire, copier et coller, et ne peut pas être lu par un bot.

48
Andrew Swift

Je pense que la seule méthode infaillible que vous puissiez utiliser est de créer une page Contactez-moi qui est un formulaire qui est soumis à un script qui l'envoie à votre adresse électronique. De cette façon, votre adresse n'est jamais exposée au public. Cela peut être indésirable pour une raison quelconque, mais je pense que c'est une très bonne solution. Cela m'agace souvent lorsque je suis obligé de copier/coller l'adresse électronique d'une personne de son site sur mon client de messagerie et de lui envoyer un message; Je préfère le faire directement à travers un formulaire sur leur site. En outre, cette approche vous permet de recevoir des commentaires anonymes, etc. Assurez-vous simplement de protéger votre formulaire à l'aide d'une sorte de système anti-bot, tel qu'un captcha. Il y en a beaucoup qui sont discutés ici sur SO.

16
rmeador

Voir Protéger les adresses électroniques des robots sur une page Web?

J'aime la façon dont Facebook et les autres rendent une image de votre adresse e-mail.

J'ai également utilisé The Enkoder dans le passé - j'ai trouvé très bon d'être honnête!

15
Galwegian

Je sais que ma réponse ne plaira pas à beaucoup de personnes, mais veuillez considérer les points décrits ici avant de vous laisser aller.

Tout ce qui est facilement lisible par une machine le sera facilement par les spammeurs. Même si leurs actions nous semblent stupides, ce ne sont pas des gens stupides. Ils sont novateurs et ingénieux. Ils n'utilisent pas seulement des robots pour collecter des e-mails, ils disposent d'une pléthore de méthodes et paient pour de bonnes listes fraîches d'e-mails. Cela signifie qu'ils ont eu des milliers de pirates informatiques à chapeau noir dans le monde entier pour exécuter leurs tâches. Les personnes prêtes à coder des programmes malveillants qui grattent les écrans des navigateurs d'autres personnes, ce qui rend finalement toute méthode que vous tentez de réaliser inutile. Ce fil a déjà été lu par plus de 10 personnes et elles se moquent de nous. Certains d'entre eux peuvent même s'ennuyer aux larmes pour se rendre compte que nous ne pouvons pas leur lancer un nouveau défi.

Gardez à l'esprit que vous n'essayez pas finalement de gagner du temps, mais du temps des autres. Pour cette raison, envisagez de passer plus de temps ici. Il n'y a pas de solution miracle facile à exécuter qui fonctionnerait. Si vous travaillez dans une entreprise qui publie des courriers électroniques de 100 personnes sur le site et que vous pouvez réduire un courrier indésirable par jour et par personne, nous parlons d'environ 36 500 courriers indésirables par an. Si la suppression d'un tel courrier électronique prend 5 secondes en moyenne, on parle d'environ 50 heures de travail par an. Sans parler de la quantité réduite de contrariété. Alors, pourquoi ne pas passer quelques heures à cela?

Ce n’est pas seulement vous et les destinataires du courrier électronique qui considèrent le temps comme un atout. Par conséquent, vous devez trouver un moyen d’obscurcir les adresses de messagerie de sorte qu’il ne soit pas rentable de les déchiffrer. Si vous utilisez une méthode largement utilisée pour masquer les courriers électroniques, il est vraiment rentable de les résoudre. En conséquence, le pirate mettra la main sur des milliers, voire des dizaines, voire des centaines de milliers de nouveaux courriels. Et pour eux, ils vont avoir de l'argent.

Alors, allez-y et codez votre propre méthode. Il s'agit d'un cas rare où réinventer la roue est vraiment rentable. Utilisez une méthode qui n'est pas lisible par une machine et qui nécessitera de préférence une interaction de l'utilisateur sans sacrifier l'expérience utilisateur.

J'ai passé environ 20 minutes à coder un exemple de ce que je veux dire. Dans l'exemple, j'ai utilisé KnockoutJS simplement parce que je l'aime bien et je sais que vous ne l'utiliserez probablement pas vous-même. Mais ce n'est pas pertinent de toute façon. C'est une solution personnalisée qui n'est pas largement utilisée. Cracking it ne sera pas une récompense pour le faire car la méthode pour le faire ne fonctionnerait que sur une seule page dans le vaste Internet.

Voici le violon: http://jsfiddle.net/hzaw6/

Le code ci-dessous n'est pas censé être un exemple de bon code. Mais juste un échantillon rapide de code qui est très difficile pour la machine à comprendre que nous gérons même les courriels ici. Et même si cela pouvait être fait, exécuter à grande échelle ne serait pas rentable.

Et oui, je sais que cela ne fonctionne pas sur IE = lte8 à cause de 'Impossible d'obtenir la propriété' attributs 'de référence non définie ou nulle' mais je m'en fiche simplement parce que c'est juste une démo de méthode, pas la mise en œuvre réelle, et non destiné à être utilisé sur la production telle quelle. N'hésitez pas à coder votre propre qui est plus cool, techniquement plus solide, etc.

Oh, et ne nommez jamais quelque chose de courrier électronique ou de courrier électronique en HTML ou en javascript. Il est beaucoup trop facile de gratter le DOM et l'objet window pour tout ce qui est nommé mail ou email et de vérifier s'il contient quelque chose qui correspond à un e-mail. C’est la raison pour laquelle vous ne souhaitez pas que des variables contiennent des courriers électroniques dans sa forme complète. C’est aussi la raison pour laquelle vous souhaitez que l’utilisateur interagisse avec la page avant d’attribuer de telles variables. Si votre modèle d'objet javascript contient des adresses électroniques à l'état prêt pour le DOM, vous les exposez aux spammeurs.

Le HTML:

<div data-bind="foreach: contacts">
    <div class="contact">
        <div>
            <h5 data-bind="text: firstName + ' ' + lastName + ' / ' + department"></h5>
            <ul>
                <li>Phone: <span data-bind="text: phone"></span></li>
                <li><a href="#999" data-bind="click:$root.reveal">E-mail</a> <span data-bind="visible: $root.msgMeToThis() != ''"><input class="merged" data-bind="value: mPrefix" readonly="readonly" /><span data-bind="text: '@' + domain"></span></span></li>
            </ul>
        </div>
    </div>
</div>

Le JS

function ViewModel(){
    var self = this;

    self.contacts = ko.observableArray([
        { firstName:'John', mPrefix: 'john.doe', domain: 'domain.com', lastName: 'Doe', department: 'Sales', phone: '+358 12 345 6789' },
        { firstName:'Joe', mPrefix: 'joe.w', domain: 'wonder.com', lastName: 'Wonder', department: 'Time wasting', phone: '+358 98 765 4321' },
        { firstName:'Mike', mPrefix: 'yo', domain: 'rappin.com', lastName: 'Rophone', department: 'Audio', phone: '+358 11 222 3333' }
    ]);
    self.msgMeToThis = ko.observable('');
    self.reveal = function(m, e){
        var name = e.target.attributes.href.value;
        name = name.replace('#', '');
        self.msgMeToThis(name);
    };
}
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
10
Jani Hyytiäinen

Si vous avez un support php, vous pouvez faire quelque chose comme ceci:

<img src="scriptname.php">

Et le scriptname.php:

<?php
header("Content-type: image/png");
// Your email address which will be shown in the image
$email    =    "[email protected]";
$length    =    (strlen($email)*8);
$im = @ImageCreate ($length, 20)
     or die ("Kann keinen neuen Gd-Bild-Stream erzeugen");
$background_color = ImageColorAllocate ($im, 255, 255, 255); // White: 255,255,255
$text_color = ImageColorAllocate ($im, 55, 103, 122);
imagestring($im, 3,5,2,$email, $text_color);
imagepng ($im);
?>
10
Matias

Vous pouvez essayer de cacher des caractères en utilisant entités HTML en hexa (ex: & # x40 pour @). C'est une solution pratique, car un navigateur correct le traduira et vous pouvez avoir un lien normal. L'inconvénient est qu'un bot peut le traduire théoriquement, mais c'est un peu inhabituel. J'utilise ceci pour protéger mon courrier électronique sur mon blog.

Une autre solution consiste à tiliser javascript pour assembler une partie de l'adresse et décoder l'adresse à la volée. L'inconvénient est qu'un navigateur désactivé par javascript n'affichera pas votre adresse.

La solution la plus efficace consiste à utiliser tiliser une image, mais l'utilisateur éprouve de la difficulté à copier l'adresse à la main.

Votre solution est assez bonne, car vous ajoutez uniquement un inconvénient (écrire manuellement le @) uniquement pour les utilisateurs dont le javascript est désactivé. Vous pouvez également être plus en sécurité avec:

onclick="this.href='mailto:' + 'admin' + '&#x40;' + 'domain.com'"
7
ofaurax

Une de mes méthodes préférées est de masquer l'adresse e-mail à l'aide de php. Un exemple classique consiste à convertir les caractères en valeurs HEX comme suit:

function myobfiscate($emailaddress){
 $email= $emailaddress;                
 $length = strlen($email);                         
 for ($i = 0; $i < $length; $i++){                
 $obfuscatedEmail .= "&#" . ord($email[$i]).";";
 }
 echo $obfuscatedEmail;
}

Et ensuite, dans mon balisage, je l'appellerai simplement comme suit:

<a href="mailto:<?php echo myobfiscate('[email protected]')" title="Email me!"><?php echo myobfiscate('[email protected]');</a>

Ensuite, examinez votre source, vous serez agréablement surpris!

7
SimonDowdles

Les spambots ne vont pas interpréter cela, car c'est une méthode moins connue :)

Premièrement, définissez le css:

email:before {
    content: "admin";
}

email:after {
    content: "@example.com";
}

Maintenant, où que vous souhaitiez afficher votre courrier électronique, insérez simplement le code HTML suivant:

<div id="email"></div>

Et tada!

5
Aaron Esau

J'utilise une combinaison très simple de CSS et de jQuery, qui affiche l'adresse électronique correctement à l'utilisateur et fonctionne également lorsque l'utilisateur clique ou survole l'ancre:

HTML:

<a href="mailto:[email protected]" id="lnkMail">moc.elpmaxe@em</a>

CSS:

#lnkMail {
    unicode-bidi: bidi-override;
    direction: rtl;
}

jQuery:

$('#lnkMail').hover(function(){
    // here you can use whatever replace you want
    var newHref = $(this).attr('href').replace('spam', 'com');
    $(this).attr('href', newHref);
});

Ici est un exemple de travail.

4
Sergiu

! - En ajoutant ceci pour référence, vous ne savez pas à quel point les informations peuvent être obsolètes, mais cela évoque quelques solutions simples qui ne nécessitent pas l'utilisation de scripts

Après avoir recherché cela moi-même, je suis tombé sur cette page, mais aussi sur ces pages:

http://nadeausoftware.com/articles/2007/05/stop_spammer_email_harvesters_obfuscating_email_addresses

essayez de renverser l'adresse email

Exemple de code HTML brut:

<bdo dir="rtl">moc.elpmaxe@nosrep</bdo>
Result : [email protected]

Le même effet en utilisant CSS

CSS:
.reverse { unicode-bidi:bidi-override; direction:rtl; }
HTML:
<span class="reverse">moc.elpmaxe@nosrep</span>
Result : [email protected]

Combiner cela avec l’une des méthodes mentionnées précédemment peut même le rendre plus efficace

3
Johann de Vries

Une solution simple consiste à utiliser des entités HTML à la place des caractères réels. Par exemple, "[email protected]" sera converti en:

<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#109;&#101;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">email me</A>
3
Romain Linsolas

Voici ma version de travail:


Créez quelque part un conteneur avec un texte de secours:

<div id="knock_knock">Activate JavaScript, please.</div>

Et ajoutez au bas du DOM (le rendu) l'extrait suivant:

<script>
  (function(d,id,lhs,rhs){
    d.getElementById(id).innerHTML = "<a rel=\"nofollow\" href=\"mailto"+":"+lhs+"@"+rhs+"\">"+"Mail"+"<\/a>";
  })(window.document, "knock_knock", "your.name", "example.com");
</script>

Il ajoute le lien hypertexte généré au conteneur spécifié:

<div id="knock_knock"><a rel="nofollow" href="[email protected]">Mail</a></div>

De plus, voici une version simplifiée:

<script>(function(d,i,l,r){d.getElementById(i).innerHTML="<a rel=\"nofollow\" href=\"mailto"+":"+l+"@"+r+"\">"+"Mail"+"<\/a>";})(window.document,"knock_knock","your.name","example.com");</script>
3
Darius M.

La meilleure méthode pour cacher des adresses e-mail n’est valable que lorsque le programmeur découvrira ce "codage" et implémentera un algorithme de déchiffrement.

L'option JavaScript ne fonctionnera pas longtemps, car de nombreux robots interprètent JavaScript.

Il n'y a pas de réponse, à mon humble avis.

2
guerda

Il y a probablement des robots qui reconnaissent le [at] et d'autres déguisements sous le symbole @. Donc, ce n'est pas une méthode vraiment efficace.

Bien sûr, vous pouvez utiliser certains codages tels que le codage d’URL ou les références de caractères HTML (ou les deux):

// PHP example
// encodes every character using URL encoding (%hh)
function foo($str) {
    $retVal = '';
    $length = strlen($str);
    for ($i=0; $i<$length; $i++) $retVal.=sprintf('%%%X', ord($str[$i]));
    return $retVal;
}
// encodes every character into HTML character references (&#xhh;)
function bar($str) {
    $retVal = '';
    $length = strlen($str);
    for ($i=0; $i<$length; $i++) $retVal.=sprintf('&#x%X;', ord($str[$i]));
    return $retVal;
}

$email = '[email protected]';
echo '<a href="'.bar('mailto:?to=' . foo(','.$email.'')).'">mail me</a>';

// output
// <a href="&#x6D;&#x61;&#x69;&#x6C;&#x74;&#x6F;&#x3A;&#x3F;&#x74;&#x6F;&#x3D;&#x25;&#x32;&#x43;&#x25;&#x37;&#x35;&#x25;&#x37;&#x33;&#x25;&#x36;&#x35;&#x25;&#x37;&#x32;&#x25;&#x34;&#x30;&#x25;&#x36;&#x35;&#x25;&#x37;&#x38;&#x25;&#x36;&#x31;&#x25;&#x36;&#x44;&#x25;&#x37;&#x30;&#x25;&#x36;&#x43;&#x25;&#x36;&#x35;&#x25;&#x32;&#x45;&#x25;&#x36;&#x33;&#x25;&#x36;&#x46;&#x25;&#x36;&#x44;">mail me</a>

Mais comme il est légal de les utiliser, chaque navigateur/client de messagerie doit également gérer ces encodages.

2
Gumbo

Je suis fan de SpamSpan - il est obscurci, mais déchiffrable si JS est désactivé. Cela semble fonctionner aussi, bien que je ne l'utilise que depuis environ un an sur un site Web à faible trafic.

Il existe également un module permettant à Drupal de transformer automatiquement les e-mails en SpamSpans, si vous en avez besoin.

2
Roman Starkov

Et ma fonction. Je l'ai créé en regardant les réponses placées dans ce sujet.

 function antiboteEmail($email)
 {
        $html = '';

        $email = strrev($email);
        $randId = Rand(1, 500);

        $html .= '<span id="addr-'.$randId.'" class="addr">[turn javascript on to see the e-mail]</span>';
        $html .= <<<EOD
                <script>
                $(document).ready(function(){

                    var addr = "$email";
                    addr = addr.split("").reverse().join("");
                    $("#addr-$randId").html("<a href=\"mailto:" + addr + "\">" + addr + " </a>");
                });
                </script>
EOD;

        return $html;
    }

Il utilise deux méthodes: de droite à gauche et de javascript.

1
webrama.pl

Une autre option, je perefer polices icônes génial

Mise en œuvre de la Loi:

<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">

Adresse mail:

<a href="mailto:[email protected]"><span class="label">info<i class="fa fa-at"></i>uploadimage.club</span></a>
1
Project Mayhem

Premièrement, je m'assurerais que l'adresse électronique ne s'affiche que lorsque le javascript est activé. De cette façon, il n'y a pas de texte brut qui puisse être lu sans JavaScript.

Deuxièmement, une façon de mettre en œuvre une fonctionnalité sûre consiste à rester à l’écart de la balise <button>. Cette balise nécessite un texte inséré entre les balises, ce qui la rend lisible par ordinateur. Essayez plutôt le <input type="button"> avec un gestionnaire javascript pour un onClick. Utilisez ensuite toutes les techniques mentionnées par d’autres pour implémenter une notation de courrier électronique sécurisée.

Une autre option est d'avoir un bouton avec "Cliquez pour voir l'adresse email". Une fois cliqué, cela se transforme en un email codé (les caractères en codes HTML). Sur un autre clic, cela redirige vers la fonction 'mailto: email'

Une version non codée de la dernière idée, avec des adresses électroniques sélectionnables et non sélectionnables:

<html>
<body>
<script type="text/javascript">
      e1="@domain";
      e2="me";
      e3=".extension";
email_link="mailto:"+e2+e1+e3;
</script>
<input type="text" onClick="this.onClick=window.open(email_link);" value="Click for mail"/>
<input type="text" onClick="this.value=email;" value="Click for mail-address"/>
<input type="button" onClick="this.onClick=window.open(email_link);" value="Click for mail"/>
<input type="button" onClick="this.value=email;" value="Click for mail-address"/>
</body></html>

Voyez si c'est quelque chose que vous voulez et combinez-le avec les idées des autres. Vous ne pouvez jamais être trop sûr.

1
xaddict

qu'en est-il de HTML_CHARACTER ?:

joe&#064;mail.com

les sorties

[email protected]
1
T.Todua

Est-ce que ça marche si je fais un clic droit sur le lien et choisissez "copier l'URL"? Sinon, ce n'est vraiment pas une situation idéale (je clique rarement sur un lien mailto, préférant copier l'adresse e-mail et la coller dans mon application de messagerie ou partout où j'en ai besoin à un moment donné).

J'avais l'habitude d'être assez paranoïaque en protégeant mon adresse de messagerie en ligne (UseNet, Web, etc.), mais je soupçonne aujourd'hui qu'un plus grand nombre de "cibles possibles pour le spam" sont en fait générées en faisant correspondre les parties locales aux domaines par programme. Je pars du principe que j’ai parfois consulté les journaux de mon serveur de messagerie. Il y a souvent de nombreuses tentatives d'acheminement vers des adresses inexistantes (y compris des versions tronquées de spam-bait que j'ai balancées sur UseNet à la fin des années 90, à une époque où la suppression d'adresses était très répandue).

1
Vatine

Je n'aime pas que JavaScript et HTML soient mélangés, c'est pourquoi j'utilise cette solution. Cela fonctionne bien pour moi, pour le moment.

Idée : vous pouvez compliquer les choses en fournissant des informations chiffrées dans les attributs data- et en les déchiffrant dans le JS. Cela se fait simplement en remplaçant les lettres ou simplement en les inversant.

HTML:

<span class="generate-email" data-part1="john" data-part2="gmail" data-part3="com">placeholder</span>

JS:

$(function() {
    $('.generate-email').each(function() {
        var that = $(this);
        that.html(
            that.data('part1') + '@' + that.data('part2') + '.' + that.data('part3')
        );
    });  
});

Essayez-le: http://jsfiddle.net/x6g9L817/

1
Mr. B.

Option 1: divisez l'adresse électronique en plusieurs parties et créez un tableau en JavaScript à partir de ces parties. Ensuite, associez ces pièces dans le bon ordre et utilisez la propriété .innerHTML pour ajouter l'adresse de messagerie à la page Web.

 <span id="email">  </span>   // blank tag

 <script>
 var parts = ["info", "XXXXabc", "com", "&#46;", "&#64;"];
 var email = parts[0] + parts[4] + parts[1] + parts[3] + parts[2];
 document.getElementById("email").innerHTML=email; 
 </script>

Option 2: Utiliser l'image au lieu du texte de l'e-mail

Site Web créateur d’images à partir du texte: http://www.chxo.com/labelgen/

Option 3: Nous pouvons utiliser AT au lieu de "@" et DOT au lieu de "."

c'est à dire :

 info(AT)XXXabc(DOT)com 
1
saun4frsh

après avoir utilisé tant de techniques, j’ai trouvé un moyen simple et très convivial, les bots recherchent @ Símbolo et récemment, ils recherchent [au] ant une variation, j’utilise donc 2 techniques

  1. j'écris mon email sur une image comme celle utilisée par domaintolls et cela fonctionne parfaitement ou
  2. remplacer le Símbolo (@) par une image semblable à

@ replace et l'image alt sera alt = "@" pour que le bot trouve une image et tout humain la verra comme une adresse normale; donc, s'il la copie, il copie l'email et le travail est donné, le code sera donc

<p>myname<img src="http://www.traidnt.net/vb/images/mail2.gif" width="11" height="9" alt="@" />domain.com</p>

Il existe un script de licence ouvert PHP qui génère du javascript qui code le courrier: http://www.maurits.vdschee.nl/php_hide_email/ . Vous pouvez alors facilement appeler la fonction php avec le courrier spécifique comme argument.

1
Fanky

Je dois juste fournir une autre réponse. Je viens de trouver quelque chose d'amusant pour jouer avec.

J'ai découvert que dans de nombreuses tables de caractères communes, les lettres @ et a-z réapparaissent plus d'une fois. Vous pouvez mapper les caractères originaux sur les nouveaux mappages et rendre plus difficile pour les robots de spam de savoir en quoi consiste le courrier électronique.

Si vous parcourez la chaîne et obtenez le code de caractère d'une lettre, ajoutez-y 65248 et créez une entité html basée sur le nombre, vous obtenez une adresse électronique lisible par l'homme.

var str = '[email protected]';
str = str.toLowerCase().replace(/[\.@a-z]/gi, function(match, position, str){
    var num = str.charCodeAt(position);
    return ('&#' + (num + 65248) + ';');
});

Voici un violon qui fonctionne: http://jsfiddle.net/EhtSC/8/

Vous pouvez améliorer cette approche en créant un ensemble plus complet de mappages entre des caractères identiques. Mais si vous copiez/collez le courrier électronique dans le bloc-notes, par exemple, vous obtenez beaucoup de boîtes.

Pour résoudre certains problèmes d’expérience utilisateur, j’ai créé l’e-mail en tant que lien. Lorsque vous cliquez dessus, les caractères sont remappés sur leurs originaux.

Pour améliorer cela, vous pouvez créer des mappages de caractères plus complexes si vous le souhaitez. Si vous pouvez trouver plusieurs caractères pouvant être utilisés, par exemple, à la place de "a", pourquoi ne pas les mapper de manière aléatoire.

Ce n’est probablement pas l’approche la plus sûre de tous les temps, mais j’ai vraiment eu du plaisir à jouer avec: D

0
Jani Hyytiäinen

C'est probablement le meilleur et le plus simple des protecteurs de messagerie sur Internet. Très simple, il a cependant la possibilité d’ajouter toutes les cloches et les sifflets.

Protection du courrier électronique sur les pages Web

Utilise JavaScript. Je l'utilise avec succès depuis des années.

0
ITI

J'aime mieux la réponse de ofaurax mais je voudrais modifier ceci pour un email un peu plus caché:

onclick="p1='admin'; p2='domain.com'; this.href='mailto:' + p1 + '& #x40;' + p2"
0
Donny

Voici une solution simple jQuery à ce problème:

<script type="text/javascript">
$(document).ready(function() {
    str1="mailto:";
    str2="info";
    str3="@test.com";
    $("#email_a").attr("href", str1+str2+str3);

});
</script>

<a href="#" id="email_a"><img src="sample.png"/></a>
0
Haluk