it-swarm.cn

如何在网站上列出“联系我们”的电子邮件地址,同时降低垃圾邮件的可能性?

在网站上列出“联系我们”电子邮件地址的好方法是什么,同时降低垃圾邮件的可能性?

将电子邮件地址放在图像中是最好的技术,还是其他人?

70
Chris W. Rea

我通过一次性Gmail帐户传递所有联系表单,该帐户将邮件转发到真实的电子邮件地址。它是免费的,很容易,Gmail的垃圾邮件检测是一流的。

制作网站时不需要额外的工作,如果有任何问题,只需登录Gmail帐户并将其标记为垃圾邮件即可。

然后,您可以将Gmail收件箱设置为自动存档已转发的所有内容,如果您不希望保留其他副本,则可以将其删除。

54
Callan
30
Jason

我的答案是不这样做。现代电子邮件系统,如GMail和Barracuda反垃圾邮件设备,可以很好地过滤垃圾邮件。您和访问者之间的任何障碍意味着较低的参与度,并且取决于网站的类型,可能会导致销售损失。

如果您担心没有安装本机邮件客户端的用户,或者没有正确设置mailto:handler的用户,请将联系我们页面同时包含链接的电子邮件地址和表单(没有CAPTCHA)和让用户选择。

垃圾邮件很烦人,但这是我们的负担,而不是我们的用户。

20
JasonBirch

使用自然语言拼出电子邮件地址...

例如:

thatguy at gmail dot com

你会感到惊讶的是,编写一个可以区分自然语言的机器人与编写只搜索@符号和正则地址的机器人相比要困难得多。

它不是100%万无一失,但它并不比混淆更糟糕,它不会疏远视觉障碍用户和/或禁用JavaScript的用户。

更新: 以下是此技术的一个示例

更新2 :

事实证明,有人已经对此进行过研究并在网上发布。请参阅 超级用户帖子描述结果原始文章

18
Evan Plaice

就个人而言,我不会在网站上显示电子邮件地址,而是有一个易于使用,可访问的联系我们表格,以及电子邮件来自谁的指示;允许用户发送网站所有者和运营商的电子邮件,而不会暴露电子邮件地址或不得不跳过各种JavaScript箍等。

如果您的垃圾邮件过滤不那么复杂,这通常是最好的方法。

12
Zhaph - Ben Duguid

使用css隐藏真实文本中的一些噪音(只是在一行中,我格式化它以更好地说明技术):

u<span class="spam">noise</span>ser
@<span class="spam">noise</span>
example<span class="spam">noise</span>
.com

然后使用这个小css-snippet:

.spam { display: none; }

如果你需要有效的mailto:内容,那么你必须通过dom中的jscript创建它,看看其他一些答案。但我不是那个大朋友。

9
akira

我所做的是将电子邮件地址写成单词,包含在span标签中:<span class="email">joe dot blow at gmail dot com</span>。然后运行页面级脚本,抓取任何此类跨度并用构造的电子邮件链接替换每个跨度。它可能不是太模糊,但我没有抱怨。此外,如果禁用JavaScript,用户仍然可以读取实际的跨度文本。

8
Grant Palin

最佳解决方案:使用垃圾邮件过滤器

我实际上使用Gmail处理我的POP3电子邮件帐户,因为在不同的计算机上检查电子邮件要容易得多。 Gmail的垃圾邮件过滤器是世界上最好的。

因此,您只需将[email protected]显示为您的电子邮件地址,然后忘记垃圾邮件。

8
DisgruntledGoat

使用像&#649&#7854&#7575这样的html编码,浏览器会将其呈现为“abc”

7
ilhan

一个相当不错但不完美的方法是通过javascript创建电子邮件地址。大多数寻找电子邮件的蜘蛛都不会执行javascript,因此找不到可读的电子邮件地址。

这里 只是一个例子,它是如何完成的。

5
txwikinger

使用图形库(如 PHP 或类似的 Gd )动态创建包含电子邮件地址的.png图像。

与我的其他答案相比 此解决方案对用户来说不那么烦人(但不透明;他们无法复制和粘贴它但必须从头开始重新输入)但安全性较低:计算机可能会读取未经模糊处理的图像。

但总的来说,我认为这是一个很好的妥协;它将阻止绝大多数垃圾邮件机器人。

5
Thomas Bonini

我使用一个简单的Python脚本将电子邮件地址转换为mailto链接,其中电子邮件地址是HTML实体编码的。这对用户来说是完全透明的,但似乎使内容模糊不清以击败大多数简单的收获机器人。

#! /usr/bin/env python3.0

def entity_encode(text):
    out = ""
    ba = text.encode()
    for i in range(len(ba)):
        out = out + "&#x{0:02x};".format (ba[i])
    return out

