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?
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?
Réponses:
Je passe tous les formulaires de contact via un compte Gmail jetable, qui transfère le courrier vers la véritable adresse e-mail. 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 parvient, 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.
Utiliser un obfuscateur de courrier électronique
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.
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 le JavaScript est désactivé.
Mise à jour: Voici un exemple de cette technique en action .
Mise à jour 2:
Il s'avère que quelqu'un a effectivement fait des recherches à ce sujet et l'a posté en ligne. Voir l'article du SuperUser décrivant les résultats ou l'article original.
thatguy funny-symbol gmail.com
Personnellement, je n’affiche pas d’adresses électroniques sur les 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 leurs adresses e-mail, ni avoir à parcourir diverses étapes de JavaScript, etc.
C'est souvent la meilleure solution si votre filtrage de courrier indésirable n'est pas aussi sophistiqué.
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 mailto:
contenu valide , 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.
Ce que je fais est d' écrire l'adresse e - mail sous forme de mots, enveloppé dans une balise span: <span class="email">joe dot blow at gmail dot com</span>
. Ensuite, un script de niveau 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.
La meilleure solution: utilisez 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 webmaster@example.com comme adresse électronique et oublier le spam.
en utilisant un encodage HTML comme ʉẮᶗ
, le navigateur le rendra comme "abc"
Utilisez une bibliothèque graphique (telle que GD prise en charge par PHP ou similaire) pour créer dynamiquement 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 doit la ressaisir à partir de zéro), mais elle est également 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.
Un moyen assez efficace, bien que non parfait, consiste à 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.
Voici juste un exemple comment cela pourrait être fait.
J'utilise un script Python simple 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 suffisamment le contenu pour 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("test123@example.com")
Cela donne la sortie
<!-- test123@example.com -->
<a href="mailto:test123@example.com">test123@example.com</a>
Lorsque le résultat est collé dans une page Web, le navigateur affiche le texte "test123@example.com" sous la forme d'une hyperligne en "mailto: test123@example.com". 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.
Évidemment, je supprime le commentaire avec la version ASCII simple de l'adresse une fois que j'ai collé le lien de courrier électronique masqué à l'endroit approprié dans la source HTML de la page Web.
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.
Je suis un fan d'obfuscation, où l'adresse email est essentiellement rendue avec Javascript.
Par exemple, my@email.com
pourrait être rendu comme
<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 l' obfuscateur que j'ai utilisé.
<a href="#" onclick="document.location.href='mailto:...'; return false">
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 + "@" + host1 + host2 +
">" + name + "@" + host1 + host2 + "</a>")
//-->
</script>
Vous pouvez écrire "Déchiffrer mon courrier électronique: utilisateur sur com dot gmail" dans les <noscript>
balises pour ceux dont le javascript est désactivé. De cette façon, vous obtenez la fonctionnalité de lien hypertexte. Vous avez une bonne chance de garder les spammeurs à l'écart de votre adresse et les personnes dont le javascript est désactivé ou les navigateurs en mode texte uniquement peuvent toujours obtenir votre adresse électronique.
Toutes les techniques d’obscurcissement dans le monde ne peuvent pas aider à long terme si beaucoup de personnes vous contactent. Tout ce qu’il faut, c’est que quelqu'un vous laisse 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 transmise d'une liste à l'autre [j'ai même des contacts qui sont assez stupides pour mettre leur adresse e-mail 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 proposant de calculer le "diagramme d'astrologie et les prédictions" de quelqu'un qui spammait immédiatement tout le contenu. les contacts de imbécile avec une invitation sur le même site et <divinité> seulement sait quelles autres listes nous avons maintenant] .
L'adresse sur mes sites Web publics n'est pas simplement une adresse à jeter, mais un sous-domaine à jeter. 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 + expéditeur 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' document.write
obscurcissement basé, bien que cela va ajouter un peu de charge supplémentaire sur le 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.
Si vous avez un filtre de bot (avec 1x1px, sous-réseau, bots connus, détection de jscript, référent http et 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;
}
?>
isbot()
est une fonction créée par l'utilisateur qui pointe sur la routine de filtrage de bot que vous avez.
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.
Pas du tout, Jose! - Oui chemin, Jose!
Il n'y a absolument aucun moyen d'arrêter la collecte d' a href="mailto:"
adresses e - mail. 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.
La meilleure façon!
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 qui ne correspond à aucun logiciel du marché, principalement parce qu'ils reçoivent des millions de courriels par jour et qu'ils sont en mesure d '"apprendre" et de répertorier les spammeurs sur une liste noire bien avant qu'ils ne tentent de vous envoyer des courriels.
En fait, il y a un an, Google avait déclaré que sa technologie d'apprentissage automatique bloquait désormais 99,9% des spams et messages de phishing de Gmail. Microsoft local Exchange et les serveurs de messagerie exécutés derrière plesk / cpanel ne sont pas en mesure de concurrencer cette protection.
Sommaire
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.
J'ai utilisé fred@no-spam.domain.com 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.
Une chose que je fais est d'utiliser l'API de http://www.stopforumspam.com pour rechercher des 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
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.
J'utilise une 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 JS statique dans votre page.
Vous pouvez également utiliser la fonction liée avec l'extrait ci-dessous pour masquer 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);
}
}
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 l'email 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.
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.