防止垃圾邮件

时间:2010-07-11 17:13:16

标签: php spam bots

如何在仅供注册用户访问的页面上停止机器人? 90%的页面由真实用户访问,10%是机器人。

我不想在页面上放置验证码或验证方法,因为我知道我的用户不喜欢这样,而且他们也很懒。

请分享您的想法

修改

我想让这个问题更清楚

  1. 注册页面有验证码
  2. 我的网站允许用户提交内容,换句话说就是其UGC网站。垃圾邮件发送者会复制其他用户的内容并将其放在我的网站上,因此无法通过askimet阻止他们。
  3. 可能的解决方案

    我心中只有一件事。

    当用户点击提交按钮服务器时,将生成一个随机数(使用javascript),然后将其用于隐藏字段进行验证。

    您认为此解决方案是否实际适用?

6 个答案:

答案 0 :(得分:4)

我喜欢使用的一个技巧是为我的表单添加一个隐藏的输入字段,真正的用户永远不会看到或改变,但机器人会盲目地填写。

这样的东西
<input name="spam_stopper" value="DO NOT CHANGE THIS" style="display:none;"/>

然后,在您的表单处理代码中,确保spam_stopper的值为“请勿更改此内容”。

智能机器人可能会忽略display:none,但这不太可能 - 许多人忽略了<input type="hidden">,所以我不会使用它......

答案 1 :(得分:3)

鉴于您已排除验证码(不是100%防弹),您需要检查您的用户输入和允许或禁止发布的内容。

这项任务并不容易,因此我建议您将注意力转向现成的解决方案,例如Akismet

答案 2 :(得分:0)

由于这些机器人不遵循robots.txt,您可以随时使用.htaccess阻止它们,但是由于机器人/垃圾邮件发送者经常更改IP,因此需要进行大量工作(需要维护阻止列表)。您还有可能阻止真正的用户。

您可以查看Block Bad Bots作为示例。

它可能很有用,但阻止所有这些操作往往太多了VS让我们说CAPTCHA或类似的系统。

答案 3 :(得分:0)

首先,您是否在注册时进行人工验证?这是您应该采取的第一步,以防止您的网站上的垃圾邮件。验证码是非常有效的,即使你不想让用户每次在网站上发帖回答验证码,让他们填写一个来创建一个帐户是完全合理的。它只需要2-3秒,而且只需要做一次。

如果您不愿意这样做,只要您的网站在搜索引擎中编入索引,您就不得不忍受垃圾邮件。

答案 4 :(得分:0)

Prevent没有理清垃圾邮件

答案 5 :(得分:0)

是的,验证码不是用户友好的。您可以使用一些技术来防止垃圾邮件而无需使用CAPTCHA,其中一些已经被其他人提及:

  • 更智能的服务器端验证:这是特定于表格的,但是例如,在与我们联系表格中,您可以过滤冗长的消息或包含很多URL的消息。或者,如果您希望收到电子邮件,则可以ping域。

  • 黑名单机制:通过IP或黑名单数据库中的短语标记垃圾邮件发送者。如果您使用的是PHP,那么像Guard这样的简单库可能会有所帮助

  • 蜜罐:已在接受的答案中提及

  • 基于时间的保护:要检查发布请求的时间超过X秒

  • 基于得分的Google reCAPTCHA v3:与前一个版本相比,该版本已完全重新设计,可以检测出后台的垃圾邮件。

我最近写了一个post,在那里您可以找到更多的内容。