如何spamproof邮件链接?

我希望访问者能够直接在我的网页上点击(或复制)一个电子邮件地址。 但是,如果我可以让僵尸程序和其他爬虫难以获得所述电子邮件地址并将其注册到垃圾邮件列表中,那么这将非常棒。

我发现不同的方法(即编码mailto HTML链接),无论是JavaScript或纯HTML,但你们build议? JavaScript技术似乎更复杂,但是这可能会影响closures它的用户,以及像Google这样的合法抓取工具。

另一方面,HTML的似乎有点基本,机器人作家应该已经明白了现在…

我是否应该这样做,或者垃圾邮件发送者是否会收到我的电子邮件? 我知道反垃圾邮件filter越来越好,但是如果我能做更多的事来减缓垃圾邮件发送者的话,我会的。

JavaScript仍然是最好的邮件混淆器之一。 对于JavaScript禁用的用户,您可能需要将mailto链接replace为联系人表单的链接。

以下是一个stream行的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> 

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

我不明白像Google这样的“合法爬虫”这个angular色。 至less,我不明白为什么谷歌应该索引电子邮件地址。 (请参阅下面的OP注释。)

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

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示例在这里 。

我只是使用:

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

基于Daniel Vassallo的回答,一种encryption邮件链接的方法可能会避免更聪明的垃圾邮件,它将评估JS document.write (如肉身指出的),将解密放在一个仅在链接点击。 例如,使用base64作为“encryption”:

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

工作Plunker 。

我并没有声称知道这是否能被更复杂的爬行器所淘汰。

您可以使用像aemail.com这样的外部服务:

@email是一个免费的电子邮件隐藏服务,隐藏电子邮件使用短链接redirect发件人到mailto-url后点击链接。

在aemail.com上input一个电子邮件后,你会得到一个简短的URL,可以用来replace你的'mailto'链接。 点击链接后,您的用户将被redirect到“mailto”url,而不会有任何通知。 API可以用来隐藏电子邮件/dynamic获取url。

例:

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

replace为

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

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