web-dev-qa-db-fra.com

Façon de répertorier l'adresse électronique "Contactez-nous" sur le site Web, tout en réduisant le risque de spam?

Quel est le bon moyen de répertorier une adresse électronique "Contactez-nous" sur un site Web, tout en réduisant les risques de spams?

Est-ce que mettre l'adresse électronique dans une image est la meilleure technique, ou y en a-t-il d'autres?

70
Chris W. Rea

Tous les formulaires de contact sont transmis via un compte Gmail jetable, qui transfère le courrier à l'adresse de messagerie réelle. C'est gratuit, c'est facile, et la détection de spam de Gmail est excellente.

Cela ne nécessite aucun effort supplémentaire lors de la création du site Web. Si quelque chose vous traverse, connectez-vous simplement au compte Gmail et signalez-le comme spam.

Vous pouvez ensuite configurer la boîte de réception Gmail pour archiver automatiquement tout ce qui a été transféré, ou même le supprimer si vous ne souhaitez pas que cette copie supplémentaire y soit conservée.

54
Callan

Utilisez un obfuscator email

30
Jason

Ma non-réponse est de ne pas le faire. Les systèmes de messagerie modernes, tels que GMail et le dispositif anti-spam Barracuda, font un excellent travail de filtrage du spam. Toute barrière que vous mettez entre vous et vos visiteurs signifie un niveau d'engagement moindre et, selon le type de site, une perte potentielle de ventes.

Si vous vous inquiétez des utilisateurs sur lesquels le client de messagerie natif n'est pas installé ou sur lesquels le gestionnaire mailto:: n'est pas configuré correctement, ouvrez une page Contactez-nous avec à la fois l'adresse électronique liée et un formulaire (sans CAPTCHA) et laissez l'utilisateur choisir.

Le spam est agaçant, mais c’est notre fardeau à supporter, pas nos utilisateurs.

20
JasonBirch

Utilisez un langage naturel pour épeler l'adresse e-mail ...

Ex:

thatguy at gmail dot com

Vous seriez surpris de voir à quel point il est difficile d'écrire un bot capable de différencier le langage naturel par rapport à l'écriture d'un bot qui recherche simplement le signe @ et qui regex une adresse normale.

Ce n'est pas sûr à 100%, mais ce n'est pas pire que l'obscurcissement et cela ne va pas aliéner vos utilisateurs malvoyants et/ou ceux dont JavaScript est désactivé.

Mise à jour: Voici un exemple de cette technique en action .

Mise à jour 2:

Il se trouve que quelqu'un a effectivement effectué des recherches à ce sujet et l'a posté en ligne. Voir le message du superutilisateur décrivant les résultats ou l'article d'origine

18
Evan Plaice

Personnellement, je n’affiche pas d’adresses électroniques sur des sites, mais j’ai un formulaire de contact facile à utiliser et accessible, ainsi qu’une indication de l’origine de l’email; permettre aux utilisateurs d'envoyer des courriels aux propriétaires et aux exploitants du site, sans exposer les adresses e-mail, ni avoir à parcourir différentes étapes de JavaScript, etc.

C'est souvent la meilleure solution si votre filtrage de courrier indésirable n'est pas aussi sophistiqué.

12
Zhaph - Ben Duguid

utilisez css pour cacher du bruit dans le texte réel (juste en une ligne, je l’ai formaté pour mieux illustrer la technique):

u<span class="spam">noise</span>ser
@<span class="spam">noise</span>
example<span class="spam">noise</span>
.com

puis utilisez ce petit extrait css:

.spam { display: none; }

si vous avez besoin d'un contenu valide mailto:, vous devez le créer via jscript dans le dom, voir quelques-unes des autres réponses à cette question. mais je ne suis pas un grand ami de cela.

9
akira

Ce que je fais est d'écrire l'adresse électronique sous forme de mots, entourée d'une balise span: <span class="email">joe dot blow at gmail dot com</span>. Ensuite, un script au niveau de la page s'exécute, récupérant de telles étendues et les remplaçant par un lien de courrier électronique construit. Ce n'est peut-être pas trop obscur, mais je ne me suis pas plaint. De plus, si JavaScript est désactivé, l'utilisateur peut toujours lire le texte d'étendue réelle.

8
Grant Palin

La meilleure solution: tilisez un filtre anti-spam.

En fait, j'utilise Gmail pour gérer mon compte de messagerie POP3 pour mon entreprise, car il est beaucoup plus facile de consulter ses courriels sur différents ordinateurs. Les filtres anti-spam de Gmail sont les meilleurs au monde.

