Question

Lorsque vous placez des adresses électroniques sur une page Web, placez-les sous la forme d'un texte comme celui-ci:

joe.somebody@company.com

ou utilisez une astuce intelligente pour essayer de tromper les robots collecteurs d'adresses e-mail? Par exemple:

Caractères d'échappement HTML:

joe.somebody@company.com

Javascript Decrypter:

function XOR_Crypt(EmailAddress)
{
    Result = new String();
    for (var i = 0; i < EmailAddress.length; i++)
    {
        Result += String.fromCharCode(EmailAddress.charCodeAt(i) ^ 128);
    }
    document.write(Result);
}

XOR_Crypt("êïå®óïíåâïäùÀãïíðáîù®ãïí");

Décodage humain:

joe.somebodyNOSPAM@company.com

joe.somebody AT company.com

Qu'est-ce que vous utilisez ou dérangez-vous même?

Était-ce utile?

La solution

En général, je ne dérange pas. J'étais sur une liste de diffusion qui recevait plusieurs milliers de spams chaque jour. Notre filtre anti-spam (spamassassin) laisse passer 1 ou 2 par jour. Avec des filtres aussi bons, pourquoi empêcher les personnes légitimes de vous contacter?

Autres conseils

Inventez votre propre schéma de brouillage d'adresse de messagerie fou. En réalité, peu importe ce que c'est, tant que ce n'est pas trop similaire à l'une des méthodes connues.

Le problème est qu’il n’ya pas vraiment de bonne solution à cela, qu’ils soient relativement simples à contourner ou plutôt irritants pour l’utilisateur. Si une méthode devient répandue, alors quelqu'un trouvera un moyen de la contourner.

Donc, plutôt que de rechercher la technique d’obscurcissement des adresses électroniques One True, proposez la vôtre. Comptez sur le fait que ces auteurs de bots ne s’intéressent pas suffisamment à votre site pour écrire quelque chose et contourner votre texte un peu fou de rendu text-with-css-and-element ou votre cryptage javascript complètement bizarre et facile à craquer . Peu importe si c'est trivial, personne ne s'embarrassera d'essayer de le contourner simplement pour pouvoir vous spammer.

J'ai écrit un encodeur ( source ) qui utilise toutes sortes d’astuces d’analyse auxquelles je pouvais penser ( différents types d’entités HTML, codage d’URL, commentaires, attributs multilignes, traits d’union souples, structure non évidente de mailto: URL, etc.)

Cela n'arrête pas tous les pêcheurs, mais OTOH est totalement conforme aux normes et transparent pour les utilisateurs.

Une autre bonne approche à mon humble avis (que vous pouvez utiliser en plus d’un codage complexe) consiste à:

<a href="mailto:userhatestogetspam@example.com" 
   onclick="this.href=this.href.replace(/hatestogetspam/,'')">

Vous pouvez protéger votre adresse e-mail avec reCAPTCHA. Ce dernier offre un service gratuit. Les utilisateurs doivent donc entrer un test CAPTCHA (test de turing public entièrement automatisé pour indiquer à Computers and Humans Apart) de voir votre e-mail: https://www.google.com/recaptcha/admin#mailhide

Je ne voudrais pas déranger - il s'agit de la guerre du SPAM au mauvais niveau. En particulier pour les sites Web des entreprises, je pense que cela rend les choses très peu professionnelles si vous avez autre chose que le texte simple sur la page avec un hyperlien mailto.

Il y a tellement de pourriels que vous avez besoin d'un bon filtrage de toute façon, et tout bot finit par comprendre tous les trucs courants.

HTML:

<a href="#" class="--mailto--john--domain--com-- other classes goes here" />

JavaScript, à l'aide de jQuery :

// match all a-elements with "--mailto--" somehere in the class property
$("a[class*='--mailto--']").each(function ()
{
    /*
    for each of those elements use a regular expression to pull
    out the data you need to construct a valid e-mail adress
    */
    var validEmailAdress = this.className.match();

    $(this).click(function ()
    {
        window.location = validEmailAdress;
    });
});

Je ne dérange pas. Vous ne fâcherez que les utilisateurs sophistiqués et vous allez confondre les utilisateurs non-avertis. Comme d'autres l'ont dit, Gmail fournit des filtres anti-spam très efficaces pour les domaines des particuliers et des petites entreprises, et les filtres d'entreprise sont généralement très performants.

