使用JavaScript过滤垃圾邮件的最佳方法是什么?

Chr*_*nte 6 javascript greasemonkey artificial-intelligence spam-prevention spam

我最近受到了启发,用JavaScript(Greasemonkey风格)编写垃圾邮件过滤器,用于我使用的几个易于垃圾邮件的网站(特别是在评论中).当我考虑如何解决这个问题时,我意识到我有几个选择,每个选项都有优点/缺点.我对这个问题的目标是扩展我创建的列表,并希望确定使用JavaScript进行客户端垃圾邮件过滤的最佳方式.

至于什么使垃圾邮件过滤器"最好",我会说这些是标准:

  • 最准确的
  • 最不容易受到攻击
  • 最快的
  • 最透明的

另请注意,我正在尝试使用Greasemonkey Userscripts过滤已经存在于非我的网站上的内容.换句话说,我无法阻止垃圾邮件; 我只能过滤它.

到目前为止,我的尝试是编制各种方法的列表及其缺点和好处:


基于规则的过滤器:

它的作用:通过将点值分配给不同的标准(即全部大写,所有非字母数字等)来"消息"消息.根据分数,丢弃或保留消息.

优点:

  • 易于实施
  • 大多透明

不足之处:

  • 透明 - 通常很容易对代码进行反向工程以发现规则,从而制作出不会被拾取的消息
  • 很难平衡点值(误报)
  • 可以慢; 必须对每条消息执行多个规则,很多时候使用正则表达式
  • 在客户端环境中,需要服务器交互或用户交互来更新规则

贝叶斯过滤:

它的作用:分析词频(或三字母频率)并将其与训练过的数据进行比较.

好处:

  • 无需制定规则
  • 快(相对)
  • 更难以逆向工程

不足之处:

  • 要求培训有效
  • JavaScript仍然可以访问训练有素的数据; 通常采用人类可读的JSON,XML或平面文件的形式
  • 数据集可以变得非常大
  • 设计不良的过滤器容易混淆,很好地帮助常用词来降低spamacity等级
  • 以前没有见过的单词不能准确分类; 有时会导致整个邮件的分类错误
  • 在客户端环境中,需要服务器交互或用户交互来更新规则

贝叶斯过滤 - 服务器端:

作用:通过将每条消息提交给远程服务器进行分析,应用贝叶斯过滤服务器端.

优点:

  • 常规贝叶斯过滤的所有好处
  • 培训数据不会透露给用户/逆向工程师

不足之处:

  • 交通繁忙
  • 仍然容易受到不常见的话语的影响
  • 仍然容易添加常用词来减少spamacity
  • 服务本身可能被滥用
  • 为了训练分类器,可能希望允许用户提交用于训练的垃圾邮件样本.攻击者可能会滥用此服务

黑名单:

作用:将一组条件应用于消息或其某些属性.如果一个或多个(或特定数量)标准匹配,则拒绝该消息.很像基于规则的过滤,所以请参阅其描述以获取详细信息.

CAPTCHAs等:

对于这种类型的应用程序不可行.我正在尝试将这些方法应用于已存在的网站.Greasemonkey将用于做到这一点; 在某人安装我的脚本之前,我无法在他们没有的地方开始要求CAPTCHA.


任何人都可以帮我填空吗?谢谢,

Bro*_*ams 5

没有“最佳”方式,尤其是对于所有用户或所有情况。

把事情简单化:

  1. 让 GM 脚本最初隐藏所有包含链接和可能普遍的坏词(F*ck、Presbyterian 等)的评论。;)
  2. 然后脚本联系您的服务器并让服务器根据 X 标准判断每个评论(更多内容,请参见下文)。
  3. 根据服务器响应显示或隐藏评论。在超时的情况下,根据用户首选项设置显示或显示(“当过滤器服务器关闭时该怎么办?(显示/隐藏带有链接的评论)”)。
  4. 这就是 GM 脚本;其余的由服务器处理。

至于实际的服务器/过滤标准......
最重要的是不要假设您可以猜测用户想要过滤的内容! 这会因人而异,甚至因心情而异。

将服务器设置为使用坏词、坏链接目标(例如 .ru 和 .cn 域)和公共垃圾邮件过滤服务的组合。

最重要的是为用户提供某种方式来为他们选择和理想地调整所应用的内容。