def print_email_link(address) :
        print('<!-- {0} -->'.format(address))
        print('<a href="{0}{1}">{1}</a>'.format(entity_encode("mailto:"), entity_encode(address)))


print_email_link("[email protected]")

这给出了输出

<!-- [email protected] -->
<a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#x74;&#x65;&#x73;&#x74;&#x31;&#x32;&#x33;&#x40;&#x65;&#x78;&#x61;&#x6d;&#x70;&#x6c;&#x65;&#x2e;&#x63;&#x6f;&#x6d;">&#x74;&#x65;&#x73;&#x74;&#x31;&#x32;&#x33;&#x40;&#x65;&#x78;&#x61;&#x6d;&#x70;&#x6c;&#x65;&#x2e;&#x63;&#x6f;&#x6d;</a>

当结果粘贴到网页中时,浏览器将文本“[email protected]”显示为“mailto:[email protected]”的超线,因此最终用户和包含地址一样方便在明确。但它似乎打败了许多收获机器人。

显然,一旦我将模糊的电子邮件链接粘贴到网页的HTML源中的适当位置,我就会删除带有普通ASCII版本地址的注释。

5
Stephen C. Steel

要求用户在向他们显示电子邮件地址之前解析CAPTCHA(或者如果您有联系表单,则在让用户提交之前)。

这对用户来说是最烦人的,但绝对是最有效的。

4
Thomas Bonini

我是混淆的粉丝,电子邮件地址基本上是用Javascript渲染的。

例如,[email protected]可以呈现为

<a href="javascript:location='mailto:\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d';void 0">
<script type="text/javascript">document.write('\u006d\u0079\u0040\u0065\u006d\u0061\u0069\u006c\u002e\u0063\u006f\u006d')</script></a>

就用户而言,它是普通文本,可以复制和粘贴。另一方面,机器人将有更难的时间。

这是 混淆器 我用过的。

3
Paperjam

单程:

  <script language="javascript"> 
  <!--
  var name = "user"
  var Host1 = "gm"
  var Host2 = "ail.com"
  var addr =
  document.write("<a href=mai" + "lto:" + 
    name + "&#64;" + Host1 + Host2 +
    ">" + name + "&#64;" + Host1 + Host2 + "</a>")
  //-->
 </script> 

您可以在 <noscript> 标签中写下“解密我的电子邮件:用户在com dot gmail”,以便关闭javascript的用户。这样您就可以获得超链接功能。你很有可能让spamers远离你的地址,关闭javascript的人或只有文字的浏览器仍然可以获得你的电子邮件地址。

2
Adam

如果你让很多人联系你,那么从长远来看,世界上所有的混淆技术都无济于事。所有这一切都需要有人给你留言,然后被一些恶意软件感染,这些恶意软件扫描他们的收件箱/发送的邮件/地址簿/无论有效地址是什么,你的地址都是从列表传递给列表的 [我甚至有联系人愚蠢到可以将电子邮件地址和密码放在网上表格中,因为最愚蠢的原因,你可能也有,最近的一个是提供计算某人的“电子邮件占星图和预测”的网站通过邀请同一网站立即向所有傻瓜的联系人发送垃圾邮件,<deity>只知道我们现在正在使用的其他列表]

我的公共网站上的地址不仅仅是一个丢弃的地址 - 它位于一个丢弃的子域中。如果我开始在该子域上收到垃圾邮件,我会创建一个新的垃圾邮件,更新列出我的联系人详细信息的网站,不久之后我会从DNS记录中完全删除子域。如果您这样做,或任何其他丢弃地址技术,请确保您明确(在任何页面列出您使用该地址发送的任何邮件的地址和页脚),该地址将来会改变,如果人们可以他们应该检查以确保他们有正确的地址。

这样做的好处就是只是一个简单的地址供人们点击(如果他们的浏览器+邮件程序以这种方式链接)或复制+粘贴,而不需要使用他们的大脑来编辑地址(我总是惊讶于多少聪明而敏锐的人无法做到这一点。)这也意味着我的邮件服务器不会花费时间在过期的子域中弹出发送到“随机”地址(aaron @,adam @,amy01 @,...)的邮件。它也不会混淆盲人使用的屏幕阅读器或选址不佳的屏幕阅读器。

我还没有尝试过的另一个选择是使用AJAX请求来读取电子邮件地址和其他详细信息。这可能比基于document.write的混淆稍微有效,但会在Web服务器上增加一些额外的负载。

我过去习惯使用“联系我/我们”表单,但我发现他们发送垃圾邮件的次数有时甚至超过纯文本电子邮件地址 - 有时是脚本试图使用表单在某处创建帐户而不是用它作为联系表格。

