【问题标题】:How to show email addresses on the website to avoid spams?如何在网站上显示电子邮件地址以避免垃圾邮件?
【发布时间】:2014-05-25 00:37:14
【问题描述】:

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

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

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

恶意机器人会在网上搜索电子邮件地址,而纯文本电子邮件地址更有可能被发送垃圾邮件。

【问题讨论】:

  • 为了遵守 woorank,您可以做任何事情,从使用 javascript 将其制作为图像到 document.write 并分解电子邮件地址。要真正防止垃圾邮件……那是另一回事了。
  • 您会看到针对此问题的多种解决方案。一种方法是不将其设为链接,并打印 info -AT-example.com,这使用户在撰写消息时手动键入电子邮件地址。这与将电子邮件放入图像中基本相同——在这两种情况下,您都会删除链接。另一种解决方案是添加一个带有验证码的表单,该验证码提交到服务器,服务器验证验证码,然后在一切正常的情况下发送电子邮件。
  • @John 这个问题是用php标记的,但是这个问题是用jsp标记的,对于jsp编码员来说可能有更好的解决方案
  • 这可能是有关此信息的 stackexchange 上最权威和最详尽的资源,应该回答您所有的问题:superuser.com/questions/235937/…

标签: html jsp email mailto


【解决方案1】:

编辑:使用 Formspree 一年多了,我不得不说我不太高兴。人们很容易向您发送各种垃圾邮件。

2020 年(甚至可能超过)解决方案:

  1. Register with Formspree,一个将表单数据转发到您选择的电子邮件的免费平台。请务必使用您希望接收提交的电子邮件地址进行注册。
  2. 复制生成的唯一 Formspree 端点。
  3. 使用此端点创建联系表单。

恭喜!您的电子邮件已被机器人正式屏蔽。

