一种可能是高大上的防止SPAM的方法

前一阵子比特币火的一塌糊涂,然后猛然惊觉其实自己在几年前就买过这种东西,后来换电脑了钱包啥的都没有保留下来,扼腕叹息觉得我差一点点就是富豪了。事实证明我想多了,因为仔细一想才发现自己的持有量还不到1个单位,才多少钱啊,离富豪的距离还有几千倍呢。不过当年不明白比特币的原理,也想不了那么多,这个钱没这个福气赚,也是没办法的事情。

最近又去看了看比特币的实现原理,然后在想,如果说把类似的原理用在其它地方会发生什么。于是就有了这个防 SPAM 的思路。不过也不知道该用什么关键字去检索,也不知道自己是原创还是在重复造轮子,总之是写了一个 typecho 的插件叫 SpammersGoAway ,已经在自己博客上部署了,并且把其它的防垃圾策略都撤了,看看有什么后果。

Update : 由于对某些手机浏览器支持不能,暂时关闭了本站的 SpammersGoAway .

这个实现原理在 README.md 里已经详细的叙述了,这里就复制粘贴一下好了。

对于 Spammer 来说,效率是摆在第一位的。他们需要用极短的时间来发送大量的 SPAM ,这就是 Spammer和普通的用户最显著的区别。

利用这一点,我们可以使每位评论者都花上一点点的时间来计算一个特殊的 hash值,比如hash(time+i),然后循环使i自增,最后要求计算出来的 hash 满足一个特殊的条件如前3位相同,这样对于一个Spammer 来说,他发送一个 SPAM 所使用的资源提高了:需要更多的 CPU 和时间。而对于普通用户来说,浏览器计算这个 hash值的时间在 3 秒内,还不够用户输入一条完整的评论,对于用户来说几乎无影响。