垃圾邮件预防/减少 - 联系表?

IT技术 javascript html spam-prevention
2021-03-01 20:10:40

我想在我的网站上添加一个简单的联系表单,以便客户可以轻松地与我联系。

<form>
    NAME
    <input type='text' name='name' />
    EMAIL
    <input type='text' name='email' />
    MESSAGE
    <textarea name='message' />
    <input type='submit' />
</form>

此表格只会将客户消息通过电子邮件发送给我。

但是,我也想减少(不是,我不是说消除,但至少是减少),垃圾邮件。

我已经研究过使用 CAPTCHA,但最终,我不想因为必须填写额外信息而妨碍客户。

我可以在我的联系表单中使用任何简单的垃圾邮件预防/减少方法的想法。

6个回答

我一直在使用的一个非常简单的技巧是这样的:提供一个对人类用户隐藏的文本字段style="display: none",但使用诱人的名称,如email. 大多数机器人会在这个领域填写一些东西,但人类看不到它,所以他们不会。在服务器上,只需确保该字段为空,否则将提交视为垃圾邮件。

这是一个好主意!或者,如果机器人足够聪明,可以忽略此类标签,请display:none在 javascript 中动态设置,并添加一条评论,要求用户在 javascript 失败的情况下不要填写该字段。
2021-04-23 20:10:40
我喜欢这个主意。验证码是一种痛苦的脖子。垃圾邮件预防应该是检测机器人,而不是证明用户是人类。
2021-04-29 20:10:40
好点子。您的想法和 Graza 的组合可能就是这样。
2021-05-10 20:10:40
正如我们所说,我正在构建一个机器人来整合这个设计......邪恶的笑声
2021-05-11 20:10:40
好主意!但是现在你把它给我们,机器人就会知道:)
2021-05-20 20:10:40

如果你想做一个完全前端的解决方案,我最近通过将表单操作属性留空并通过 $(document).ready 函数填充它而取得了成功。大多数垃圾邮件程序使用禁用了 javascript 的浏览器,或者正在寻找隐藏字段以避免检测。

例子:

您的 html 将是:

<form method="POST" action="" id="contact-form">

在该页面的任何地方,您都可以使用它来填充它。

<script>
        $(document).ready(function(){
                 $("#contact-form").attr("action", "/yourMailScript.cgi");
        });
</script>

没有 javascript 的机器人浏览器将不会获得表单操作,并且在提交时将获得 404。任何使用普通浏览器的人(除非他们出于偏执的原因禁用了 JS)都会得到正常的行为。

我使用类似的技术来替换动作值。默认情况下,转到蜜罐类型的地方。但是我使用点击/聚焦事件来更改操作值。我认为机器人很难模拟这一点。请看我下面的回答。
2021-05-15 20:10:40

除了 CAPTCHA 类型的用户确认之外,唯一的(客户端)方式是动态编写整个内容。许多(但不是全部)机器人可能会忽略动态内容。例如

document.write("<"+"form>"
  +" NAME "
  +" <"+"input type='text' name='name' /> "
  +"EMAIL "
  +"<"+"input type='text' name='email' /> "
  +"MESSAGE "
  +"<"+"textarea name='message' /> "
  +"<"+"input type='submit' /> "
+"<\/form> ");
我做了一个非常相似的事情,我只是在页面加载时动态设置电子邮件地址。电子邮件不在单个字符串中,即:"my"+"email@"+domain+".com"
2021-05-06 20:10:40
一些机器人会处理它,但我猜任何为了速度而编写机器人的人都会尝试限制脚本处理的数量,所以很多人会跳过它。@Tomas - 虽然并非所有客户都理解这个问题,但同意这个问题。这种方法完全打破了优雅降级或渐进增强。@Rob - 我做类似的事情,但通常在不同的行上,并使用@十六进制,例如m="my";m+="email\x40";m+="dom";m+="ain.c";m+="om";- 一个偏执的解决方案,但我希望它能够欺骗所有机器人。然而,再次 - 它打破了优雅的退化。Wim 的解决方案看起来很棒
2021-05-13 20:10:40
@Alysko:真的吗?我不这么认为。您是说所有机器人都完全理解和解释 Javascript?唯一的问题是,并非所有客户都理解 Javascript...
2021-05-21 20:10:40

使用 Google 或 Yahoo 邮件帐户。他们有很好的反垃圾邮件过滤器。

但是,如果一个站点在多个机器人下运行,则有可能关闭该站点。这不是使用 yahoo 或 gmail 防止垃圾邮件的解决方案。您必须从您的网站端解决它。
2021-04-24 20:10:40
+1; 或任何其他收件箱垃圾邮件过滤。没有理由用 CAPTCHA 或 html-tricks 给用户浏览器带来负担。这是收件箱问题。
2021-05-01 20:10:40
这是个好主意,gmail 支持自动转发电子邮件,不是吗?这可以很好地工作。也可能是最简单的实施方式,并且您可能会因验证码受挫而失去潜在客户。
2021-05-11 20:10:40

隐藏字段、愚蠢的问题(什么是 3+4?)等,在阻止表单上的垃圾邮件方面不是很有效,恕我直言。

几年前我对此进行了研究,并提出了一个我称之为“FormSpammerTrap”的解决方案。它使用 JavaScript 代码“观察”所需字段的焦点/点击。自动化流程,除非针对特定站点高度定制(这比垃圾邮件所有者想要花费的时间更长),否则无法“聚焦/点击”必填字段。(我还使用了其他一些技术。)

我在www.FormSpammerTrap.com站点上有一个免费的解决方案那里有一个表格,垃圾邮件机器人可以尝试发送垃圾邮件……但他们已经超过 3 年没有这样做了。欢迎您尝试一下……它都是开源的,因此您可以看到它是如何工作的。(而且,如果你使用表格,我不会收集你的电子邮件。我回复一次,然后删除你的电子邮件。)

我的技术在阻止垃圾邮件机器人方面更有效,恕我直言。他们无法在该网站上对联系表格进行垃圾邮件发送。

**于 2018 年 7 月 12 日添加 ** 诀窍是添加一个点击/聚焦事件,将动作参数更改为实际处理页面。否则,我使用的默认值是蜜罐类型的站点。我认为垃圾邮件发送者很难模拟这些事件,尽管可能是可能的。该技术阻止了许多机器人垃圾邮件发送者。

而且,在该站点上使用该技术几年后,该表单还没有被机器人发送垃圾邮件。(我定义了一个机器人垃圾邮件发送者,它通过攻击发送多次提交,而不仅仅是一次提交。)

为我工作。

好吧,也许那个页面上的计数器可能更准确。但我还没有想出一种方法来计算我实际抓到的那些。但是......这个过程有效。多年来,FormSpammerTrap.com 网站上没有自动发送垃圾邮件。并且有很多人使用该解决方案 - 这是免费的。你的评论有点挑剔......关于 FormSpammerTrap 解决方案的评论更合适,恕我直言。你为什么不自己试试我的解决方案?它可以在五分钟内实施。
2021-05-04 20:10:40
“今天捕获的垃圾邮件发送者”下的数量每刷新一次就会增加 1 个单位。我不认为这是激发信任的好方法。
2021-05-12 20:10:40