如何在网站上显示电子邮件地址以避免垃圾邮件?

时间:2014-04-11 02:58:46

标签: html jsp email mailto

我在我的网站上显示电子邮件如下

 <a href="mailto:inf@example.com">Email</a>

但是我在使用woorank.com分析我的网站时阅读了以下内容,我该怎么做才能避免这种情况?

  

恶意机器人抓取网页搜索电子邮件地址,纯文本电子邮件地址更容易被垃圾邮件发送。

12 个答案:

答案 0 :(得分:29)

过去我用javascript看过这个。基本上,您将电子邮件地址分配给javascript变量,并使用这些变量更改元素的内容。您还可以为禁用javascript的用户提供后备,如果需要,可以将其指向表单的方向。这是一个例子

var user = 'foo',
    domain = 'bar.com',
    element = document.getElementById('email');

    element.innerHTML = user + '@' + domain;
    //OR
    //'<a href="mailto:' + user + '@' + domain + '">Email</a>'  

这样机器人就不会看到电子邮件地址,因为他们没有加载javascript。

答案 1 :(得分:27)

嗯,你可以每天找出不同的方式。这是使用jQuery的一个。

<a class="mail" href="mailto:john@badmail.mydomain.com">e-mail</a>

然后用jQuery处理点击。

$('a.mail').on('click', function(){
    var href = $(this).attr('href');
    $(this).attr('href', href.replace('badmail.', ''));
});

我喜欢这个的原因是,我可以让垃圾邮件发送者垃圾邮件虚拟邮件域认为他们收到了另一封电子邮件。如果我维护自己的垃圾邮件过滤器,我可以将样本收集到我的坏桶中。

此外,这种方法允许您使用动态数据渲染页面非常干净,只需在整个网站上使用javascript代码段一次即可处理实际用户点击。

也适用于手机。

答案 2 :(得分:22)

在网站上隐藏电子邮件有多种不同的选择,通常使用电子邮件地址的HTML实体版本(如Aziz-Saleh建议的那样),但从实际的网络设计的角度来看,只是将这样的电子邮件地址放在网站上并不是最友好的用户。

例如,mailto:链接会自动触发浏览器打开用户选择的电子邮件应用程序 - 但请考虑这一点。并非每个人都有专用的电子邮件应用程序。例如,我不使用Outlook(我是Windows用户),除非我安装了Windows Live Mail,否则我的计算机无法打开该链接。我认为如果你已经登录,Chrome可以打开GMail的链接,但我需要检查一下。

最终,通过使用mailto:,您可能会疏远部分用户群,而这些用户群首先无法使用该链接。

我建议使用电子邮件表单,并且有很多易于理解的教程可用于PHP和JSP的语言,例如此链接:{{ 3}}甚至在Sending Email in JSP

通过使用您的服务器发送电子邮件,您可以更严格地控​​制电子邮件的生成方式,允许用户输入的数据,甚至可以向他们发送回复电子邮件(由服务器生成)以确认你收到了他们的信息。这是一种经过实践检验的现实方法,允许客户和访客与您联系,同时仍然保护和控制整个过程。

TL; DR :原始mailto:链接可能会疏远没有专门电子邮件程序的人,而如果您使用JSP表单,则可以控制他们与您联系的方式,以及哪些信息(您可以使用字段和HTML5 required属性来强制执行某些输入字段),您甚至可以使用do-not-reply电子邮件回复,以便他们知道他们的消息已被听到(只是不要忘记询问他们的电子邮件)地址)

答案 3 :(得分:18)

解决方案1:

您可以使用许多公开的电子邮件地址编码器(首先在谷歌上发布):

http://www.wbwip.com/wbw/emailencoder.html

这会将电子邮件编码为其字符实体值,这将需要更多逻辑形式的刮刀来解码它。

因此,像test@gmail.com这样的电子邮件会变成&#116;&#101;&#115;&#116;&#064;&#103;&#109;&#097;&#105;&#108;&#046;&#099;&#111;&#109;,也可以在mailto中使用。

解决方案2:

使用在线电子邮件到图像转换器(再次在谷歌上的第一个结果):

http://www.email2image.com/Convert-Email-to-Image.aspx

将其制作成图像。其他服务使您可以通过以下API自动执行此操作:

https://www.mashape.com/seikan/img4me-text-to-image-service#!endpoint-Main

答案 4 :(得分:5)

就个人而言,我想出了这个,非常直截了当,有点好笑,我把这段代码扔到我希望我的电子邮件地址出现的地方:

<script>(function whatever(){var s='@',n='nabil',k='kadimi.com',e=n+s+k,l='<a href=mailto:{{spam@cia.gov}}>{{spam@fbi.gov}}</a>'.replace(/{{.+?(}})/g,e);document.write(l)})()</script>

扩展

<script>
    (function whatever() {
        var s = '@'
            , n = 'nabil'
            , k = 'kadimi.com'
            , e = n + s + k
            , l = '<a href=mailto:{{spam@cia.gov}}>{{spam@fbi.gov}}</a>'.replace(/{{.+?(}})/g, e)
        ;
        document.write(l);
    })();
</script>

演示

&#13;
&#13;
<script>(function whatever(){var s='@',n='nabil',k='kadimi.com',e=n+s+k,l='<a href=mailto:{{spam@cia.gov}}>{{spam@fbi.gov}}</a>'.replace(/{{.+?(}})/g,e);document.write(l)})()</script>
&#13;
&#13;
&#13;

答案 5 :(得分:4)

JavaScript解决方案的问题在于,关闭JS的人也看不到电子邮件地址。尽管人数很少,但您需要结合多种技术才能获得最佳效果。

