- 23
- Jul
近几天,我的某篇文章下每天都会出现40+的spam,来源遍布世界各地,即使我一次可以删上几百条也是很烦,对spam过滤又没什么经验便只能听之任之,索性都懒的删了。看来,事后过滤对人为的还可以,对付bot就太力不从心了。
今天得到 Dongsheng 的指点,加了几行js代码到页面中,不支持js的 client 发出的留言已经可以全部过滤了。原来还打算把这些东西先放到数据库中,以便手动筛选不是spam的信息。后来想想那样工作量太大,而且浪费资源没有必要,便干脆直接过滤了。
此方法的原理
自己写了个插件,原理是用 js 在留言表单中动态插入一个域,当留言表单提交到服务端后检查一下是否存在这个域即可,99% 的 spam bot 不能执行 js,所以用这个办法干掉 spam 的成功率接近 100%,相对于用验证码,这样的好处是不需要用户额外输入,缺点是如果用户用 non-javascript 的浏览器就没法留言了
代码很简单,只有几行
<script type="text/javascript"> window.onload = function(){ var validate = document.createElement("input"); validate.name="val"; validate.value="true"; validate.type="hidden"; Tem=document.getElementById("commentform"); Tem.appendChild(validate); } <script>
下面的,就是看看效果如何了
Difference
试验一下留言 ^_^
试验一下
还经得起考验吧 lol
汗,我最近也中招了。
好方法!