2
David Spillett

没办法,何塞! - 是的,何塞!

绝对没有办法“停止”a href="mailto:"电子邮件地址的收获。人们一直认为使用JavaScript是防止大多数收获机器人的好方法,但现在机器人非常善于击败这种方法。他们还可以击败包含电子邮件地址的图像,就像使用decaptcha软件击败验证码一样。

更好的方法!

更好的方法是使用信誉良好的邮件服务,提供良好的垃圾邮件拦截。 Google G SuiteMicrosoft Office 365 使用与市场上任何软件无法比拟的算法,主要是因为他们每天收到数百万封电子邮件,并且能够“学习”垃圾邮件发送者甚至在他们尝试通过电子邮件发送给你.

事实上,一年前 谷歌称它的机器学习技术现在阻止99.9%的Gmail垃圾邮件和网络钓鱼邮件 ,在plesk/cpanel后面运行的本地Microsoft Exchange和邮件服务器无法与这种保护竞争。

总结

通过使用能够进行AI机器学习的信誉良好的邮件服务来阻止垃圾邮件。您还可以通过阻止垃圾邮件发送者使用Cloudflare进一步访问您的网站,以便在他们到达您的网站之前检测到大多数攻击性机器人。

1
Simon Hayter

如果你有一个机器人过滤器(使用1x1px,子网,已知机器人,jscript检测,http引用和浏览器代理),你可以根本不显示它的机器人信息。

PHP解决方案:

<?
if (!isbot()) {
  echo 'mailto:'.$email_address_for_real_people;
  }
  else {
  echo 'mailto:[email protected]'.$bots_domain_address;
  }
?>
1
Talvi Watia

我发现最简单的方法是使用一个有默认地址的联系表格,但也可以让用户选择沟通的对象(营销,销售,技术支持等)。然后,根据下拉列表的值,发布的表单数据由服务器发送到适当的电子邮件地址。

从数据库表中运行此联系人列表,以便您可以轻松地更新/添加条目到下拉列表。这样,您就不会向广泛的垃圾邮件机器人暴露任何类型的地址,并且仍然可以为您的用户提供发送反馈的绝佳方式。

1
Milner

使用 Zoho Creator 设置联系表格。您收到的反馈将存储在您可以在线访问的数据库中,并且还会通过电子邮件发送给您。

0
mvark

我使用 PHP函数 生成一些javascript来在运行时输出脚本。注意你没有需要PHP在运行时生成JS,你可以在本地生成一次JS然后包含页面中的静态JS。

您还可以使用下面此代码段的链接功能自动模糊给定HTML中的电子邮件地址(其中$ processedContent是HTML):

 $emailMatches = array();
 $matchCount = preg_match_all('/(?:[a-zA-Z0-9_\.\-])+\@(?:(?:[a-zA-Z0-9\-])+\.)+(?:[a-zA-Z0-9]{2,4})+/', $processedContent, $emailMatches);

 if($matchCount > 0) {
    $emailMatches = $emailMatches[0];

    foreach($emailMatches as $email) {
    $replacement = createJSMailLink($email);

    $processedContent = str_replace($email, createJSMailLink($email), $processedContent);
 }
}
0
iloveitaly

我做的一件事是使用来自 http://www.stopforumspam.com 的API来检查垃圾邮件发送者。请随时与我联系以获取详细信息,我将很乐意为您提供帮助!

巴德曼兹

Manz Web Designs,LLC

0
Bud

多年来我一直使用[email protected]。用户通常知道足以删除“无垃圾邮件”。

否则,我只使用带有“验证码”的联系表格,并直接从网站发送邮件。

0
Gary.Ray

这是另一个电子邮件混淆器: Enkoder ,来自Dan Benjamin。它既是在线应用程序,也是Mac的独立应用程序。

0
Alex

如果你不介意使用javascript,你可以使用像ROT13这样的东西来混淆电子邮件地址。例如看到这个:
http://scott.yang.id.au/2003/06/obfuscate-email-address-with-javascript-rot13/

就个人而言,我更喜欢使用联系我们表格而不用担心垃圾邮件,但当然这一切都取决于您的要求。

0
Mee

如果您使用的是联系表单,则可以使用随机名称作为输入的有趣技巧。

例如,我创建一个联系表单,而不是使用电子邮件作为输入,我会使用liame,与名称(eman)和评论(tnemmoc)相同。机器人实际上并不知道这些输入是做什么的,所以他们只是忽视它们。

0
dkuntz2

我已经设置了Google文档表单/电子表格。我可以每天检查一次表单条目,我的收件箱没有被淹没。

0
Sri