基于评论内容的Javascript垃圾邮件预防

时间:2010-08-24 00:34:52

标签: javascript spam-prevention

请帮帮我。最近我收到了很多评论,没有以任何方式解决发布的内容,只是表明了评论的基数。

我想在发布这些评论之前使用Javascript函数在发布之前检查它们是否为垃圾邮件。

这就是我想出来的。

var postHTMLContent = "...";

function isSpamComment(comment, index)
{
    if (index == 0 && comment == 'first')
       return true;
    else
       return false;
}

它可以工作(没有误报),但是通过很多其他类似的无关评论。如果他们只是拼错'第一'或者他们的评论的基数错误就会失败。

是否有一个更通用的功能可以阻止通过它的东西?没有服务器端,没有正则表达式。

3 个答案:

答案 0 :(得分:1)

垃圾邮件发送者会绕过你的JavaScript尝试阻止它们。

您希望延迟注释以允许审核或通过某些健全性测试服务器端运行它。

如果可以的话,可以像StackOverflow那样做,并允许社区本身帮助保护系统。如果用户发布令人反感或愚蠢的内容,请让其他人将其标记为审核,或者如果他们是“权力”/“可信”用户则将其删除。

答案 1 :(得分:0)

您可以继续添加新的“禁止评论”,但您的用户将始终绕过它们。

如果你想保持垃圾邮件免费,你有两种选择,其中只有第二种是可行的:

  • 编制识别“垃圾邮件”评论的人工智能
  • 在人类通过并将其视为非垃圾邮件之前,请勿显示评论

这当然是假设垃圾邮件或噪音评论来自您的读者。如果您尝试停止自动垃圾邮件,那么技术上可行,请参阅CAPTCHA s。

答案 2 :(得分:0)

对于这个问题,真正的JavaScript解决方案不是一个很好的答案。如果有人想发布他们的“第一个”评论,他们只能禁用javascript,如果你没有任何服务器端验证,垃圾邮件仍然会到达网站。 javascript的第二个不好的原因是用户可以看到你认为垃圾邮件的哪些词,只是自我感知它们(首先......等等)。话虽如此,如果有许多不同的方法可以进行更多的启发式垃圾邮件检测,我将在下面详述:

黑名单 - 有点像你的例子,如果你这样做:

if(comment.indexOf(' bad phrase here ') !== false) { return true; }

你可以弄清楚评论是否包含一个术语......不仅仅等于整个内容。老实说,没有正则表达式条款真的会伤害到你在内容检测方面所做的事情,但这至少应该让你在用户输入的内容中获得基本短语。这不是万无一失的,因为你最终会遇到像'经典'这样的词语误报的情况:)

评论篇幅 - 考虑一下这样一个事实:任何少于50个字符左右的东西可能都不具有建设性......这不会阻止人们“首先!!!!!!!!! !!!!!!!!!!!!!!!!!! ...你明白了“破坏过滤器的想法。绝对修剪用户输入周围的空白区域,以确保它更安全。

这些只是一些基本的想法,但老实说,在客户端做这件事是没有意义的。如果服务器不愿意支持客户的规则,巨魔将成为巨魔并且总是试图找到你的脚本。

话虽如此。评论批准/审核是确保您希望在您的网站上显示的内容的唯一确定的方法,并且诚实地说,当您尝试在线参与对话时,这不是一个非常好的用户体验。它真的应该只用在你需要保护人们免受内容保护的环境中(例如,如果你正在开发一些销售给孩子的产品页面)。