Ainsi, vous pouvez simplement afficher [email protected] comme adresse électronique et oublier le spam.

8
DisgruntledGoat

en utilisant un encodage HTML comme &#649&#7854&#7575, le navigateur le rendra comme "abc"

7
ilhan

Un bon moyen, bien que pas parfait, est de créer l'adresse e-mail via javascript. La plupart des araignées à la recherche d'e-mails n'exécutent pas javascript et ne trouvent donc pas d'adresse e-mail lisible.

Ici n'est qu'un exemple de la façon dont cela pourrait être fait.

5
txwikinger

Utilisez une bibliothèque graphique (telle que Gd qui est prise en charge par PHP ou similaire) pour créer de manière dynamique des images .png contenant les adresses électroniques.

Par rapport à mon autre réponse cette solution est moins gênante pour les utilisateurs (mais pas transparente; ils ne peuvent pas la copier-coller mais doivent la ressaisir à partir de zéro) mais est aussi moins sécurisée: un ordinateur peut potentiellement lire l'image non assombrie.

Mais dans l'ensemble, je pense que c'est un bon compromis. cela arrêtera la grande majorité des robots de spam.

5
Thomas Bonini

J'utilise un simple script Python pour convertir l'adresse électronique en un lien mailto où l'adresse électronique est une entité HTML codée. Ceci est complètement transparent pour l'utilisateur, mais semble masquer le contenu de manière à vaincre les robots de récolte les plus simples.

#! /usr/bin/env python3.0

def entity_encode(text):
    out = ""
    ba = text.encode()
    for i in range(len(ba)):
        out = out + "&#x{0:02x};".format (ba[i])
    return out

def print_email_link(address) :
        print('<!-- {0} -->'.format(address))
        print('<a href="{0}{1}">{1}</a>'.format(entity_encode("mailto:"), entity_encode(address)))


print_email_link("[email protected]")

Cela donne la sortie

<!-- [email protected] -->
<a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#x74;&#x65;&#x73;&#x74;&#x31;&#x32;&#x33;&#x40;&#x65;&#x78;&#x61;&#x6d;&#x70;&#x6c;&#x65;&#x2e;&#x63;&#x6f;&#x6d;">&#x74;&#x65;&#x73;&#x74;&#x31;&#x32;&#x33;&#x40;&#x65;&#x78;&#x61;&#x6d;&#x70;&#x6c;&#x65;&#x2e;&#x63;&#x6f;&#x6d;</a>

Lorsque le résultat est collé dans une page Web, le navigateur affiche le texte "[email protected]" sous la forme d'une hyperligne en "mailto: [email protected]". Il est donc aussi pratique pour l'utilisateur final que d'inclure l'adresse. en clair. Mais cela semble vaincre beaucoup de bots récoltants.

Bien entendu, je supprime le commentaire avec la version simple ASCII de l'adresse une fois que j'ai collé le lien de messagerie masqué à l'emplacement approprié dans la source HTML de la page Web.

5
Stephen C. Steel

