丁宇 | DING Yu

SPAM、Bayesian和中文 1

据说SPAM这词的来源和计算机其实没什么关系,也不是某四个英文单词的缩写。它实际上,来自于饭店中一首完没完了地念叨着“SPAM”的歌,这歌的声音如此之大、歌词如此之烦,以至于就餐者都无法正常对话了。

上面的解释很好地描述了SPAM的作用和危害,然而有趣的是这个词本身却没有一个合适且严格的中文翻译。Wikipedia上有人将其翻译成“垃圾邮件”。但我们知道,除了垃圾邮件外,在计算机的世界里SPAM又可变身为聊天室中的垃圾留言、论坛中的垃圾帖子、IM中的垃圾信息,以及一切可以由用户产生内容(UGC)的地方。

SPAM有不小的危害,但以人类目前的技术,很难做到100%的杜绝SPAM。我曾在“有效地阻止SPAM”一文中提到了表单隐藏域办法,这个方法的优点在于,以极低的实现成本得到了相对而言尚可的过滤效果;但缺点也很明显,就是有些SPAM机器人越来越聪明,它们会用自带的HTML解析器分析代码,并绕过过滤机制。我后来在此基础上,在blog所用的SPAM防火墙上增加了“黑白名单”机制(详见“Lonely Thinker 0.4完成及0.5展望”),实际效果相当不错。但此方法必须由人工干预才行-网站的管理者必须一直投入精力来维护黑白名单的数据库,所以比较麻烦。

下面是上述两种方法的一个实际效果:

2009年1月1日-2009年1月15日,LT内建的SPAM防火墙共拦截SPAM 361 条。其中依靠隐藏表单域(方法一)拦截 49 条,约占 14%;依靠黑名单(方法二)拦截 312 条,约占 86%。平均每天共拦截约24条。(原始log文件下载

老实说这个结果还是颇出乎我的意料的,因为居然只有49个/次、约14%的机器人被方法一抓到,而86%的机器人都可以绕过方法一!

由此可见,现在的SPAM机器人都相当的智能,而这也正是我们为什么需要一些更棒的方法来抵御SPAM的原因。在下篇中,我想和大家聊聊我最近研究Bayesian算法的一些心得。


  1. fei @ 2009-01-17 02:29:45 +0800:

    可转载否~
    另:记不得之前留言区域这里是不是黄色高亮了,毕竟大部分时间是阅读的RSS。人懒,不喜欢点到WEB。
    如果是刚调整的,不得不赞一下。这个细节其实非常的舒服,非常的爽。
    留言区域的高亮,用一句那啥啥说,巴适的很哪~

  2. 丁宇 @ 2009-01-17 06:03:17 +0800:

    @fei:
    原则上我不希望转载,因为从长远来看这会浪费互联网和人们的资源。如果你一定要转载的话,请:
    1)保留作者信息;
    2)标明文章出处;
    3)保持转载内容和原文的一致性。

    推荐在你那里链接回来 [emoticon:smile_1]

  3. willin @ 2009-03-02 08:26:53 +0800:

    我有簡單的防Spam方式,希望與你交流.
    http://willin.freehyperspace5.com/?p=1051

  4. Felix @ 2009-03-02 18:01:52 +0800:

    @willin 看了你的方式,很不错。我没有使用JS主要是基于可访问性(accessibility)的考虑。

  5. willin @ 2009-03-04 02:59:14 +0800:

    Umm.... 你這個頁面就加載了6個js, 我想js還是方便.

  6. 丁宇 @ 2009-03-04 06:06:03 +0800:

    @willin 呵呵,是的,用了一些jQuery。不过你尽可以关掉js,可访问性几乎不受到影响,几乎所有的功能都可用(除了评论中的表情图标,这个以后改进)。