这里详细介绍了其中的许多技术,但我仅提供了解决方案:https://www.ionos.co.uk/digitalguide/e-mail/e-mail-security/protecting-your-e-mail-address-how-to-do-it/

评论

<p>If you have any questions or suggestions, please write an e-mail to:
us<!-- abc@def -->er@domai<!-- @abc.com -->n.com. 
</p>

隐藏的跨度

<style type="text/css">
span.spamprotection {display:none;}
</style>

<p>If you have any questions or suggestions, please write an e-mail to:
user<span class="spamprotection">CHARACTER SEQUENCE</span>@domain.com. 
</p>

反向字符串 这可能对多语言站点不友好。

<style type="text/css">
span.ltrText {unicode-bidi: bidi-override; direction: rtl}
</style>
<p>If you have any questions or suggestions, please write an e-mail to:
<span class="ltrText"> moc.niamod@resu</span>.
</p>

JavaScript和其他许多答案

<script type="text/javascript">
var part1 = "user";
var part2 = Math.pow(2,6);
var part3 = String.fromCharCode(part2);
var part4 = "domain.com"
var part5 = part1 + String.fromCharCode(part2) + part4;
document.write("If you have any questions or suggestions, please write an e-mail to:
   <href=" + "mai" + "lto" + ":" + part5 + ">" + part1 + part3 + part4 + "</a>.");
</script>

ROT13加密 依赖JavaScript,但由于GDPR已加密,因此也有帮助。

<script type="text/javascript">
function decode(a) {
  return a.replace(/[a-zA-Z]/g, function(c){
    return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) 
                               ? c : c - 26);
  })
}; 
function openMailer(element) {
var y = decode("znvygb:orahgmre@qbznva.qr");
element.setAttribute("href", y);
element.setAttribute("onclick", "");
element.firstChild.nodeValue = "Open e-mail software";
};
</script>
<a id="email" href=" " onclick='openMailer(this);'>E-mail: please click</a>

仅CSS 从这里借来的:Protect e-mail address with CSS only

<!doctype html>
<html>
<head>
    <title>Protect e-mail with only css</title>
    <style type="text/css">
        .e-mail:before {
            content: attr(data-website) "\0040" attr(data-user);
            unicode-bidi: bidi-override;
            direction: rtl;
        }
    </style>
</head>
<body>

<span class="e-mail" data-user="nohj" data-website="moc.liamg"></span>

</body>
</html>

答案 6 :(得分:3)

我使用http://www.wbwip.com/wbw/emailencoder.html之类的电子邮件编码器。只需将您的地址放在来源和&#34; a&#34;之间。标签。像这样的东西

<a href="mailto:&#105;&#110;&#102;&#111;&#064;&#101;&#120;&#097;&#109;&#112;&#108;&#101;&#046;&#099;&#111;&#109;">&#105;&#110;&#102;&#111;&#064;&#101;&#120;&#097;&#109;&#112;&#108;&#101;&#046;&#099;&#111;&#109;</a>

它是info@example.com的编码

答案 7 :(得分:3)

Google实际上为此提供了一项服务。免费使用并且效果很好:Mail ReCaptcha

答案 8 :(得分:1)

是的,这意味着使用php表单给访问者通过联系。它更加安全,可以阻止机器人向您发送数千次电子邮件。浏览一下谷歌的联系表格教程会有很多!

教程将告诉您使用php,因此当用户填写表单时,它将通过电子邮件发送给您,并在表单中填写详细信息。然而,大多数形式使用像“Captcha”条目,它停止机器人,几乎像“你是人吗?”测试

希望这有帮助。

答案 9 :(得分:1)

将您的电子邮件地址放在png或gif格式的透明图像上,并在您的网页上显示该图像。只有人类读者才会知道图像显示的是电子邮件地址。 这样可以防止机器人在您的网站上找到您的电子邮件地址。

答案 10 :(得分:1)

我一直在使用 CloudFlare的免费电子邮件地址混淆功能: https://support.cloudflare.com/hc/en-us/articles/200170016-What-is-Email-Address-Obfuscation-

  

电子邮件收割机和其他机器人在互联网上漫游以寻找电子邮件   要添加到针对垃圾邮件收件人的列表中的地址。这个趋势   导致不必要的电子邮件数量增加。

     

网络管理员想出了一些聪明的方法来防范   通过写出电子邮件地址(例如,在cloudflare [dot]上获得帮助)   com)或使用电子邮件地址的嵌入式图片。但是你   失去了单击电子邮件地址以自动进行的便利   发送电子邮件。

     

启用Cloudflare电子邮件地址混淆功能后,   您的网页将被漫游器混淆(隐藏),同时保持   它们对人类可见。实际上,您的   访客网站。

     

为防止意外的网站行为,请勿使用电子邮件地址   当它们出现在以下位置时会造成混淆:

     
      
  • 任何HTML标记属性,除了href标记的a属性。
  •   
  • 其他HTML标记
  •   
  • 任何没有MIME类型为“ text / html”或“ application / xhtml + xml”的页面
  •   

我不隶属于CloudFlare。我只是感谢他们免费提供的所有内容。

答案 11 :(得分:0)

2020(甚至可能以后)的解决方案:

  1. Register with Formspree,这是一个免费的平台,可将表单数据转发到您选择的电子邮件。确保使用您要在其上接收提交的电子邮件地址进行注册。
  2. 复制生成的唯一Formspree端点。
  3. 使用此端点创建联系表单。

恭喜!僵尸程序正式屏蔽了您的电子邮件。