代码之家  ›  专栏  ›  技术社区  ›  Wookai

如何删除邮件链接?

  •  43
  • Wookai  · 技术社区  · 15 年前

    我希望访问者能够直接在我的网页上点击(或复制)一个电子邮件地址。不过,如果我能让机器人和其他爬虫更难获得所说的电子邮件地址并将其注册到垃圾邮件列表中,那就太棒了。

    我找到了不同的方法(即编码mailto-html链接),或者使用javascript或者纯HTML,但是你们有什么建议?JavaScript技术看起来更复杂,但这可能会影响关闭它的用户,以及像Google这样的合法爬虫程序。

    另一方面,HTML似乎有点基础,机器人程序编写者现在应该已经解决了…

    我到底该不该这么做,还是垃圾邮件发送者会收到我的电子邮件?我知道反垃圾邮件过滤越来越好,但如果我能做更多的事情来减缓垃圾邮件发送者的速度,我会的。

    6 回复  |  直到 9 年前
        1
  •  37
  •   Daniel Vassallo    15 年前

    javascript仍然是最好的mailto模糊器之一。对于禁用javascript的用户,您可能希望用指向联系人表单的链接替换mailto链接。

    下面是一个流行的javascript反垃圾邮件电子邮件模糊器:

    也有 a php version 其中之一就是能够从服务器端生成模糊的电子邮件。

    这是上述工具生成的javascript代码,用于混淆我的电子邮件地址(注释完整):

    <script type="text/javascript" language="javascript">
    <!--
    // Email obfuscator script 2.1 by Tim Williams, University of Arizona
    // Random encryption key feature by Andrew Moulden, Site Engineering Ltd
    // This code is freeware provided these four comment lines remain intact
    // A wizard to generate this code is at http://www.jottings.com/obfuscator/
    { coded = "lMnK@wMunFK8MDDMKKt.ktl"
      key = "1DtzZ8TGBuhRjJMKWI4gkUF2qidfOyPmSN7X30Vpso6xvErLnwQCbalA95HcYe"
      shift=coded.length
      link=""
      for (i=0; i<coded.length; i++) {
        if (key.indexOf(coded.charAt(i))==-1) {
          ltr = coded.charAt(i)
          link += (ltr)
        }
        else {     
          ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length
          link += (key.charAt(ltr))
        }
      }
      document.write("<a href='mailto:"+link+"'>Email Me</a>")
    }
    //-->
    </script><noscript><a href='contact-form.html'>Email Me</a></noscript>
    
        2
  •  12
  •   Harry    9 年前

    这看起来是一个非常酷的编码字符的方法,我认为这将击败基本的垃圾邮件机器人:

    http://robspangler.com/blog/encrypt-mailto-links-to-stop-email-spam/

    所以

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

    变成

    <a href="&#x6d;&#97;&#105;&#108;&#x74;&#111;&#58;&#116;&#101;&#115;&#116;&#x40;&#x74;&#101;&#115;&#x74;&#x2e;&#x63;&#111;&#109;">Email</a>
    

    它的吸引力在于它不需要任何JavaScript。

    Plunker example here .

        3
  •  10
  •   Robert Went    11 年前

    能够 使用 reCAPTCHA Mailhide 功能。这将在表单上呈现电子邮件地址 use...@domain.tld 其中省略号是查看完整地址的链接。这对游客来说有点麻烦,但应该提供额外的保护。这么说,这种技术 让你的访问者直接从你的网页上复制地址。

    我不知道“合法爬虫”是怎么回事,比如谷歌。至少,我不明白为什么谷歌应该索引电子邮件地址。 (请参阅下面的操作注释。)

        4
  •  6
  •   Harry    9 年前

    基于DanielVassallo的答案,一种加密mailto链接的方法 可以 避免使用更聪明的Spambots来评估JS document.write S(如incarnate所指出的)将把解密放在一个javascript函数中,这个函数只有在点击链接时才会被评估。例如,使用base64作为“加密”:

    <script>
    
      function decryptEmail(encoded) {
    
        var address = atob(encoded);
        window.location.href = "mailto:" + address;
    
      }
    
    </script>
    
    <a href="javascript:decryptEmail('dGVzdEB0ZXN0LmNvbQ==');">Email</a>
    

    Working Plunker .

    我不想知道这是否能被一个更为复杂的爬虫类打败。

        5
  •  3
  •   James    9 年前

    您可以使用外部服务,如 aemail.com :

    @电子邮件是一种免费的电子邮件隐藏服务,它使用short隐藏电子邮件 单击链接后将发件人重定向到mailto url的URL。

    在a email.com上输入电子邮件后,您将得到一个简短的URL,可用于替换“mailto”链接。单击链接后,您的用户将被重定向到“mailto”URL,而不必通知aemail.com。 API 可用于动态隐藏电子邮件/获取URL。

    例子:

    <a href="mailto:info@itee.com">Contact</a>

    换成

    <a href="https://aemail.com/q2">Contact</a>

    将保持电子邮件链接正常工作。

        6
  •  1
  •   HasanG Joe Dabones    15 年前

    我简单地使用:

    <script language="javascript" type="text/javascript">
    var pre = "hideme";
    document.write("<a href='mailto:" + pre + "@domain.com'>" + pre
    + "@domain.com</a>");
    </script>
    <noscript>Enable javascript to see our email!</noscript>