Une réponse de la mienne sur une question similaire:

  

J'utilise une combinaison très simple de CSS et de jQuery qui affiche le   adresse e-mail correctement à l'utilisateur et fonctionne également lorsque l'ancre est   cliqué:

     

HTML:

<a href="mailto:me@example.spam" 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);
});
     

Voici un exemple concret.

Le seul moyen sûr est bien sûr de ne pas mettre l'adresse électronique sur une page Web en premier lieu.

Utilisez plutôt un formulaire de contact. Mettez toutes vos adresses e-mail dans une base de données et créez un formulaire HTML (objet, corps, de ...) qui soumet le contenu de l'e-mail que l'utilisateur remplit dans le formulaire (avec un identifiant ou un nom utilisé pour recherchez l'adresse électronique de cette personne dans votre base de données) dans un script côté serveur qui envoie ensuite un courrier électronique à la personne spécifiée. A aucun moment l'adresse email n'est exposée. Vous voudrez probablement mettre en place une forme de CAPTCHA pour dissuader les spambots également.

Essayez un générateur d’icône de courrier électronique. http://services.nexodyne.com/email/

Bien sûr, il reste encore quelques robots OCR qui pourraient l’obtenir.

Je fabrique le mien WhateverDOC@w31.com, puis j'écris à côté de celui-ci "Supprimer les lettres majuscules"

.

Gmail, qui est gratuit, possède un super filtre anti-spam.

Si vous ne souhaitez pas utiliser Gmail directement, vous pouvez envoyer l'e-mail à Gmail et utiliser le transfert par Gmail pour vous le renvoyer une fois que son filtre anti-spam est passé.

Dans une situation plus complexe, lorsque vous devez afficher une adresse @ business.com, vous pouvez afficher l'adresse public@business.com et faire transférer tout ce courrier vers un compte gmail, qui le renverra ensuite à real @ business. com

Je suppose que ce n'est pas une solution directe à votre question, mais cela pourrait aider. Gmail étant libre et disposant d'un filtre anti-spam aussi performant, son utilisation est un choix judicieux à mon humble avis.

Je reçois environ 100 spams par jour sur mon compte Gmail mais je ne me souviens pas de la dernière fois où l'un d'entre eux est arrivé dans ma boîte de réception.

Pour résumer, utilisez un bon filtre anti-spam, que ce soit Gmail ou autre. Demander à l'utilisateur de ressaisir ou de modifier l'adresse e-mail affichée revient à utiliser DRM pour se protéger contre le piratage. Mettre le fardeau sur le "bon" Les gars ne devraient pas être le moyen de faire quoi que ce soit :)

Pour votre propre adresse e-mail, je vous recommande de ne pas trop vous en inquiéter. Si vous avez besoin de mettre votre adresse e-mail à la disposition de milliers d'utilisateurs, nous vous recommandons d'utiliser une adresse Gmail (vanilla ou via Google Apps) ou un filtre anti-spam de haute qualité.

Toutefois, lors de l'affichage des adresses électroniques d'autres utilisateurs sur votre site Web, je pense qu'un certain degré de diligence raisonnable est requis. Heureusement, un blogueur nommé Silvan Mühlemann a a fait tout le travail difficile pour vous . Il a testé différentes méthodes d’obscurcissement sur une période d’un an et demi et a déterminé les meilleures. La plupart d’entre elles impliquent des astuces css ou javascript qui permettent de présenter correctement l’adresse dans le navigateur, mais qui confondent les grattoirs automatisés.

Une autre technique, éventuellement unique, pourrait consister à utiliser plusieurs images et quelques lettres en texte brut pour afficher l’adresse. Cela pourrait confondre les robots.

