许多用户和论坛程序试图通过混淆来使自动电子邮件地址收集更加困难 - @ 被替换为“at”和 . 替换为“点”,所以
team@stackoverflow.com
现在变成
team at stackoverflow dot com
我不是正则表达式方面的专家,我真的很好奇——这样的混淆真的会让自动收获变得更难吗?自动识别这种混淆地址真的很难吗?
许多用户和论坛程序试图通过混淆来使自动电子邮件地址收集更加困难 - @ 被替换为“at”和 . 替换为“点”,所以
team@stackoverflow.com
现在变成
team at stackoverflow dot com
我不是正则表达式方面的专家,我真的很好奇——这样的混淆真的会让自动收获变得更难吗?自动识别这种混淆地址真的很难吗?
确实!
我不久前读过这篇文章,它展示了各种方法的有效性(以及相对程度)。目前,反转已经反转的字符串似乎是相当不错的保护。
以下代码示例:
<style type="text/css">
span.codedirection { unicode-bidi:bidi-override; direction: rtl; }
</style>
<p><span class="codedirection">moc.etalllit@7raboofnavlis</span></p>
将输出电子邮件,使其至少可读。
也就是说,这几乎是一场军备竞赛。但是,只要您领先一步,收获您的地址而不是普通的未混淆地址将更加努力。
混淆技术与验证码属于同一类别。它们不可靠,并且对普通用户的伤害比对机器人的伤害更大。
Javascript 混淆似乎受到称赞,但并不是灵丹妙药:如今,自动化浏览器进行电子邮件嗅探并不难。如果它可以在浏览器中显示,它可以被收获。您甚至可以想象一个机器人正在截取浏览器窗口的屏幕截图并使用 OCR 提取地址来击败您的百万美元混淆技术。
根据您想要混淆电子邮件的位置和原因,这些技术可能很有用:
限制电子邮件可见性:您可以将您网站/论坛上的电子邮件隐藏给匿名用户、新用户(迄今为止几乎没有活动或帖子),甚至完全隐藏它们,并使用内置的私人消息传递功能替换成员之间的电子邮件联系.
使用专门的垃圾邮件过滤电子邮件:您会收到垃圾邮件,但仅限于该特定地址。当您需要向任何用户公开电子邮件地址时,这是一个很好的权衡。
使用联系表格:虽然机器人非常擅长填写表格,但事实证明它们太擅长填写表格了。隐藏字段技术可以过滤掉大部分通过您的联系表发送的垃圾邮件。
当我看到这种类型的混淆时,我也会立即想到正则表达式。以这种方式收集“混淆”的电子邮件是小菜一碟。
我曾经想过以这种方式发布我的电子邮件地址:
你可以在这里给我发邮件:
string myEmail = "";
myEmail = myEmail
.Append ("myname")
.Append ("@")
.Append ("domain")
.Append (".")
.Append ("com");
谁没有成功,我的基本智力测试就失败了。
垃圾邮件发送者和您的用户将很难识别电子邮件地址。
来自维基百科的一篇关于电子邮件混淆或地址修改的好文章
向机器人和垃圾邮件发送者隐藏电子邮件的一种常见方法是创建包含电子邮件地址的图像。例如,Facebook 就是这样做的。现在,在电子邮件中使用图像本质上不利于可访问性,因为文本阅读器将无法阅读它。但即便如此,也有一些免费的字符识别程序可以很好地解码此类电子邮件图像。
从这里
我不确定它是否真的有助于处理垃圾邮件 - 但我已经学会了喜欢 mailto: tags/emails 的Escape Encode Obfuscation。一个示例标签:
<a href="%6D%61%69%6C%74%6F%3A%74%65%61%6D%40%73%74%61%63%6B%6F%76%65%72%66%6C%6F%77%2E%63%6F%6D">team@stackoverflow.com</a>
邮件 team@stackoverflow.com
在您的前门贴上“受 ADT 保护”的标签类似于。
这会阻止一个有才华的窃贼进入你的房子吗?当然不是。
它会让隔壁的房子没有上锁,窗户里放着 iPod 成为更有说服力的目标吗?很有可能。
一个简单的未混淆电子邮件抓取工具将按原样获取大量电子邮件。也许一个非常简单的正则表达式来获取非常常见的混淆方法是值得的。除此之外,您会花费大量时间来尝试破译越来越少的电子邮件。
话虽如此,进行一些巧妙的混淆可能是值得的。
作为记录,我的电子邮件多年来一直以纯文本形式出现在我的公开简历中,因为我使用的是 gmail,它有一个有效的垃圾邮件过滤器。
我想知道为什么到目前为止没有人提到ALA解决方案。
Roel Van Gils在 2007 年写了一篇关于优雅电子邮件混淆的文章
Graceful Email Obfuscation 只是一种带有联系表单后备的JavaScript 电子邮件混淆技术。
mailto:mail@example.com
→ contact/mail+example+com
→contact/znvy+rknzcyr+pbz
contact/znvy+rknzcyr+pbz
转换回mailto:mail@example.com
contact/znvy+rknzcyr+pbz
作为后备打开。由于 url,联系表将知道将电子邮件发送到哪里。http://www.alistapart.com/articles/gracefulemailobfuscation/
它确实让它变得更难了,但是有这么多非常聪明的抓取工具,它可能没有多大帮助,因为大型垃圾邮件发送者正在使用高质量的垃圾邮件工具。
如何打击垃圾邮件发送者?对于没有大脑的东西(例如计算机),使电子邮件地址不易识别。
非英语人士是您的朋友:如果您的用户群是非英语社区,请切换到使用其他语言进行混淆:team_małpa_stackoverlow_kropka_com 或 team_Affenschwanz_stackoverflow_Punkt_com 分别是波兰语和德语社区的完全可识别的电子邮件地址。一些电子邮件收割者会波兰语或德语,但很可能大多数收割者只会懂英语。
如果您不能离开英语,请改用一些描述性的短语 - 例如:“为了向我们发送消息,请在您的地址字段中写入团队,而不是输入符号 AT,而不是写下我们网站的名称!”。
要提供一个字面的答案,是的,收集混淆地址比收集标准化地址更难。真正的问题是收割机是否会付出额外的努力,以及收割机的(主要?次要?)障碍是否值得您的用户可能遇到的问题。
如果您要打乱地址或以其他方式将它们从标准表单中移出,则应避免在操作方式上保持一致——至少在同一个站点上。
例如,如果大型社区站点上的每个电子邮件地址都在标记中反转并使用 CSS 正确呈现,或标记替换(@ 变为 'at')或任何其他可预测的方法,那么收割者将只为您的网站。
可以这样想:如果只需要一行代码就可以在整个站点范围内“扰乱”它们,那么收割机只需一行代码就可以为您的站点“解扰”它们。粗略地讲。
在我看来,垃圾邮件已经成为一个如此严重的问题,并且已经移交了如此多的数据库,以至于我们无法隐藏我们的地址。相反,请考虑查看 Defensio 和 Akismet 等,以帮助分类和阻止垃圾邮件。
我有一个解决方案,好吧,更像是一个理论。问题是,机器人解析页面。他们可以得到文本。即使它是通过 Javascript 以某种复杂的方式放入页面中的。
所以,只有你CSS3 伪元素!它不会是链接,但您的电子邮件将是可见的,并且永远不会是实际文本。像这样的东西:
.email::after{ content:'myemail@gmail.com'; }
同样,这是一个理论,我不知道这些邪恶的人能走多远,但我认为这很安全。(除非他们解析 CSS 文件,我认为他们不会这样做)
它确实在一定程度上使其变得更加困难,但即使在今天,用户使用的简单方法([dot]
and [at]
)也已过时,垃圾邮件发送者可以使用简单的正则表达式轻松捕获。
使用像图像这样简单的东西对于预期的人类读者来说会很有帮助和可读性,而无需努力“解密”编码的电子邮件 ID。
联系电子邮件:
如果您仍然对配备字符识别的垃圾邮件机器人感到偏执,那么像这样的东西会很有效。
它利用视错觉作为优势,在人脑中完成计算机视觉无法轻易理解的字母。应用类似 CAPCHA 的叠加层也会有所帮助,但我怀疑你需要走那么远。