【问题标题】:What's the best way to present an e-mail address on my website without being attacked by spammers? [closed]在我的网站上显示电子邮件地址而不会受到垃圾邮件发送者攻击的最佳方式是什么? [关闭]
【发布时间】:2011-06-15 05:21:06
【问题描述】:

在我的网站上显示电子邮件地址而不会受到垃圾邮件发送者攻击的最佳方式是什么?

foo at fooland dot com 的方法并不是我想要的。我需要以普通人可以理解的方式呈现它。

编辑

显示的电子邮件是动态的

【问题讨论】:

  • @Ciwee:你使用的是什么服务器技术?
  • @richard ev: ASP.NET 和 jQuery
  • 你在和什么样的“正常人”打交道?我见过的每个人都能读懂“at”和“dot”之类的词。
  • 由于超级用户问题的受欢迎程度,这也将很快在 superuser blog 上发布。

标签: html webforms spam-prevention


【解决方案1】:

有一个recent answer on superuser.com 通过比较一系列常用方法来解决这个确切的问题。

【讨论】:

    【解决方案2】:
    【解决方案3】:

    使用带有您的电子邮件地址的简单图片怎么样?

    动态生成图像的一种技术可能是将 ASP.NET MVC 控制器添加到您的 WebForms 项目中,并使用返回 FileResult 的操作方法,其中包含包含电子邮件地址的动态生成图像。

    public class DynamicImageController : System.Web.Mvc.Controller
    {
        public FileResult Email(int id)
        {
            // TODO: Code that uses the ID value to retrieve the
            // email address for this customer (for example)
        }
    }
    

    在您的网络表单上,您可以使用图像服务器控件,并从后面的代码中相应地设置ImageUrl(类似于"/DynamicImage/Email/" + customerId)。

    此页面有一个示例说明如何使用FileResult 呈现图像(本场景中的图表)

    http://www.codeproject.com/KB/aspnet/MvcChartControlFileResult.aspx

    【讨论】:

    • 这是一个解决方案,但我必须动态生成图像,因为呈现的电子邮件是动态的。如果我要生成,那么我更喜欢 javascript 方法。
    • +1 简单有效。
    • 缺点是对需要使用地址的人来说很麻烦。
    • 是的,不能点击它,不能复制它.. 作为用户,这将远远超过我所需的最大努力阈值,除非我真的 打算给你发电子邮件。
    【解决方案4】:

    我开始使用的是 CSS 代码重定向:

    <span style="unicode-bidi:bidi-override; direction: rtl;">moc.niamodruoy@uoy</span>
    

    您可以使用某种类型的 String.Reverse 功能(取决于您使用的语言)在页面上插入动态电子邮件地址。

    这是最简单有效的方法之一。在这里查看其他一些:https://superuser.com/questions/235937/does-email-address-obfuscation-actually-work

    【讨论】:

      【解决方案5】:

      基于图像的方法的缺点是它不能被用户复制粘贴。

      我认为呈现电子邮件的某种 JavaScript 会很好。如果它足够棘手,机器人可能无法(或不愿意)找到它。例如,假设您从图像开始(适用于所有人)。然后,如果用户点击它,它会通过一些 JavaScript 魔术变成可复制粘贴的文本。

      另一个想法是在页面加载 2 秒后用文本替换图像。如果机器人很着急(他们通常吗?)他们只会看到图像。此外,如果用户很快并尝试在替换之前选择图像,JavaScript 可以立即触发并用正确的文本替换它。使用鼠标悬停或单击事件或类似事件。

      【讨论】:

      • Javascript 是我想要的解决方案。我愿意将电子邮件呈现为 foo-at-fooland-dot-com 并在其下方放置一个 javascript 块,将其转换为 foo@fooland.com。它可以复制粘贴,看起来不错。
      • @Ciwee:虽然我的解决方案与您的不同,但我认为显示 name-at-domain-dot-com 并将其动态更改为普通(可点击)mailto 链接是个好主意JavaScript。感谢您的启发,我一定会为我自己的网站编写这样的脚本 :)
      【解决方案6】:

      Javascript 编码怎么样?可以使用这样的 PHP 函数:

      function encodeEmail ($email) {
        $ret = '';
        $a = '<a href="mailto:' . $email . '">' . $email . '</a>';
        $i = 0;
        $c = substr($a, $i, 1);
        while ($c != FALSE) {
          $ret .= '%'.dechex(ord($c));
          $c = substr ($a, ++$i, 1); 
        }
        return "<script type='text/javascript'>document.write(unescape('$ret'));</script>";
      }
      

      (代码可能需要一些更正,因为我写的时候没有检查错误)。

      【讨论】:

        【解决方案7】:
        <a href="mailto:email@example.org">email@example.org</a>
        

        说真的,在我看来,这些解决方案都不值得为您的用户带来额外的麻烦。

        如今垃圾邮件过滤器非常好(我的 gmail 中几乎没有收到垃圾邮件,而且我总是直接使用我的电子邮件地址),如果您想吸引受众,您的首要任务应该是他们的舒适度,而不是您的舒适度。

        也许这是一个主观问题:)

        【讨论】:

        • 我同意。我的电子邮件地址已在我的网页、我的域的联系数据以及许多网站上发布了至少 5 年,而且我没有一天必须标记超过 2 或 3 条垃圾邮件。我的收入取决于这些联系人,所以我不会冒险。
        【解决方案8】:

        如果您不介意用户无法复制它,我会说一种图像方法。

        您可以使用 JavaScript 从您喜欢的一些随机算法构建地址。你也可以把它放在alert() 中,它仍然可以复制,但你的电子邮件地址永远不会触及 DOM。

        【讨论】:

          【解决方案9】:

          更好的方法是像谷歌群组一样,他们不会向你显示实际的电子邮件 ID,只是开始,但是,如果你是人类,你可以使用验证码方法来验证访问者是人类或机器人。 此外,您可以在系统中嵌入声音文件或基于 Flash 的显示器,以显示您的电子邮件 ID。你可以创建一些actionscript flash,它看起来不错,很有吸引力,也能达到目的。 无论是声音还是闪光,都是我觉得好看的。您甚至可以创建一个动态图像,每次用户重新加载页面时它都会不断变化。 祝你好运!

          【讨论】:

            【解决方案10】:

            有人提到使用图片,这是关于 MakeUseOf 的一篇文章,该文章链接到一个网站,该网站将为您构建这些类型的图片...

            http://www.makeuseof.com/dir/hidetext-easily-convert-text-email-addresses-images/

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-01-17
              • 2014-05-25
              • 1970-01-01
              • 2014-06-27
              • 1970-01-01
              • 2015-03-28
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多