Demandez à l'utilisateur de résoudre un CAPTCHA avant de lui montrer l'adresse email (ou si vous avez un formulaire de contact, avant de laisser l'utilisateur le soumettre).

C'est le plus énervant pour les utilisateurs mais certainement le plus efficace.

4
Thomas Bonini

Je suis un fan d'obfuscation, où l'adresse email est essentiellement rendue avec Javascript.

Par exemple, [email protected] pourrait être rendu sous la forme

<a href="javascript:location='mailto:\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d';void 0">
<script type="text/javascript">document.write('\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d')</script></a>

En ce qui concerne l'utilisateur, il s'agit d'un texte normal pouvant être copié et collé. Les robots d’autre part auront plus de difficultés avec cela.

Voici le obfuscator j'ai utilisé.

3
Paperjam

Une manière:

_  <script language="javascript"> 
  <!--
  var name = "user"
  var Host1 = "gm"
  var Host2 = "ail.com"
  var addr =
  document.write("<a href=mai" + "lto:" + 
    name + "&#64;" + Host1 + Host2 +
    ">" + name + "&#64;" + Host1 + Host2 + "</a>")
  //-->
 </script> 
_

Vous pouvez écrire "Déchiffrer mon courrier électronique: utilisateur sur com dot gmail" dans les balises <noscript> pour ceux dont le javascript est désactivé. De cette façon, vous obtenez la fonctionnalité de lien hypertexte. Vous avez de bonnes chances de garder les spammeurs à l'écart de votre adresse et les personnes dont le javascript est désactivé ou les navigateurs avec texte uniquement peuvent toujours obtenir votre adresse e-mail.

2
Adam

Toutes les techniques d’obscurcissement dans le monde ne peuvent aider à long terme si beaucoup de personnes vous contactent. Tout ce qu'il faut, c'est que quelqu'un vous envoie un message et soit ensuite infecté par un logiciel malveillant qui analyse sa boîte de réception/un courrier/un carnet d'adresses/ce que vous voulez, pour trouver des adresses valides, et que votre adresse soit passée d'une liste à l'autre [J'ai même des contacts qui sont assez stupides pour insérer leur adresse électronique et leur mot de passe dans des formulaires en ligne pour les raisons les plus idiotes. Vous en avez probablement aussi, le plus récent étant un site qui proposait de calculer le "diagramme d'astrologie et les prédictions de messagerie". qui a immédiatement spammé tous les contacts du fou avec une invitation sur le même site et que <divinité> ne sait que quelles autres listes nous avons maintenant.].

L'adresse sur mes sites Web publics n'est pas simplement une adresse jetable, mais bien un sous-domaine jetable. Si je commence à recevoir du courrier indésirable sur ce sous-domaine, j'en crée un nouveau, met à jour les sites sur lesquels mes coordonnées sont répertoriées et peu de temps après, je supprime complètement le sous-domaine des enregistrements DNS. Si vous faites cela, ou toute autre technique d'adresse jetable, assurez-vous d'indiquer clairement (sur toute page répertoriant l'adresse et dans le pied de page de tout courrier que vous envoyez en utilisant cette adresse) que l'adresse changera à l'avenir et si des personnes peuvent le faire. 'pas passer, ils devraient vérifier à nouveau pour s'assurer qu'ils ont la bonne adresse.

Cela a l'avantage d'être simplement une simple adresse sur laquelle les gens peuvent cliquer (si leur navigateur + mailer sont liés de cette façon) ou copier/coller sans avoir à utiliser leur cerveau pour éditer l'adresse par la suite (je suis toujours surpris par le les gens intelligents et observateurs ne peuvent pas obtenir ce genre de chose correctement). Cela signifie également que mon serveur de messagerie ne passe pas ses journées à renvoyer des messages envoyés à des adresses "aléatoires" (aaron @, adam @, amy01 @, ...) dans les sous-domaines expirés. Cela ne confond pas non plus les lecteurs d'écran utilisés par les aveugles ou les mal placés.

Une autre option que je n'ai pas encore essayée consiste à utiliser une requête AJAX pour lire l'adresse e-mail et d'autres détails. Cela peut être légèrement plus efficace que l'obscurcissement basé sur document.write, bien que cela ajoute un peu de charge supplémentaire au serveur Web.

J'avais l'habitude d'utiliser des formulaires "contactez-moi/nous" à la place, mais j'ai constaté qu'ils étaient spammés autant que, parfois plus, que les adresses électroniques en texte brut - parfois par des scripts essayant d'utiliser le formulaire pour créer un compte quelque part plutôt que utilisez-le comme formulaire de contact.

2
David Spillett

Pas du tout, Jose! - Oui, José!

Il n'y a absolument aucun moyen d'arrêter la récolte des adresses de messagerie a href="mailto:". On croit depuis longtemps que l’utilisation de JavaScript est un bon moyen d’empêcher la plupart des bots récoltants, mais de nos jours, les bots sont plutôt doués pour vaincre cette méthode. Ils peuvent également vaincre les images contenant des adresses électroniques, de la même manière qu'ils peuvent vaincre Captcha à l'aide du logiciel Decaptcha.

Le meilleur moyen!

La meilleure approche consisterait à utiliser un service de messagerie réputé offrant un bon blocage du spam. Google G Suite et Microsoft Office 365 utilisent un algorithme incomparable par rapport aux logiciels disponibles sur le marché, principalement parce qu'ils reçoivent des millions de courriels par jour et qu'ils sont en mesure d '"apprendre". et la liste noire des spammeurs bien avant même d’essayer de vous envoyer un courriel.

En fait, il y a un an Google indique que sa technologie d'apprentissage automatique bloque désormais 99,9% des spams et des messages de phishing de Gmail , Microsoft Exchange local et les serveurs de messagerie exécutés sous plesk/cpanel ne sont pas en mesure de concurrencer cette protection.

Résumé

Bloquez le spam en utilisant un service de messagerie réputé, capable d’apprentissage automatique par ordinateur. Vous pouvez également aller plus loin en empêchant les spammeurs de visiter votre site en utilisant Cloudflare, qui détectera une grande majorité des robots agressifs avant qu'ils n'atteignent votre site.

1
Simon Hayter

Si vous avez un filtre de bot (utilisant 1x1px, un sous-réseau, des bots connus, la détection de jscript, un référent http et un agent de navigateur), vous pouvez simplement ne pas afficher les informations si c'est un bot.

Solution en PHP:

<?
if (!isbot()) {
  echo 'mailto:'.$email_address_for_real_people;
  }
  else {
  echo 'mailto:yourself_bot@'.$bots_domain_address;
  }
?>
1
Talvi Watia

La chose la plus simple que j'ai trouvée est d'utiliser un formulaire de contact contenant une adresse par défaut, mais également la possibilité pour l'utilisateur de sélectionner les destinataires de la communication (marketing, vente, support technique, etc.). Ensuite, en fonction de la valeur de la liste déroulante, les données de formulaire publiées sont envoyées par le serveur à l'adresse électronique appropriée.

Exécutez cette liste de contacts à partir d'une table de base de données afin de pouvoir facilement mettre à jour/ajouter des entrées dans la liste déroulante. De cette façon, vous n’exposez jamais aucune adresse au vaste monde des robots de spam, mais vous offrez tout de même à vos utilisateurs un excellent moyen d’envoyer des commentaires.

1
Milner

Utilisez Zoho Creator pour configurer un formulaire de contact. Les commentaires que vous recevrez seront stockés dans une base de données à laquelle vous pourrez accéder en ligne et qui vous sera également envoyée par courrier électronique.

0
mvark

J'utilise un fonction PHP pour générer du javascript afin de générer le script au moment de l'exécution. Notez que vous n'avez pas besoin de PHP pour générer le JS au moment de l'exécution, vous pouvez générer le JS une fois localement, puis inclure le statique JS dans votre page.

Vous pouvez également utiliser la fonction liée avec cet extrait ci-dessous pour obscurcir automatiquement les adresses électroniques dans un code HTML donné (où $ processingContent est le code HTML):

 $emailMatches = array();
 $matchCount = preg_match_all('/(?:[a-zA-Z0-9_\.\-])+\@(?:(?:[a-zA-Z0-9\-])+\.)+(?:[a-zA-Z0-9]{2,4})+/', $processedContent, $emailMatches);

 if($matchCount > 0) {
    $emailMatches = $emailMatches[0];

    foreach($emailMatches as $email) {
    $replacement = createJSMailLink($email);

    $processedContent = str_replace($email, createJSMailLink($email), $processedContent);
 }
}
0
iloveitaly

Une chose que je fais est d'utiliser l'API de http://www.stopforumspam.com pour rechercher les spammeurs. N'hésitez pas à me contacter pour plus de détails et je serai ravi de vous aider!

Bud Manz

Manz Web Designs, LLC

0
Bud

J'ai utilisé [email protected] pendant des années. Les utilisateurs en savent généralement assez pour supprimer le "non-spam".

Sinon, j'utilise simplement un formulaire de contact avec un 'captcha' et envoie le courrier directement à partir du site Web.

0
Gary.Ray

Voici un autre obscurcisseur de courrier électronique: Enkoder , de Dan Benjamin. Il vient à la fois comme une application en ligne et une application autonome pour Mac.

0
Alex

Si cela ne vous dérange pas d'utiliser du javascript, vous pouvez utiliser quelque chose comme ROT13 pour masquer l'adresse e-mail. Par exemple voir ceci:
http://scott.yang.id.au/2003/06/obfuscate-email-address-with-javascript-rot13/

Personnellement, je préfère utiliser un formulaire de contact et ne pas m'inquiéter des spambots, mais bien sûr, tout dépend de vos exigences.

0
Mee

Si vous utilisez un formulaire de contact, vous pouvez utiliser la technique amusante consistant à utiliser des noms aléatoires pour vos entrées.

Par exemple, je crée un formulaire de contact; au lieu d'utiliser un courrier électronique comme entrée, j'utiliserais liame, same with name (eman) et comment (tnemmoc). Les robots ne savent pas vraiment ce que font ces entrées, alors ils les ignorent.

0
dkuntz2

J'ai mis en place un formulaire/une feuille de calcul Google Documents. Je peux vérifier les entrées de formulaire une fois par jour et ma boîte de réception n'est pas inondée.

0
Sri