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

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

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

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

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

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

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

升级到 typecho 0.9,以及typecho在kangle下伪静态问题的解决

今天正好在折腾服务器,想起来了自己的typecho一直无法禁用启用插件。后来跑去Google查了一下,发现这其实是普遍问题,比如说官方论坛的帖子kangle服务器下启用伪静态的一个bug,以及无法激活主题模板,都提到了这个问题。

还有 typecho 0.9 貌似内置了 Markdown 的解释器,不知道是怎么实现的。我把之前的插件给禁用掉之后,原来的文章全部都不解析了。可能还需要再看看源码才可以。

这里给出 typecho 0.9 在 kangle 下可用的伪静态.htaccess文件。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1?%{QUERY_STRING} [L]

修改过去之后就可以正常使用伪静态了,后台禁用开启插件、切换主题一切正常。

新版 typecho 的管理后台真心漂亮,升级过程也非常简单。推荐还没有更新的朋友们(咦……应该只有我没更新了吧……)去更新一下看看。

UPDATE:刚刚去看了一下数据库,发现 typecho 控制 Markdown 与否,是在数据库中的对应条目的文章内容前加上<!--markdown-->。你可以使用以下SQL语句来更新你的数据库,让以前的文章也使用 Markdown 解析。

UPDATE `typecho_contents` SET `text`=CONCAT('<!--markdown-->',`text`)

更换到Typecho的记录

看看Hello world,更换成typecho也有两天了。

看着Google Reader离我远去,深深的感觉到本地数据为王的意义是什么了。于是,就把is-programmer的文章,完全手工复制粘贴移动到了这里。

这里是我在洛杉矶的VPS,就是之前提到过的LocVPS(via LocVPS|无推介链接)。国内访问速度一流,价钱公道,ticket响应快,到现在除去我的原因也才宕机过3分钟左右。

由于放了很重要的站点,预计会要一直续费到LocVPS倒掉(喂)。考虑到……博客还是有会消失的那么一天……嘛,谁能算计那么多呢?只能自己守着博客慢慢变老了(大雾)。

嗯……目前的感觉还不错。访问没有那么卡了,页面基本秒开,比较舒畅。