如何sporoof mailto链接?

Woo*_*kai 44 html mailto obfuscation encoding spam

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

我发现了不同的方法(即编码mailto HTML链接),使用JavaScript或纯HTML,但你们推荐什么?JavaScript技术似乎更复杂,但这可能会影响关闭它的用户,以及像Google这样的合法抓取工具.

另一方面,HTML一个看起来有点基础,机器人编写者应该现在已经弄明白了...

我是否应该费心去做这件事,还是垃圾邮件发送者会收到我的电子邮件?我知道反垃圾邮件过滤器越来越好,但如果我能做更多的事情来减缓垃圾邮件发送者的速度,我会的.

Dan*_*llo 37

JavaScript仍然是最好的mailto混淆器之一.对于禁用JavaScript的用户,您可能希望将mailto链接替换为指向联系表单的链接.

以下是一个流行的JavaScript反垃圾邮件混淆器:

还有上面的php版本能够从服务器端生成混淆的电子邮件.

这是上面工具生成的用于混淆我的电子邮件地址的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>
Run Code Online (Sandbox Code Playgroud)

  • 这可能是一个愚蠢的问题,我为这样一个旧线程的评论/询问道歉,但是一旦生成了网页,电子邮件地址似乎以纯文本形式存在,您可以右键单击,复制电子邮件地址.这些垃圾邮件机器人在解码并显示在呈现的页面上之后获取这些信息难道不是很简单吗?我无法想象它就这么简单,但我无法弄清楚是什么阻止了这一点,我非常想知道.谢谢!:) (6认同)
  • 我很确定基于PhantomJS的机器人能够很好地阅读那封电子邮件. (6认同)
  • 在回答上述评论时,垃圾邮件机器人非常基础,它们旨在扫描 HTML mailto 链接,混淆本身对 mailto 链接进行编码,因此垃圾邮件机器人无法读取它。不太可能有足够聪明的机器人来解码这个,因为智能机器人不会具有成本效益。 (2认同)
  • 正确 - 任何无头浏览器套件都可以正常阅读此链接.我担心没有客户端加密或混淆会对现代无头浏览器套件起作用.如果您想保留收集的电子邮件地址,请提供邮件表格.或者只是处理它将要收获的事实,并获得具有良好垃圾邮件过滤功能的邮件服务器 - 像GMail这样的现代提供商非常聪明,可以过滤任何东西. (2认同)

Har*_*rry 14

这看起来像是一个非常酷的方法来编码角色,我认为这会打败基本的垃圾邮件机器人:

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

所以

<a href="mailto:test@test.com">Email</a>
Run Code Online (Sandbox Code Playgroud)

<a href="&#x6d;&#97;&#105;&#108;&#x74;&#111;&#58;&#116;&#101;&#115;&#116;&#x40;&#x74;&#101;&#115;&#x74;&#x2e;&#x63;&#111;&#109;">Email</a>
Run Code Online (Sandbox Code Playgroud)

它的吸引力在于它不需要任何Javascript.

这里有Plunker的例子.

  • 抱歉,链接页面(https://robspangler.com/blog/encrypt-mailto-links-to-stop-email-spam/)上的脚本当前不起作用。它不会生成混淆的链接。 (2认同)
  • 这似乎可以对电子邮件进行编码http://www.katpatuka.org/pub/doc/anti-spam.html (2认同)

jen*_*ram 10

可以使用reCAPTCHA Mailhide功能.这将在表单上呈现电子邮件地址,use...@domain.tld省略号是链接以查看完整地址.这对游客来说有点麻烦,但应该给予高级保护.话虽如此,这种技术不会让访问者直接从您的网页复制地址.

我没有像谷歌这样的"合法爬虫".至少,我无法理解Google为什么要将电子邮件地址编入索引. (参见下面的OP评论.)


Jam*_*mes 8

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

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

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

例子:

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

替换为

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

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


Har*_*rry 6

建立在丹尼尔·瓦萨洛的回答,一种方式来加密一个mailto链接,避免聪明的反垃圾邮件插件,将评估JS document.writeS(由化身指出的)将是把解密的JavaScript函数点击链接时只计算.例如,使用base64作为"加密":

<script>

  function decryptEmail(encoded) {

    var address = atob(encoded);
    window.location.href = "mailto:" + address;

  }

</script>

<a href="javascript:decryptEmail('dGVzdEB0ZXN0LmNvbQ==');">Email</a>
Run Code Online (Sandbox Code Playgroud)

工作的Plunker.

我并不是说要知道这是否可以被更复杂的爬虫所取代.