【问题标题】:Does e-mail obfuscation really make automatic harvesting harder?电子邮件混淆真的让自动收割变得更加困难吗?
【发布时间】:2010-11-18 13:32:39
【问题描述】:

许多用户和论坛程序试图通过混淆来使自动电子邮件地址收集更加困难 - @ 被替换为 "at" 和 .替换为“点”,所以

 team@stackoverflow.com

现在变成了

team at stackoverflow dot com

我不是正则表达式方面的专家,我真的很好奇 - 这样的混淆真的会使自动收获变得更加困难吗?自动识别这种混淆地址真的很难吗?

【问题讨论】:

  • 80-20 :) 您将使用简单的方法阻止 80% 以上的垃圾邮件发送者,但如果某些垃圾邮件发送者决心从您的页面中删除电子邮件,则很难阻止它们。除非您的内容/页面中包含许多电子邮件地址,否则垃圾邮件发送者也不可能在特定页面上花费时间。成本效益方程...

标签: language-agnostic obfuscation email-address


【解决方案1】:

绝对!

我不久前读过this article,它显示了各种方法的有效性(以及相对程度)。 目前,反转已经反转的字符串似乎是相当不错的保护。

以下代码示例:

<style type="text/css">
   span.codedirection { unicode-bidi:bidi-override; direction: rtl; }
</style>

<p><span class="codedirection">moc.etalllit@7raboofnavlis</span></p>

将输出电子邮件,使其至少可读。

也就是说,这几乎是一场军备竞赛。但只要你领先一步,收集你的地址而不是普通的未混淆地址会更加努力。

【讨论】:

  • 不幸的是,现在它是这个问题的第一答案,这不是一个好主意。
  • 这是一个很好的观点 - 该帖子中指出的前三种方法之一是使用 ROT13 加密。也许使用一些廉价的 JS 加密是做到这一点的唯一面向未来的方法
  • 这种技术的主要缺点是:一旦复制到剪贴板,我们就会得到rtl 版本的电子邮件... 一种解决方案,使用渐进增强:superuser.com/questions/235937/…
【解决方案2】:

混淆技术与验证码属于同一类别。它们不可靠,并且比机器人更容易伤害普通用户。

Javascript 混淆似乎受到称赞,但并不是灵丹妙药:如今,自动化浏览器进行电子邮件嗅探并不难。如果它可以在浏览器中显示,它可以被收获。您甚至可以想象一个机器人正在截取浏览器窗口的屏幕截图并使用 OCR 提取地址来击败您的百万美元混淆技术。

根据您想要混淆电子邮件的位置和原因,这些技术可能很有用:

  • 限制电子邮件可见性:您可以在您的网站/论坛上向匿名用户、新用户(迄今为止几乎没有活动或帖子)隐藏电子邮件,甚至完全隐藏它们使用内置的私人消息功能替换成员之间的电子邮件联系。

  • 使用专门的垃圾邮件过滤电子邮件:您会收到垃圾邮件,但仅限于该特定地址。当您需要向任何用户公开电子邮件地址时,这是一个很好的权衡。

  • 使用联系表格:虽然机器人非常擅长填写表格,但事实证明它们太擅长填写表格了。 Hidden field techniques can filter most of the spam coming through your contact form.

