如何在仅供注册用户访问的页面上停止机器人? 90%的页面由真实用户访问,10%是机器人。
我不想在页面上放置验证码或验证方法,因为我知道我的用户不喜欢这样,而且他们也很懒。
请分享您的想法
我想让这个问题更清楚
我心中只有一件事。
当用户点击提交按钮服务器时,将生成一个随机数(使用javascript),然后将其用于隐藏字段进行验证。
您认为此解决方案是否实际适用?
答案 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,在那里您可以找到更多的内容。