保护电子邮件地址免受垃圾邮件机器人/网络爬虫的侵害

Posted

技术标签:

【中文标题】保护电子邮件地址免受垃圾邮件机器人/网络爬虫的侵害【英文标题】:Protecting email addresses from spam bots / web crawlers 【发布时间】:2011-04-09 12:03:39 【问题描述】:

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

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

【问题讨论】:

解决方案部分,请看:***.com/questions/308772/… 我不确定电子邮件混淆是否是一个很好的解决方案(如上面@Yi 的评论中提供的那样。但@James Black 尽可能使用电子邮件表单并使用服务器端代码是正确的处理消息。 【参考方案1】:

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

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

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

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

与大多数秘密一样,如果您不想让其他人得到它们,请不要将它们放在页面上。

【讨论】:

邮件在页面上,<span>s。除了删除电子邮件地址之外,我还能做些什么来降低它们被电子邮件蜘蛛抓取的可能性?【参考方案2】:

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

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

如果您需要在页面上显示电子邮件地址,一个常见的解决方案是使用 php 的 gd 之类的东西生成图像(尽管 javascript 注入也应该可以正常工作)。

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

【讨论】:

谢谢,这是一个非常聪明的方法。 那么你必须要求javascript才能使用这个页面,这会减少你的用户。【参考方案3】:

我通常将它们分成单独的部分,然后使用 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>";

【讨论】:

【参考方案4】:

多年后,我为另一个网站创建了以下 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。

【讨论】:

【参考方案5】:

如果您不需要邮件链接,可以将 @ 符号替换为 [at]

示例:sam [at]example.com

【讨论】:

以上是关于保护电子邮件地址免受垃圾邮件机器人/网络爬虫的侵害的主要内容,如果未能解决你的问题,请参考以下文章

如何保护网站上的电子邮件地址免受现代支持 JS 的机器人的攻击?

什么可以保护无线网络免受同名假冒网络的侵害? [关闭]

如何保护我的网络游戏免受作弊者的侵害?

如何使用 NextJS API 在 Jest 单元测试中考虑 Google reCaptcha

如何保护mysql数据库免受任何人的侵害

保护自己免受黑客和诈骗者侵害的最佳方法