【讨论】:

    【解决方案2】:

    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>
    

    【讨论】:

    • 我使用了您的纯 CSS 解决方案,谢谢。现在真的有人禁用 JS 吗?所有网站都大量使用它(我们可以说它是强制性的)
    • 我同意,但有些人同意。我不会说纯 CSS 版本是最好或最安全的。老实说,我会使用一个组合。
    • @AlainIb 许多人禁用它的原因是因为跟踪,例如分析、Facebook、广告等
    • 我发现反向字符串的想法很有趣。但它对我不起作用,因为当您从页面复制时它会再次反转。
    • @OutstandingBill 我们并没有防止复制和粘贴,但我们正在防止机器人。这并不意味着您的观点无效,我真的不知道答案。我要说的是,与真正的安全性相反,真正混淆的这些类型的解决方案通常不是最安全的。我通常会使用 JavaScript 解决方案。
    【解决方案3】:

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

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

    网络管理员想出了巧妙的方法来防止 通过写出电子邮件地址(即帮助 [at] cloudflare [dot] com) 或使用电子邮件地址的嵌入图像。然而,你 失去了自动点击邮箱地址的便利 发送电子邮件。

    通过启用 Cloudflare 电子邮件地址混淆,电子邮件地址在 您的网页将被机器人混淆(隐藏),同时保持 它们对人类可见。事实上,您的 访问者的网站。

    为防止出现意外的网站行为,电子邮件地址不是 当它们出现时被混淆:

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

    我不隶属于 CloudFlare。我只是感谢他们免费提供的一切。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 并且不再起作用,因为它依赖于旧版本的 ReCaptcha。我希望 Google 的不同部门能够相互交流。
      【解决方案5】:

      嗯,你可以每天想出不同的方法。这是一个使用 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 sn-p 来处理真实的用户点击。

      也适用于手机。

      【讨论】:

      • 我认为这种方法非常好。如果您显示的是电子邮件地址而不是“电子邮件”,那么请务必使用图像转换器。
      • 我喜欢这样的解决方案,您可以让垃圾邮件发送者误报。总是比给他们一个他们很可能接受的挑战要好:p
      【解决方案6】:

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

      【讨论】:

      • 它还会阻止禁用的用户向您发送电子邮件。
      • 我同意,除非您的电子邮件非常简单。 (info@company.com) 我不会使用图像,人们不会费心输入它。或者在这个过程中犯错误。
      【解决方案7】:

      就我个人而言,我想出了这个,非常简单,有点有趣,我把这段代码放在我希望我的电子邮件地址出现的地方:

      <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>
      

      演示

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

      【讨论】:

      • 嗨,我对JS不是很熟悉。您能否简要解释一下您的代码?我对&lt;a href=mailto:{{spam@cia.gov}}&gt;{{spam@fbi.gov}}&lt;/a&gt; 的部分特别感兴趣。借助此代码,机器人是否会获取 cia/fbi 的地址并将垃圾邮件发送给他们?提前谢谢你。
      【解决方案8】:

      在过去,我看到过使用 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。

      【讨论】:

      • 但是如果人们禁用了 JS 那么他们也看不到链接。需要为此目的的后备。可以通过&lt;a href="mailto&lt;!--comment--&gt;me@... 或&lt;a href=""&gt;&lt;span class="hidden"&gt;text&lt;/span&gt; 来实现
      【解决方案9】:

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

      <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的编码

      【讨论】:

      • 这将防止不成熟的用户从您网站的源代码中获取邮件地址,但根本不会阻止机器人。
      【解决方案10】:

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

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

      最终,通过使用mailto:,您可能会疏远一部分用户群,他们一开始就无法使用该链接。

      我建议使用电子邮件表单,并且有很多易于理解的教程适用于 PHP 和您的 JSP 语言,例如此链接:Sending Email in JSP 和即使在StackOverflow

      通过使用您的服务器发送电子邮件,您可以更严格地控​​制电子邮件的生成方式、允许用户输入哪些数据,您甚至可以向他们发送一封回信(由服务器生成)以确认您已收到他们的消息。这是一种久经考验的真实方法,允许客户和访客与您联系,同时仍为您提供保护和控制整个过程。

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

      【讨论】:

      • 你是对的,但使用“联系页面”的唯一问题是用户无法将我的电子邮件地址添加到他们的联系人列表中;因此,每次他们想发送电子邮件都需要访问该网站。
      • 我强烈建议不要使用联系页面。输入太小的表单字段很麻烦,也无法附加任何内容,而且我想希望在其已发送文件夹中发送邮件的人的百分比远高于不使用邮件程序的人的百分比.
      • @Socowi 怎么样?
      • @lmenus 由于用户必须在表单中输入她的电子邮件地址,因此网站所有者必须确保根据 GDPR 处理她的电子邮件地址。用户的电子邮件地址必须在发送到服务器之前进行加密(应该没问题。您的网站无论如何都应该使用 https)。必须告知用户其电子邮件地址的使用方式、存储时间等。
      • @Eoin 否。如果您使用 mailto 链接,您的服务器看不到他们的电子邮件,因此它不受 GDPR 的约束。
      【解决方案11】:

      解决方案 1:

      您可以使用许多公开可用的电子邮件地址编码器,例如(google 上的第一个结果):

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

      这会将电子邮件编码为它们的字符实体值,这将需要更多的逻辑表单抓取器来解码它。

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

      解决方案 2:

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

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

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

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

      【讨论】:

      • 任何称职的机器人都能够破解编码的电子邮件。令人惊讶的是,并非所有人都这样做,但在一般情况下,这不是一个安全的选择。如果你还是选择它,选择一个不太流行的变种可能会持续更长时间。
      【解决方案12】:

      是的,这意味着访问者使用 php 表单与您联系。它更加安全,并且可以阻止机器人向您发送数千次电子邮件。环顾 Google 寻找联系表格教程会有很多!

      一个教程将告诉您使用 php,因此当用户填写表格时,它将通过电子邮件发送给您,其中包含他们在表格中填写的详细信息。然而,大多数表单都像“Captcha”条目一样使用,它会阻止机器人,就像“你是人类吗?”测试。

      希望这会有所帮助。

      【讨论】:

      • PHP 不是我选择的平台,但使用联系表单的基本方法可以优雅地解决(这部分)问题。接下来,打击垃圾邮件。当然,除了添加验证码之外,同样要确保表单的来源不会泄露任何电子邮件地址。
      猜你喜欢
      • 2017-05-17
      • 2012-01-16
      • 2013-08-28
      • 1970-01-01
      • 2010-11-20
      • 2012-08-26
      • 2013-07-03
      • 2014-06-06
      • 2012-06-28
      相关资源
      最近更新 更多