Spam, spam!!
我的博客评论被 Spam 了。
最早,我用了Scanty默认的disqus,但后来发现在不注册disqus账号的情况下发表评论极其麻烦,后来就自己实现了。没有任何Anti-Spam的机制。
某年月日,终于不知被谁盯上了,我的博客没几篇帖子,却收到百余篇评论。都是些英文的广告,像是用软件发的,来自不同IP。
加了个类似Rails中protect-from-forgery的功能,不管用。Spam软件好像能直接提交Form。
加了cookie,还是不管用,它也认识cookie。
靠!还想试试Ajax-form,难不成它也认识Javascript?不过懒得试了,我不想为这个再加个jQuery的库。
用图片做验证码?得在服务器端生成,麻烦,用户体验也不好。
虽然我的博客没几个读者,但来者是客,我希望他们能简简单单发表评论,随便留个名就行。但,我怎么区分Spam啊?
好像有个服务(忘名字了),能认识大部分Spam的关键字,需要装个Gem,每次都需要发请求检查,浪费。
最后,我还是用了个笨办法:
真正的读者,打开帖子后肯定不会立即发表评论,从阅读、写评论,到提交,肯定需要一些时间。我假定这段时间是40秒。如果在40秒内我收到评论,就认为是Spam(Spam软件运行起来都是很快的)。
用了几天,效果还不错。偶有漏网之鱼,不过,我相信99%都挡住了。剩下的手工删。
那么,40秒的时间是否挡住了我真正的读者?我不知道。我只希望这是一个合情合理的时间。如果你在提交时看到类似“Spam detected”之类的提示,请刷新重试。
这算是好的用户体验吗?