保护垃圾邮件机器人/网络抓取工具中的电子邮件地址

时间:2010-09-08 01:17:44

标签: web-crawler spam spam-prevention email-spam

如何防止电子邮件蜘蛛从网页收集电子邮件? mailto:链接它们是否会增加它们被拾取的可能性? URL编码有用吗?

显然,最好的对策是仅向登录用户显示电子邮件地址,或提供联系表单而不是电子邮件地址。但就纯粹的客户端解决方案而言,可用的是什么?

5 个答案:

答案 0 :(得分:7)

大多数电子邮件蜘蛛都没有javascript解释器,所以如果你真的需要mailto:,你可以用javascript注入它......只要确保地址在javascript中以某种方式被遮挡,例如:

myLink.href='mai'+'lto:'+'bob'
           +'@'
           +'example.com';

如果你需要在页面上显示电子邮件地址,一个常见的解决方案就是使用php的gd生成一个图像(尽管javascript注入也适用于此)。

我们的想法是从HTML中删除电子邮件地址并使用javascript注入它们。这样,电子邮件地址就不会以任何HTTP流量的形式出现在原始形式中,这正是蜘蛛所看到的。

答案 1 :(得分:3)

我倾向于避免使用mailto,因为它使人们很容易收集电子邮件地址。

如果您要在您的网站上设置联系页面,那么只需拥有一个表单,并在他们提交服务器端代码并​​使用相应的电子邮件地址时。

如果您需要能够提供其他人的地址,请使用数字,姓名,用户名,以某种方式识别他们。

如果您只是在一个范围内有一个电子邮件地址,即使您试图隐藏它,也可能会被拾取,因为这些程序可能非常复杂,因为查找电子邮件地址就是它们的目的。

与大多数秘密一样,如果您不希望其他人获取它们,请不要将它们放在页面上。

答案 2 :(得分:1)

我通常将它们分成不同的部分,然后使用javascript重新组合它们。最后的javascript做了document.write来写出html。

即。

var mail = "mailto";
var namepart = "test.user";
var domainpart = "example";
var tld = "com"; 
var address = namepart + "@" + domainpart + "." + tld;
document.write("<a href=" + mail + ":" + address + '">' + address + "</a>";

答案 3 :(得分:1)

多年以后,我为不同的网站创建了以下jQuery:

$(".email").each(function() {
    $(this).html( $(this).html().replace("...", "@").replace(/\.\.\./g, ".") );
    $(this).attr( "href", $(this).attr("href").replace("...", "@").replace(/\.\.\./g, ".") );
});

然后将电子邮件写成:

<a href="mailto:bob.smith...example...com" class="email">bob.smith...example...com</a>

它并不完美,但它非常简单,似乎阻止了大多数电子邮件收割机。这种方法的优点是不使用JavaScript的人可能能够计算出实际的电子邮件地址。


查看此study on various email obfuscation methods

答案 4 :(得分:0)

如果您不需要邮件链接,可以用 [at]

替换 @ 符号

示例:sam [at] example.com