实现DEDE防采集的办法和分析
从目前来看,或者说从使用火车采集器的经验来看,目前防采集的办法有以下几点。
当然,现在才来说防采集这件事,并不是怕人人都防采集了,火车还能何去何从。主要原因还是在,防采集的难度和成本太高,无奈最近这段时间美眉网正遭受一群道上的朋友恶意采集,还不得已想了一些防采集的办法,这几个办法,我自己也在不断权衡,相信不久的将来,会有比较完善的防采集解决方案。
一,动态程序(或者伪静态)仿采集的办法。
简单来说,就是在服务器上使用Session记录客户端的访问请求。可以实现限制用户恶意刷新、多次重复请求和限制时间内大面积访问请求等。简单来说,这个办法是最行之有效的,也是最简单的一个办法。
当然,这个办法为什么没有普遍开来,想必在这里肯定是被当成废话来听。这样的动态程序本身就是一个占用并浪费资源的、严重影响用户体验的一个办法。
防采集,肯定是针对大量数据的网站而言,几篇几十篇文章手动点下鼠标就成。针对大量数据的网站,基本上都是用生成静态HTML来解决服务器压力的问题。
那么,这个静态文件肯定就无法使用动态程序(或者伪静态)仿采集的办法。
除此之外,这样的限制访问速度、要求用户登陆等办法,也在一定程度上影响了搜索引擎的收录效果。
二,随机乱码、隐藏字符防采集。
现在的论坛程序、CMS程序,基本上都加了这个功能,简单来说,就是在内容中插入一些文字和代码,混淆视听。在不影响用户阅读文章内容的情况,增加采集程序过滤的难度。
由于本人未能考证此种办法在搜索引擎优化方面是否有较大弊端,所以,在这里不讨论此种办法的优缺点,只说其实现方式和难度。
这种办法应该是最简单的、效果非常不错的一个防采集办法了,如果再遇上一两人CSS高手,写出数十上百个不同的字体颜色和效果,足以让时下众多采集器茫然无措。
本文以使用DEDE防采集的经验,举例如下,假设在页面以黑色字体输出这样一段文字:
“这是尘缘写的防采集的文章”。
这段文字里面,我们可以使用DEDE提取关键字的方式,给“尘缘”和“防采集”加上一个CSS样式。
如“<span class=’black1′>尘缘</span>”、”<span calss=’black2′>防采集</span>””。
这里的’black1’和’black2’建议大家使用不同的大小写组合,尽量繁多,越多越好。这样实现防采集的第一步。
那么第二步,是在内容插入不等数量的随机乱码,建议大家将CSS样式,尽量和内容中的CSS样式混淆,即,起差不多的CSS样式名。增加在采集时过滤的难度。
如“<span class=’black3′>乱码</span>”、”<span calss=’black4′>乱码</span>””。
这里的’black3’和’black4’可以将文字直接隐藏,可以将长度限制为零达到隐藏的目的。’black3’和’black4’可以通过程序批量生成,你可以将这些样式效果写在CSS里,当然也可以使用Javascript读取这些随机样式的标签,设置其显示效果和样式。
总结一下,即,采集时,如果将CSS样式过滤,则会留下乱码,这些乱码可能会让采集者放弃采集,当然,如果真被采集了,留下一点版权倒也对得起你;再者,如果采集时把CSS样式和标签对里的内容过滤,那么,很有可能正文也被过滤了。
这个办法的主要难度在于,手动设置随机CSS样式时,有点麻烦。当然,如果你比较熟悉DEDE,那在DEDE中实现起来,只需要修改一点程序即可实随机现关键字的链接和CSS样式处理。
写此文的同时,我也整理了一个测试用的HTMl文档,里面是一段文章,使用随机CSS样式防采集的办法。稍时将整理上传。欢迎大家测试。
三,随机模板的防采集。
假设我们要防采集的字段叫“内容”。以下直接叫内容得了。简单来说,也就是在模板中使用不同的CSS样式来输出内容。
如,在这个文章中使用“<div class=’body’>内容</div>”,在另外一篇文章中使用“<div class=’newbody’>内容</div>”这样来输出。
DEDE内置了随机模板防采集的功能,大家可以很好的利用这个功能。虽然在应付火车采集器的采集方面,还欠缺一点,但足以防止大量简单采集程序的程序了。
在使用这个功能时要注意,随机模板不应只实现样式名的随机化,也应该将前后一些代码也进行相应的随机处理。
如内容一“<div class=’随机乱码一’><div class=’body’>内容</div></div>”;
如内容二“<div class=’随机乱码二’><div class=’ydob’>内容</div></div>”;
即,尽量实现大部份标签的随机乱码和周边代码的随机改变。
总结一下,这个办法实现起来最简单(不过需要CMS支持此功能,如DEDE),使用起来也简单,不过就是在模板随机化的过程中,工作量不小。但是这样的防采集,效果是最立竿见影的。
四,列表分页加密,包括列表页分页链接和内容页分页链接。
首先说一下,这个办法目前被我最为看好,因为这个功能,对用户体验最好,对搜索引擎最好,工作量也挺小。唯一的不足就在于,实现起来非改程序不可。
原理如下:一般的网站生成的分页链接很简单,都是”list-1.html”到”list-100.html”这样的机制。这样的机制从CMS诞生那天起,就没有一家CMS有加密或者随机化过。
我在想,为什么不把list-1.html中的数字使用MD5或者其它加密函数加密一下呢?
如果分页链接被加密,再把列表页的分页链接,在前端使用JavaScript解决,循环输出分页链接。只留下数页真实链接作为搜索引擎入口。
这样防采集的话,可以严重增加采集的时间成本,因为要一页一页点击下一页才可以获取到列表的真实地址或者说内容正文的下一页。采集的时候,只能采集数页或者部份内容。
这个办法,目前已被少数几个网站使用了,这里面就有17173。防采集效果还不错。在下也只能靠一个算法程序才能取得其文章内容分页的链接。不过,由于17173没有将分页ID加密,才让我有得逞的机会。
再总结一下,这个办法,前途最为光明。不影响用户体验,不影响搜索引擎体验或者影响极小,防采集效果最好,开发起来,也很好实现。
本人目前开发出了DEDEV5.5版Js输出版本,见:http://www.4wei.cn/?p=1000253
五,文字图片化的防采集办法。
先说例子,39医药网,内容中的数字在生成静态文件的时候,被替换成了图片,而这些图片,也是随机命名的。在采集的时候,根本无法将数字一一替换回来。假设在采集的时候,将内容中的图片全部下载回去,采集者如果想进行二次编辑,其难度可想而知,对一般用户来用,图片识别技术还是个不小的难题。
从实际运用来看,这是一个十分彪悍的想法,别说采集,就是真正的用户,难甭想转摘到完善的文章内容,当然,这个办法并不适合图片网站。
总结一下这个办法,效果不错,会影响到用户体验,搜索引擎方面,效果未知,但按原创性内容看来,我觉得效果应该不会太差,我个人觉得这也是一种伪原创的手段。当然,实现起来也不复杂,开发也易于实现。
最后,就到了文末。
我个人比较看好列表加密这个方案,用户和搜索引擎体验最好;如果你想彪悍的防采集,可以使用部份中英文+数字图片化的方案;如果是个人站长,不熟悉程序开发的话,可以使用随机模板仿采集的办法。
强大