Un script qui enregistre les adresses électroniques dans des fichiers png constituerait une solution sécurisée (si vous disposez de suffisamment d'espace et si vous êtes autorisé à intégrer des images dans votre page)

Voici ce que nous utilisons (VB.NET):

Dim rxEmailLink As New Regex("<a\b[^>]*mailto:\b[^>]*>(.*?)</a>")
Dim m As Match = rxEmailLink.Match(Html)
While m.Success
    Dim strEntireLinkOrig As String = m.Value
    Dim strEntireLink As String = strEntireLinkOrig
    strEntireLink = strEntireLink.Replace("'", """") ' replace any single quotes with double quotes to make sure the javascript is well formed
    Dim rxLink As New Regex("(<a\b[^>]*mailto:)([\w.\-_^@]*@[\w.\-_^@]*)(\b[^>]*?)>(.*?)</a>")
    Dim rxLinkMatch As Match = rxLink.Match(strEntireLink)
    Dim strReplace As String = String.Format("<script language=""JavaScript"">document.write('{0}{1}{2}>{3}</a>');</script>", _
                RandomlyChopStringJS(rxLinkMatch.Groups(1).ToString), _
                ConvertToAsciiHex(rxLinkMatch.Groups(2).ToString), _
                rxLinkMatch.Groups(3), _
                ConvertToHtmlEntites(rxLinkMatch.Groups(4).ToString))
    Result = Result.Replace(strEntireLinkOrig, strReplace)
    m = m.NextMatch()
End While

et

    Public Function RandomlyChopStringJS(ByVal s As String) As String
        Dim intChop As Integer = Int(6 * Rnd()) + 1
        Dim intCount As Integer = 0
        RandomlyChopStringJS = ""
        If Not s Is Nothing AndAlso Len(s) > 0 Then
            For Each c As Char In s.ToCharArray()
                If intCount = intChop Then
                    RandomlyChopStringJS &= "'+'"
                    intChop = Int(6 * Rnd()) + 1
                    intCount = 0
                End If
                RandomlyChopStringJS &= c
                intCount += 1
            Next
        End If
    End Function

Nous remplaçons Render et analysons le code HTML sortant avant qu'il ne parte. Cela rend les adresses e-mail qui s'affichent normalement dans un navigateur, mais qui ressemblent à ceci dans la source:

<script language="JavaScript">document.write('<a '+'clas'+'s='+'"Mail'+'Link'+'" hr'+'ef'+'="ma'+'ilto:%69%6E%66%6F%40%62%69%63%75%73%61%2E%6F%72%67">&#105;&#110;&#102;&#111;&#64;&#98;&#105;&#99;&#117;&#115;&#97;&#46;&#111;&#114;&#103;</a>');</script>

Évidemment pas infaillible, mais j'espère réduire un certain volume de récolte sans rendre les choses difficiles pour le visiteur.

Cela dépend exactement de vos besoins. Pour la plupart des sites avec lesquels je travaille, j’ai trouvé beaucoup plus utile de placer un "contact me / nous". formulaire qui envoie un courrier électronique du système à quiconque doit être contacté. Je sais que ce n’est pas exactement la solution que vous recherchez, mais elle protège complètement contre la récolte et, jusqu’à présent, je n’ai jamais vu de spam envoyé via un formulaire de ce type. Cela arrivera mais c'est très rare et vous ne serez jamais récolté.

Cela vous donne également la possibilité de consigner les messages avant de les envoyer, vous offrant ainsi un niveau supplémentaire de protection contre la perte d'un contact, si vous le souhaitez.

Les robots de spam auront leurs propres moteurs Javascript et CSS au fil du temps, je pense donc que vous ne devriez pas regarder dans cette direction.

Option 1: divisez l'adresse électronique en plusieurs parties et créez un tableau en JavaScript à partir de ces parties. Ensuite, associez ces parties dans le bon ordre et utilisez la propriété .innerHTML pour ajouter l’adresse électronique à 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 du 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 " . "

i.e:

 info(AT)XXXabc(DOT)com 

Je viens de coder ce qui suit. Je ne sais pas si c'est bien, mais c'est mieux que d'écrire simplement l'email en texte brut. De nombreux robots seront dupes mais pas tous.

<script type="text/javascript">
    $(function () {
        setTimeout(function () {
            var m = ['com', '.', 'domain', '@', 'info', ':', 'mailto'].reverse().join('');

            /* Set the contact email url for each "contact us" links.*/
            $('.contactUsLink').prop("href", m);
        }, 200);
    });
</script>

Si le robot résout ce problème, il n'est pas nécessaire d'ajouter davantage de "logique simple". code comme "si (1 == 1? '@': '')" ou en ajoutant les éléments du tableau dans un autre ordre puisque le robot n'évalue quand même le code.

Font-awesome fonctionne!

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

<p>myemail<i class="fa fa-at" aria-hidden="true"></i>mydomain.com</p>

http://fontawesome.io/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top