我有大约20个左右的活跃博客可以获得相当多的垃圾邮件。由于我讨厌CAPCHA,另一种选择是非常智能的垃圾邮件过滤。我想构建一个简单的REST API,如垃圾邮件检查服务,我会在我的所有博客中使用它。通过这种方式,我可以整合IP阻止并将垃圾邮件检测卸载到第三方,例如Akisment,Mollom,Defensio,并在将来的某个时间编写我自己的垃圾邮件检测,以便真正了解某些内容很有趣的垃圾邮件检测算法
我选择的语言是PHP,我认为自己非常精通,我可以深入挖掘并提出解决方案。我觉得这个项目可以作为学习另一种语言的好习惯。想到的最重要的2是Python和Ruby on Rails,因为每个人都在谈论它们,就像我们救世主的下一个故事一样。由于这主要是一个API,没有管理员或公众面对任何东西,似乎基本的Python运行一个简单的http服务器似乎是要走的路。我错过了什么吗?你,伟大的社区,你会推荐什么?我很想听听您的语言,书籍和最佳实践建议。
这必须扩展,我想用它来记住它。现在我可能能够使用第三方的免费计划,但很快我就必须将整个事情扩展到实际上自己思考。现在我想我只会将所有内容存储在MySQL数据库中,直到我可以对它进行真正的分析。谢谢!
答案 0 :(得分:9)
我的第一个问题 - 为什么不直接使用您列出的这三种服务之一?它们似乎完全符合您的要求。抱歉是愤世嫉俗,但我怀疑你在一个合理的时间内独自工作可以击败软件工程师设计在这些网站上使用的算法,特别是考虑到他们的收入来源取决于他们做得多好。
然后,你可能只是比他们更聪明= P。我不是一个要判断的人。无论如何,我建议 python ,出于你所说的原因 - 你不需要花哨的公共界面,所以python在这方面缺乏优势并不重要。 Python也适合进行文本处理,并且它具有很好的内置绑定来使用数据库(例如,sqlite;当然,如果你认为有必要,你可以安装MySQL)。
缺点:它可能会变慢,取决于你的算法有多复杂。
答案 1 :(得分:2)
Python有一些优点。
Python中有几个HTTP服务器框架。查看WSGI reference implementation,了解如何使用WSGI标准来处理Web请求。它非常干净且可扩展。需要进行一些研究才能看到WSGI是关于向请求添加详细信息的,直到您到达处理阶段,然后才能制定回复。
MIME email parsing非常简单。
之后,您将使用网站黑名单和内容过滤来检测垃圾邮件。
网站黑名单可能是一个很大的,花哨的RDBMS。或者它可以是简单的腌制Python域名和IP地址集。我推荐一个简单的pickled set对象,它存在于内存中。它很快。您可以让RESTful服务在收到强制刷新的某些GET请求时从源文件重新加载此集。
文本过滤很难。我从SpamBayes开始。
答案 2 :(得分:1)
我谦卑地推荐Lua,不仅因为它是一种优秀,快速的语言,已经与网络服务器集成,而且因为你可以利用OSBF-Lua,一个已经赢得垃圾邮件的现有垃圾邮件过滤器 - 连续几年过滤比赛。 Fidelis Assis和我已经投入了大量的工作来尝试将模型概括为超越电子邮件,我们很高兴与您合作将其与您的应用程序集成,这是Lua的设计目标。
至于扩展,在训练模式下,我们在2006年的机器上每秒处理数百封电子邮件,因此即使对于繁忙的网站也应该很好。
我们需要与你一起分类没有邮件标题的东西,但我一直在推动那个方向。欲了解更多信息,请写nr@cs.tufts.edu。 (是的,我希望人们向我发送垃圾邮件。这是用于研究的!)
答案 3 :(得分:1)
我必须推荐Akismet,因为它易于使用且精度高。只使用WordPress.com API密钥和API调用,您就可以确定来自用户的给定blob文本是否为垃圾邮件。我一直在使用WordPress的Akismet插件,该插件使用相同的API,并且在过去一年左右的时间内获得了出色的结果。
Zend Framework有一个很棒的Akismet PHP类,您可以独立于框架的其余部分使用它,这应该使集成非常简单。文档也很全面。