5

是的,我知道有人问过这个问题并回答了这个问题,但是我对此有一些具体的问题,我觉得在那个线程上不清楚,我也不想在另一个线程的洗牌中迷失方向。

以前的帖子说,像 Facebook 那样将电子邮件地址呈现为图像对于商业/专业网站来说是矫枉过正和不专业的用户体验。似乎普遍的共识是使用 JavaScript document.write 解决方案,使用 html 实体或其他方法来分解和/或使简单的机器人无法读取字符串。我正在构建的应用程序甚至不需要“mailto:”功能,我只需要显示电子邮件地址。此外,这是一个商业 Web 应用程序,因此它需要看起来/行为尽可能专业。以下是我的问题:

  1. 如果我走 document.write 路线并传递每个字符的 html 实体版本,是否没有足够复杂的网络爬虫来执行 javascript 并拉出呈现的文本?或者这被认为是最佳实践并且完全(或几乎完全)垃圾邮件发送者证明?

  2. 图像解决方案有什么不专业的?如果 Facebook 是世界上流量最高的应用程序之一,而且根本不是由业余爱好者运行的,为什么他们的方法在关于这个主题的另一个线程中完全被驳回?

  3. 如果您的回答(如在另一个线程中)是不为这个问题烦恼并让用户的垃圾邮件过滤器完成所有工作,请解释您为什么会有这种感觉。我们正在展示用户提供给我们的电子邮件地址,我觉得有责任尽我所能保护他们。如果您认为这是不必要的,请解释原因。

谢谢。

4

3 回答 3

4

Javascript 目前是一个很好的解决方案的原因有很多(这可能会随着环境的发展而改变)。

  • Javascript 混淆是目前更好的鼠标陷阱
  • 你只需要超越其他人。只要有低垂的果实,垃圾邮件发送者就会去追求那些。因此,除非每个人都开始转向 javascript,否则至少现在你还可以
  • 大多数垃圾邮件发送者使用基于 http 的脚本,这些脚本使用正则表达式进行 GET 和解析。使用 javascript 引擎进行解析当然是可能的,但会减慢速度

关于 facebook 解决方案,我不认为它不专业,但我可以清楚地看到为什么纯粹主义者可能不同意。

  • 它打破了可访问性标准(不能被浏览器、语音阅读器解析或被点击。
  • 它破坏了语义结构(它是图像,不再是 mailto 链接)
  • 它打破了表现层。如果您增加浏览器默认字体大小或使用高对比度自定义 CSS,它将不适用于电子邮件。
于 2009-04-08T13:46:24.977 回答
4
  1. 它不是垃圾邮件发送者证明。如果有人查看您网站的代码并确定您用于电子邮件地址的模式,则可以编写特定代码来尝试破译它。

  2. 我不知道我会说它不专业,但它阻止了复制和粘贴功能,这很重要。使用图像,您根本无法获得该功能。如果您想将相对复杂的电子邮件地址复制到 Outlook 中的通讯录中怎么办?您必须求助于打字,这很容易出错。

  3. 将责任转移给用户垃圾邮件过滤器确实是一个糟糕的反应。虽然我认为用户应该努力防范垃圾邮件,但这并不能免除发布地址的人的责任。

为此,试图以绝对安全的方式做到这一点几乎是不可能的。做到这一点的唯一方法是拥有一个共享密码,代码使用该密码来破译编码的电子邮件地址。这样做的问题是,因为 javascript 是在客户端解释的,所以没有什么可以对爬虫保密。

现在电子邮件地址的编码器通常可以工作,因为大多数电子邮件机器人收割者不会关注专门为每个站点进行编码。他们将尝试使用最小的算法来获得最大的结果(否则回报不值得)。因此,简单的编码器将击败大多数机器人。但是,如果有人真的想查看您网站上的电子邮件,那么他们也可以而且可能也很容易,因为编写地址的代码是公开的。

考虑到所有这些,Facebook 走图像路线是有道理的。因为他们可以更改图像以使 OCR 几乎不可能,所以他们几乎可以保证电子邮件地址不会被收集。鉴于它们可能是世界上最大的电子邮件地址存储库之一,可以说它们比我们任何人都承担着更重的负担,虽然不方便,但为了确保其庞大用户群的安全和隐私,它们被迫走这条路.

于 2009-04-08T13:52:08.957 回答
3

这是一篇不错的博客文章,比较了一些方法和基准。

http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/

于 2009-04-08T19:08:31.287 回答