【讨论】:

    【解决方案3】:

    当我看到这种类型的混淆时,我也会立即想到正则表达式。以这种方式收集“混淆”的电子邮件是小菜一碟。

    我曾经想过以这种方式发布我的电子邮件地址:

    你可以在这里给我发邮件:

    string myEmail = "";
    myEmail = myEmail
              .Append ("myname")
              .Append ("@")
              .Append ("domain")
              .Append (".")
              .Append ("com");
    

    谁没有通过,我的基本智力测试失败了。

    【讨论】:

    • 这很容易,但需要更多的努力,并且还需要为每个站点量身定制一个收割机(或者有一个正则表达式列表,但这个列表可能会变得很长,因为我见过的主题的变体)。
    • @Matthew Scharley:真的不长。只是一堆通常使用的分隔符序列本身由空格分隔。即使是十几种组合,也必然会收获很多。
    【解决方案4】:

    垃圾邮件发送者和您的用户很难识别电子邮件地址。

    来自维基百科的一篇不错的文章 Email obfuscation or address munging

    隐藏电子邮件的一种常用方法 僵尸程序和垃圾邮件发送者是创建一个 包含电子邮件地址的图像。 例如,Facebook 就是这样做的。现在, 将图像用于电子邮件本质上是 不利于可访问性,因为文本 读者将无法阅读。 但即便如此,也有几个 免费的字符识别程序 很好地解码这样的 电子邮件图片。

    来自here

    【讨论】:

    • Javascript 重写可以为 98% 的未禁用 javascript 的用户群解决此问题。
    • 是的,但是爬虫不会启用 JS,所以混淆必须是从服务器发送的渲染页面的一部分。
    【解决方案5】:

    我不确定它是否真的有助于处理垃圾邮件 - 但我学会了喜欢 Escape Encode Obfuscation 用于 mailto: tags/emails。示例标签:

    <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">&#116;&#101;&#97;&#109;&#64;&#115;&#116;&#97;&#99;&#107;&#111;&#118;&#101;&#114;&#102;&#108;&#111;&#119;&#46;&#99;&#111;&#109;</a>
    

    邮件 team@stackoverflow.com

    【讨论】:

      【解决方案6】:

      在您的前门贴上“受 ADT 保护”的标签类似于。

      这会阻止一个有才华的窃贼进入你的房子吗?当然不是。

      它会让隔壁那间没有上锁的门和窗户里放着 iPod 的房子成为更有说服力的目标吗?很有可能。

      一个简单的未混淆的电子邮件抓取工具将获得大量的电子邮件。也许一个非常简单的正则表达式来获取非常常见的混淆方法是值得的。除此之外,您会花费大量时间来尝试破译越来越少的电子邮件。

      总而言之,进行一些巧妙的混淆可能是值得的。

      为了记录,我的电子邮件多年来一直以纯文本形式出现在我的公开简历中,因为我使用的是 gmail,它有一个有效的垃圾邮件过滤器。

      【讨论】:

        【解决方案7】:

        我想知道为什么到目前为止没有人提到ALAs 解决方案。

        Roel Van Gils 在 2007 年写了一篇关于 Graceful Email Obfuscation 的文章

        Graceful Email Obfuscation 是一种简单的 JavaScript Email Obfuscation 技术,带有联系表单后备

        1. 通过将电子邮件地址转换为指向联系表单的 url 并应用 ROT13 转换来混淆电子邮件地址
        2. mailto:mail@example.comcontact/mail+example+comcontact/znvy+rknzcyr+pbz
        3. 通过javascript将contact/znvy+rknzcyr+pbz转换回mailto:mail@example.com
        4. 如果没有可用的 javascript,浏览器将打开 contact/znvy+rknzcyr+pbz 作为备用。由于网址,联系表单将知道将电子邮件发送到哪里。

        http://www.alistapart.com/articles/gracefulemailobfuscation/

        【讨论】:

          【解决方案8】:

          这确实让事情变得更难了,但是有很多非常聪明的抓取工具,它可能没有多大帮助,因为大型垃圾邮件发送者正在使用高质量的垃圾邮件工具。

          【讨论】:

          • 或者最坏的情况 - 每小时支付 10 美分的费用来手动将它们从网站上复制下来。 :)
          • @gnarf 是的,但与运行机器人的成本相比仍然非常昂贵
          【解决方案9】:

          如何打击垃圾邮件发送者?让没有大脑的东西(例如计算机)的电子邮件地址不太容易识别。

          非英语人士是您的朋友:如果您的用户群是非英语社区,请切换到使用其他语言进行混淆:team_małpa_stackoverlow_kropka_com 或 team_Affenschwanz_stackoverflow_Punkt_com 分别是波兰语和德语社区的完美识别电子邮件地址。一些电子邮件收割者会波兰语或德语,但很可能大多数收割者只会懂英语。

          如果您不能离开英语,请改用一些描述性的短语 - 例如:“为了向我们发送消息,请在您的地址字段中写入团队,而不是输入符号 AT,而不是写下我们网站的名称!”。

          【讨论】:

            【解决方案10】:

            从字面上看,是的,收集混淆地址比收集标准化地址更难。真正的问题是收割机是否会付出额外的努力,以及收割机的(主要?次要?)障碍是否值得您的用户可能遇到的问题。

            如果您要打乱地址或以其他方式将它们从标准表单中移出,您应该避免在操作上保持一致 - 至少在同一个网站上。

            例如,如果大型社区网站上的每个电子邮件地址都在标记中反转并使用 CSS 正确呈现,或标记替换(@ 变为 'at'),或任何其他可预测的方法,收割者只会写一个适合您网站的瘦适配器。

            这样想:如果只需要一行代码就可以在整个站点范围内“扰乱”它们,那么收割机只需一行代码就可以为您的站点“解扰”它们。粗略地说。

            在我看来,垃圾邮件已经成为一个如此严重的问题,并且已经移交了如此多的数据库,以至于我们无法隐藏我们的地址。相反,请考虑查看 Defensio 和 Akismet 等,以帮助分类和阻止垃圾邮件。

            【讨论】:

              【解决方案11】:

              我有一个解决方案,好吧,更像是一个理论。 问题是,机器人解析页面。他们可以得到文本。即使它被放置 通过 Javascript 以某种复杂的方式进入页面。

              所以,只有你 CSS3 伪元素!它不会是链接,但您的电子邮件将是可见的,并且永远不会是实际文本。像这样:

              .email::after{ content:'myemail@gmail.com'; }
              

              再一次,这是一个理论,我不知道这些邪恶的人能走多远,但我认为这很安全。 (除非他们解析 CSS 文件,我认为他们不会这样做)

              【讨论】:

                【解决方案12】:

                这在一定程度上确实让事情变得更加困难,但即使在今天,用户使用的简单的([dot][at])已经过时,垃圾邮件发送者可以使用简单的正则表达式轻松捕获。

                使用像图像这样简单的东西对于预期的人类读者来说会很有帮助和可读性,而无需努力“解密”编码的电子邮件 ID。

                联系邮箱:

                如果您仍然对配备字符识别的垃圾邮件机器人感到偏执,那么像这样的东西会很有效。

                它利用视觉错觉作为优势,在人脑中完成计算机视觉无法轻易理解的字母。应用类似 CAPCHA 的叠加层也会有所帮助,但我怀疑你需要走那么远。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-05-05
                  • 1970-01-01
                  • 2013-11-05
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-10-12
                  • 2012-05-11
                  • 2013-05-25
                  相关资源
                  最近更新 更多