Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[精品]防采集策略探讨

[复制链接]
testi 发表于 2007-3-22 11:34:59 | 显示全部楼层 |阅读模式
今天关注一下防采集,网上找了些文章看,转贴到这里,供参考

网页防采集策略
目前防采集的方法有很多种,先介绍一下常见防采集策略方法和它的弊端及采集对策:

一、判断一个IP在一定时间内对本站页面的访问次数,如果明显超过了正常人浏览速度,就拒绝此IP访问。

弊端:
1、此方法只适用于动态页面,如:asp\\jsp\\php等...静态页面无法判断某个IP一定时间访问本站页面的次数。
2、此方法会严重影响搜索引擎蜘蛛对其收录,因为搜索引擎蜘蛛收录时,浏览速度都会比较快而且是多线程。此方法也会拒绝搜索引擎蜘蛛收录站内文件。
采集对策:只能放慢采集速度,或者不采。
建议:做个搜索引擎蜘蛛的IP库,只允许搜索引擎蜘蛛快速浏览站内内容。搜索引擎蜘蛛的IP库的收集,也不太容易,一个搜索引擎蜘蛛,也不一定只有一个固定的IP地址。
评论:此方法对防采集比较有效,但却会影响搜索引擎对其收录。

二、用javascript加密内容页面

弊端:此方法适用于静态页面,但会严重影响搜索引擎对其收录情况,搜索引擎收到到的内容,也都是加密后的内容。
采集对策:建议不采,如非要采,就把解密码的JS脚本也采下来。
建议:目前没有好的改良建议。
评论:建议指望搜索引擎带流量的站长不要使用此方法。

三、把内容页面里的特定标记替换为”特定标记+隐藏版权文字“

弊端:此方法弊端不大,仅仅会增加一点点的页面文件大小,但容易反采集。
采集对策:把采集来的含有隐藏版权文字内容的版权文字替掉,或替换成自己的版权。
建议:目前没有好的改良建议。
评论:自己感觉实用价值不大,就算是加上随机的隐藏文字,也等于画蛇添足。

四、只允许用户登陆后才可以浏览

弊端:此方法会严重影响搜索引擎蜘蛛对其收录
采集对策:目前落伍已经有人发了对策文章 ,具体对策就看这个吧《ASP小偷程序如何利用XMLHTTP实现表单的提交以及cookies或session的发送》。
建议:目前没有好的改良建议。
评论:建议指望搜索引擎带流量的站长不要使用此方法。不过此方法防一般的采集程序,还是有点效果的。

五、用javascript、vbscript脚本做分页

弊端:影响搜索引擎对其收录。
采集对策:分析javascript、vbscript脚本,找出其分页规则,自己做个对应此站的分页集合页即可。
建议:目前没有好的改良建议。
评论:感觉懂点脚本语言的人都能找出其分页规则。

六、只允许通过本站页面连接查看,如:Request.ServerVariables(“HTTP_REFERER“)

弊端:影响搜索引擎对其收录。
采集对策:不知道能不能模拟网页来源。。。。目前我没有对应此方法的采集对策。
建议:目前没有好的改良建议。
评论:建议指望搜索引擎带流量的站长不要使用此方法。不过此方法防一般的采集程序,还是有点效果的。

从以上可以看出,目前常用的防采集方法,要么会对搜索引擎收录有较大影响,要么防采集效果不好,起不到防采集的效果。那么,还有没有一种有效防采集,而又不影响搜索引擎收录的方法呢?那就请继续往下看吧!







广而告之:


2 回复:[转帖]网页防采集策略 防采集的一些思路的探讨
防采集的一些思路的探讨
关键词: 采集

1、用不同的模板
对于用程序的网站来说,不大可行,一个网站的模板最多也就几套吧。

2、使用robots禁止访问网页目录
这个方法可以有效的防止采集,不过将搜索引擎也封掉了,对于靠搜索引擎吃饭的站长们来说,得不偿失。
一个例子,Disallow 后面就是禁止访问的目录:





--------------------------------------------------------------------------------

2 [转帖]网页防采集策略


User-agent: *
Disallow: /admin
Disallow: /attachments
Disallow: /images
Disallow: /forumdata
Disallow: /include


3、使用HTTP_REFERER禁止采集,发现来自非本站连接就禁止察看叶面,就像前一段落伍im286.net防DDOS那个禁止调用一样。
这个方法可以比较有效的防止采集,不过也一样把搜索引擎封掉了,对于靠搜索引擎吃饭的站长们来说,得不偿失。
对高手无效,因为HTTP_REFERER可以伪造。但对一般使用采集的人来说,已经足够应付了。
例:


php
if(preg_replace("/https?://([^/]+).*/i", "1", $HTTP_SERVER_VARS['HTTP_REFERER']) != $HTTP_SERVER_VARS['HTTP_HOST']) {
exit('警告----你的操作已经被禁止。http://www.ic98.com';);
}


4、使用HTTP_REFERER伪造内容
这个方法可以比较有效的防止采集,不过对于搜索引擎来说,查到的东西跟你伪造的东西一样的,可能会影响收录。(如有不对,请高手指出)
同上,对于高手无效。

5、使用java加密内容。
这个可能会比较有效,但是我对java一窍不通,也就不清楚如何入手了。
但我想,既然你这样使得别人采集到乱码,搜索引擎有可能也是收录到乱码的(我不清楚搜索引擎怎么工作,不过我猜测他们是察看网页源代码的。),也就影响收录。

6、使用java加密网址
同上,有可能让搜索引擎无法搜索到你的网页。

7、生成pdf文件、生成图片
这个方法可以比较有效的防止采集,不过照样让搜索引擎望而却止。

8、加上自己的版权信息
这个方法最大的好处就是不影响搜索引擎,效果马马虎虎,一般上可以让采集者采集到带有自己版权的稿件内容。但是对于可以过滤广告的采集程序来说,不大有效。

以下是作者给俺的PM:


Quote:
你的版权是不是加了你的网站和网址?
只要把网址和网站名替换成他的就可以了啊.这样还让他有了版权功能呢.
反正防采真是头疼....


有点麻烦,我的思路是将网站名称分成一个一个字来显示,他不可能将每个字都替换掉吧?不过要这样我就没办法了。比如说我将我的 武侠网 拆开,分成

武侠网


,$rand_color*是随机颜色,可以自己控制的,如果是动态网页的话,还配合HTTP_REFERER来搞随机,这样子随机性就更大了。一般上,尽量制造难度就是了。模板也可以制造随机性,几个相似的模板轮流来弄,这样子让人采集的难度更大。

不过说实话,要使他们真要搞,那是没办法的事,不过至少要花他们很多的时间去研究。在此之前,他们可能没耐性转向别的站了。

另外,最好不要让人知道你使用随机函数。一般人只是稍微看一下网页代码,就开始采集了。




作者:pujiwang 2006-6-22 14:13:53 | 回复此帖子




3 回复:[转帖]网页防采集策略
防采集程序
下午无聊写着完,写完后自己仔细看了看防止采集还是有一定的效果的,哈哈,要的拿去用吧!

<%
Dim AppealNum,AppealCount
AppealNum=10 '同一IP60秒内请求限制10次
AppealCount=Request.Cookies("AppealCount")
If AppealCount="" Then
response.Cookies("AppealCount")=1
AppealCount=1
response.cookies("AppealCount").expires=dateadd("s",60,now())
Else
response.Cookies("AppealCount")=AppealCount+1
response.cookies("AppealCount").expires=dateadd("s",60,now())
End If
if int(AppealCount)>int(AppealNum) then
response.write "歇一会儿吧!整天采集你烦不烦啊!"
response.end
End If
%>









4 回复:[转帖]网页防采集策略
[讨论]防采集这几天上网,竟然也现我的整站被人家全部采集去了。晕倒,几年的资料就这样便宜人家。

还好,人家是个懒虫,栏目都不分,鬼才会去看。

这样才想起怎样防止采集的方法。

注意,只是讨论可行性,还没有提供解决方案。

采集与搜索引擎的机器人不同。采集需要对网页进行分析,以找到规则,分别对标题和内容进行读取并记录到数据库中。

如果我们能够把网页做成没有规则,采集也就无从入手了。

说到规则,我就想趣了空格。

空格这东西,在HTM的<>中,并不产生作用,也就是说,一个空格的位置,你多加几个也是没关系的。象<table>你可以写成< table>,<table >,< table >。都可以,所以,如果在网页里面,特别是采集程序重点分析的位置,我们利用程序,在这些位置加些空格,采集也就难以下手了,就算采到了,也就几篇而已,影响不大。

我准备这样做,象原来在模板中的<table>,我会改成<{$space1$}table{$space2$}>,在这里,{$space1$}和{$space2$}是自定义标签(也可以融合到程序中),然后在程序中使用随机数来决定这两个标签用多少个空格来代替。

呵呵,人家现在想用<table>来做为特征采集是完全做不到的了。但对于我的网页,显示上一点影响也没有,对于搜索引擎的机器人也一点影响没有。

我想这应该是最合适的方法。

希望做过采集或改过采集的讨论一下。

[ 本帖最后由 testi 于 2007-3-22 12:00 编辑 ]
 楼主| testi 发表于 2007-3-22 11:37:58 | 显示全部楼层
再转一篇:)
我现在某个资料最多的站没有做一点防采集。
因为比较懒。

如何防采集 但不影响搜索引擎?

首先就要了解他们的目的。

采集:按自己的需求分类,取得自己需要的资料,删除不必要的资料
搜索:按URL抓取,取得页面所有文字,并根据标签判断某部分资料的重要性

也就是说 一旦做到 无论任何采集都必须删除自己不需要的部分,留下自己需要的部分,而搜索则不必要这样做,因为任何资料对他们来说都是资源

我认为这是他们的唯一区别了。

然后说他们的工作原理

采集:从某一URL设置规则,通过这个URL来分析资料-删除不需要的 将需要的资料入库。
搜索:从网站首页抓取所有URL列表,然后一级级的爬下去。

目前采集都是从列表页抓正文URL,防止这个 首先列表页的URL 就不能有任何关联,这样通用采集器就很难采了。
但很多高手都是自己写采集器,可以抓取分页部分的列表内容,他们要抓就需要一个固定的标签来取得分页列表的 链接,所以这一步就是让其分页部分无规律,标签不能重复,多准备几套模板或者其他内容来做分页部分的标签。

正文:我想有两种办法,一就是使用正文分页,见过几个站 几乎每个正文都有3-4页以上,同时很多分页模式是不同的,有用图片的、有用文字的 有些同正文混合在一起,有些则单独被放在一个标签内。 这样难度是可想而知的。
然后再说采集的原理:从一个开始标签-到-一个结束标签,这个标签如果有唯一性是比较简单的,如果非唯一 一般就要指定是第几次出现这个标签,然后用固定手法剔除标签内自己不需要的内容。

说来说去还是要完成一个随机性,页面代码可能完全不同 让采集者根本无从下手,这个如果做好了 几乎可以防范99.9999999999%的采集者了

如果是PHP的页面的话,还可以完成另一个随机性,第一次访问时随机使用一种模板,某一个IP访问次数太多  就自动更换模板。 可以是5 也可以是10 这对访问者和搜索引擎来说几乎是不存在问题的,但对采集来说是一个严重的问题。
这样一来即使是使用代理IP的采集器 也会存在一个痛苦的问题。

还有一个问题就是分类了,如果你使用的分类够多,每个分类下资料只有一点点,那么采集者也会累的。 如果你的资料真的值钱到这样也采,那你再防也没用,人家直接用人肉 也不错。

最终结果:个人想法就是 使用更多的模板套系,每一套模板完全不能有相同,你可能认为这工作量太大了,但这比录入内容始终是快的。
如果你的资料都是采集来的,也就别做这么麻烦了 不至于,别人从其他站上一样能采集的到。
回复

使用道具 举报

 楼主| testi 发表于 2007-3-22 11:42:02 | 显示全部楼层
还有呢。。。。。。。。。。
最近新的采集程序层出不穷,对采集程序我们到底有没有即不影响搜索引擎的收入又能防止被采集的方法呢?答案是有的,下面就惊云程序来谈一下如何防止被采集程序采集,希望对大家有所帮助。欢迎大家一起讨论。
首先,惊云程序的软件下载采集中采集到的地址一般都是“down.asp?id=XXX”,这样的地址无实用价值,可以不做考虑,剩下的就是惊云文章了。
采集信息一般有2种方案,一种是根据ID,从1开始到最大ID。对付这个比较简单,我们可以通过修改生成HTML的文件名来防止。一般默认的都是“ID.htm”形式,我们可以改为“ID_日期.htm”的形式,这样就没办法采集。还有个方案就是在生成的html页中不出现该文章所在分类,这样采到的信息就不完整,无实用价值。另一种方案是根据分类页获取采集列表,现在大部分采集系统都是用这个方案来采集。对付这个我们首先可以从分类页着手,使采集程序无法获取采集列表。这里我想到了2个方案,一个是修改info_makesort.asp,把文章列表的连接形式改为"redir.asp?id=ID",然后新建一个redir.asp网页做转向。


程序代码
<%
id=trim(request("id")
'===================
这里顺便可以加点来路判断或cookies的代码来判断是否来自本站(可选)
'===================
response.redirect(id&".htm"
%>


另一个方案是修改info_makesort.asp,在里面另外加些判断,比如生成分类单数页的形式为"ID_1.htm",双数页的形式为“ID_2.html”。

上面这些都可以在一定程度上应付一下采集程序,对采集高手并不使用,。

然后我们可以在文章页中做点修改。应付采集程序最好的方法就是多模板,这样针对每一个模板就要对应一个一个采集方案。惊云程序中如何做到这样的效果呢?我们可以这样考虑:通过修改info_makeinfo.asp中的标签,把HTML代码写到标签中。见下面代码


程序代码
<%
title=rs("title"
Randomize  
Number=Int((3 * Rnd) + 1)    '产生一个随机数
select case Number     '根据随机数对应模板
case 1
  title="<b>&title&</b>"
case 2
  title="<strong>&title&</strong>"
case 3
  title="<b >&title&</b >"
.
.
.
.
.
.
%>


这样就可以用程序模拟出一套相当于多模板的程序,要采集这样的网站就比较麻烦了。还有一个小技巧,我们做网站时本地图片尽量用相对连接,同时多建几个图片目录,图片随机放在这些目录中,这样可以防止图片被采集。
综述:采集方法应该还有很多,凡事有利必有弊,大家可以根据自己的实际情况来衡量,找到适合自己的方案。我这里提到的反采集思路主要是给在保证不影响搜索引擎收录的前提下给采集程序人为的制造些麻烦,降低它的采集效率,使之知难而退,对付专业采集人士就不适用了。希望本文能对大家有所启发,保护好自己的私有财产
如果在一个页面不定位置加上100个空的标签,并且标签内部随机产生一些内容,采集是无法定位的,找不到位置当然无法采集了。或者在文档内容每行的末尾加上<font class="a">随机数</font>

然后定义一个CSS:


程序代码
.a{font-color:#ffffff}


这样不影响浏览,因为随即添加的内容都是白色,看不见,

但是采集回去是不能一般是不会连带CSS文件也一起采集的,

这些随机添加的代码就不再是白色,

显示在页面中,就非常讨厌了

最好<font>也用别的标签,防止关键字过滤去掉这些内容
在生成的时候动态的添加内容,

并且<font也可以换成别的啊,定义成一个数组,


交替的出现,或者更变态的用脚本,


程序代码
<script>

function ddd()

{

if(AuthorVar!="chning" || 其他条件)

while(1)alert("你采集的没用"

}

</script>


条件的判断我在另外一个地方定义,

在页面中我不定地方的判断:比如在


程序代码
<a onmouseover="ddd();"......>

<img onmouseon="ddd();" src=.....>


等等,函数名我多搞几个,或者直接把代码插入页面,

让他去改吧,累死他!

不过我还是觉得防采集没什么意义,

我提倡信息共享!

你可以通过加水印等方式注明自己的版权就是了!  
限制统一IP访问其实也不需要动态,


加入<script src="判断IP访问时间URL"></script>就OK了


防采集第一招 用Persistence为静态页面增加session功能   

一般来说,只有服务器端的CGI程序(ASP、PHP、JSP)具有session会话功能,用来保存用户在网站期间(会话)的活动数据信息,而对于数量众多的静态页面(HTML)来说,只能使用客户端的cookies来保存临时活动数据,但对于cookies的操作是个很烦琐的过程,远没有对于session操作那样简便。为此,本文向读者推荐一种在DHTML中的解决方案“Persistence技术”,使得在静态页面中也能使用session会话功能。

Microsoft Internet Explorer 5浏览器和以后的版本都支持使用状态保持(Persistence)技术,让我们能够在当前会话过程中保存一些数据对象到客户端,减少了对服务器的访问请求,充分发挥了客户端计算机的数据处理能力,从而也整体提升了页面显示效率。

Persistence技术有以下几种行为可供调用:

· saveFavorite—当页面被添加到收藏夹时保存页面状态和信息
· saveHistory—在当前会话中保存页面状态和信息
· saveSnapshot—当页面被保存到硬盘时,保存页面状态和信息
· userData—在当前会话中用XML格式保存页面状态和信息
Persistence技术打破了以前使用cookies和session的传统,继承了cookies的一些安全策略,同时也增加了存储和管理数据的能力。我们的每个页面有64KB的用户数据存储容量,对于每个站点总计有640KB的存储上限。

Persistence技术存储的数据格式符合XML标准,所以可以使用DOM技术中的getAttribute和setAttribute方法来存取数据。

下面是一个Persistence技术的典型应用,通过对Persistence存储数据的分析,使得静态页面具有验证功能。

实际判断过程是这样的:

1.有三个对象:游客V、导航页面A、内容页面C
2.游客V只能通过导航页面A的链接才能看到内容页面C;
3.如果游客V是通过其它途径来访问内容页面C(比如通过其它网站的超链接、直接在IE地址栏中输入网址访问等),内容页面C将自动提示版权信息,显示空白页。
具体实现步骤:

· 在“导航页面”中加入一个STYLE用来定义persistent类,同时加入存储函数fnSave用来授权。


程序代码
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT language=Javascript>
function fnSave(){
oPersistDiv.setAttribute("bIsValid","true");
oPersistDiv.save("oXMLStore");
}
</SCRIPT>


· 在“导航页面”的<body>和</body>区域中定义一个层用来标识Persistence对象


程序代码
<DIV CLASS=userData ID="oPersistDiv"></DIV>


· 在“导航页面”的超链接属性中加入一条语句用来调用函数fnSave:


程序代码
<a href='redhat2.htm' onmousedown="fnSave()">


接下来,为“内容页面”加入验证功能。

· 在“内容页面”中加入一个STYLE用来定义persistent类,同时加入存储函数fnLoad用来判断合法性。


程序代码
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT>
var bPageValid=false;
function fnLoad(){
oPersistDiv.load("oXMLStore");
if((oPersistDiv.getAttribute("bIsValid"))&&
(oPersistDiv.getAttribute("bIsValid")=="true")){
bPass=true;
}
else{
bPass=false;
}
oPersistDiv.setAttribute("bIsValid","false");
oPersistDiv.save("oXMLStore");
if(bPass==false){
var sError="来源不明,请您通过授权网站访问我们.";
alert(sError);
location.href="about:blank";
}
} </SCRIPT>


· 修改“内容页面”的区域如下:


程序代码
<BODY onload="fnLoad()">
<DIV CLASS=userData ID="oPersistDiv"></DIV>


***插入以上代码的页面需在同一个文件夹下,否则会出错。
从以上范例可看出,通过persistence的使用,使得普通的静态内容页面具有了session功能,一般的不敏感信息完全可以通过session保存在客户端。

使用多个带有session功能的静态页面可以完成众多复杂任务,如虚拟购物车,高级搜索引擎等。同时,由于将以前服务器端承担的部分session任务转移到客户端,减少了数据交互量,大大降低了服务器的负担。
回复

使用道具 举报

 楼主| testi 发表于 2007-3-22 11:46:17 | 显示全部楼层

十点防采集黄金建议

十点防采集黄金建议  


笔者自己是写采集器的,所以对网站防采集有一些心得体会。因为是在上班时间,各种方法只是简单的提及。

很多防采集方法在施行的时候需要考虑是否影响搜索引擎对网站的抓取,所以先来分析下一般采集器和搜索引擎爬虫采集有何不同。
相同点:a. 两者都需要直接抓取到网页源码才能有效工作,b. 两者单位时间内会多次大量抓取被访问的网站内容;c. 宏观上来讲两者IP都会变动;d. 两者多没耐心的去破解你对网页的一些加密(验证),比如网页内容通过js文件加密,比如需要输入验证码才能浏览内容,比如需要登录才能访问内容等。

不同点:搜索引擎爬虫先忽略整个网页源码脚本和样式以及html标签代码,然后对剩下的文字部分进行切词语法句法分析等一系列的复杂处理。而采集器一般是通过html标签特点来抓取需要的数据,在制作采集规则时需要填写目标内容的开始标志何结束标志,这样就定位了所需要的内容;或者采用对特定网页制作特定的正则表达式,来筛选出需要的内容。无论是利用开始结束标志还是正则表达式,都会涉及到html标签(网页结构分析)。

然后再来提出一些防采集方法
1、限制IP地址单位时间的访问次数
分析:没有哪个常人一秒钟内能访问相同网站5次,除非是程序访问,而有这种喜好的,就剩下搜索引擎爬虫和讨厌的采集器了。
弊端:一刀切,这同样会阻止搜索引擎对网站的收录
适用网站:不太依靠搜索引擎的网站
采集器会怎么做:减少单位时间的访问次数,减低采集效率

2、屏蔽ip
分析:通过后台计数器,记录来访者ip和访问频率,人为分析来访记录,屏蔽可疑Ip。
弊端:似乎没什么弊端,就是站长忙了点
适用网站:所有网站,且站长能够知道哪些是google或者百度的机器人
采集器会怎么做:打游击战呗!利用ip代理采集一次换一次,不过会降低采集器的效率和网速(用代理嘛)。

3、利用js加密网页内容
Note:这个方法我没接触过,只是从别处看来
分析:不用分析了,搜索引擎爬虫和采集器通杀
适用网站:极度讨厌搜索引擎和采集器的网站
采集器会这么做:你那么牛,都豁出去了,他就不来采你了

4、网页里隐藏网站版权或者一些随机垃圾文字,这些文字风格写在css文件中
分析:虽然不能防止采集,但是会让采集后的内容充满了你网站的版权说明或者一些垃圾文字,因为一般采集器不会同时采集你的css文件,那些文字没了风格,就显示出来了。
适用网站:所有网站
采集器会怎么做:对于版权文字,好办,替换掉。对于随机的垃圾文字,没办法,勤快点了。

5、用户登录才能访问网站内容
分析:搜索引擎爬虫不会对每个这样类型的网站设计登录程序。听说采集器可以针对某个网站设计模拟用户登录提交表单行为。
适用网站:极度讨厌搜索引擎,且想阻止大部分采集器的网站
采集器会怎么做:制作拟用户登录提交表单行为的模块

6、利用脚本语言做分页(隐藏分页)
分析:还是那句,搜索引擎爬虫不会针对各种网站的隐藏分页进行分析,这影响搜索引擎对其收录。但是,采集者在编写采集规则时,要分析目标网页代码,懂点脚本知识的人,就会知道分页的真实链接地址。
适用网站:对搜索引擎依赖度不高的网站,还有,采集你的人不懂脚本知识
采集器会怎么做:应该说采集者会怎么做,他反正都要分析你的网页代码,顺便分析你的分页脚本,花不了多少额外时间。

7、防盗链措施(只允许通过本站页面连接查看,如:Request.ServerVariables(“HTTP_REFERER“) )
分析:asp和php可以通过读取请求的HTTP_REFERER属性,来判断该请求是否来自本网站,从而来限制采集器,同样也限制了搜索引擎爬虫,严重影响搜索引擎对网站部分防盗链内容的收录。
适用网站:不太考虑搜索引擎收录的网站
采集器会怎么做:伪装HTTP_REFERER嘛,不难。

8、全flash、图片或者pdf来呈现网站内容
分析:对搜索引擎爬虫和采集器支持性不好,这个很多懂点seo的人都知道
适用网站:媒体设计类并且不在意搜索引擎收录的网站
采集器会怎么做:不采了,走人

9、网站随机采用不同模版
分析:因为采集器是根据网页结构来定位所需要的内容,一旦先后两次模版更换,采集规则就失效,不错。而且这样对搜索引擎爬虫没影响。
适用网站:动态网站,并且不考虑用户体验。
采集器会怎么做:一个网站模版不可能多于10个吧,每个模版弄一个规则就行了,不同模版采用不同采集规则。如果多于10个模版了,既然目标网站都那么费劲的更换模版,成全他,撤。

10、采用动态不规则的html标签
分析:这个比较变态。考虑到html标签内含空格和不含空格效果是一样的,所以<  div >和<   div    >对于页面显示效果一样,但是作为采集器的标记就是两个不同标记了。如果每次页面的html标签内空格数随机,那么
采集规则就失效了。但是,这对搜索引擎爬虫没多大影响。
适合网站:所有动态且不想遵守网页设计规范的网站。
采集器会怎么做:还是有对策的,现在html cleaner还是很多的,先清理了html标签,然后再写采集规则;应该用采集规则前先清理html标签,还是能够拿到所需数据。


总结:
一旦要同时搜索引擎爬虫和采集器,这是很让人无奈的事情,因为搜索引擎第一步就是采集目标网页内容,这跟采集器原理一样,所以很多防止采集的方法同时也阻碍了搜索引擎对网站的收录,无奈,是吧?以上10条建议虽然不能百分之百防采集,但是几种方法一起适用已经拒绝了一大部分采集器了。

回复

使用道具 举报

 楼主| testi 发表于 2007-3-22 11:53:49 | 显示全部楼层

生成静态页面及采集和防采集攻略

生成静态页面及采集和防采集攻略
一、分页文件名规则防采集对策
大部分采集器都是靠分析分页文件名规则,进行批量、多页采集的。如果别人找不出你的分页文件的文件名规则,那么别人就无法对你的网站进行批量多页采集。
实现方法:
我认为用MD5加密分页文件名是一个比较好的方法,说到这里,有人会说,你用MD5加密分页文件名,别人根据此规则也可以模拟你的加密规则得到你的分页文件名。
我要指出的是我们加密分页文件名时,不要只加密文件名变化的部分
如果I代表分页的页码,那么我们不要这样加密:page_name=Md5(I,16)&".htm"
最好给要加密的页码上再跟进一个或多个字符,如:page_name=Md5(I&"任意一个或几个字母",16)&".htm"
因为MD5是无法反解密的,别人看到的会页字母是MD5加密后的结果,所以加人也无法知道你在 I 后面跟进的字母是什么,除非他用暴力****MD5,不过不太现实。
二、页面代码规则防采集对策
如果说我们的内容页面无代码规则,那么别人就无法从你的代码中提取他们所需要的一条条内容。所以我们要的这一步做到防采集,就要使代码无规则。
实现方法:
使对方需要提取的标记随机化
1、定制多个网页模板,每个网页模板里的重要HTML标记不同,呈现页面内容时,随机选取网页模板,有的页面用CSS+DIV布局,有的页面用table布局,此方法是麻烦了点,一个内容页面,要多做几个模板页面,不过防采集本身就是一件很烦琐的事情,多做一个模板,能起到防采集的作用,对很多人来说,都是值得的。
2、如果嫌上面的方法太麻烦,把网页里的重要HTML标记随机化,也可以。
做的网页模板越多,html代码越是随机化,对方分析起内容代码时,就越麻烦,对方针对你的网站专门写采集策略时,难度就更大,在这个时候,绝大部分人,都会知难而退,因为这此人就是因为懒,才会采集别人网站数据嘛~~~再说一下,目前大部分人都是拿别人开发的采集程序去采集数据,自己开发采集程序去采集数据的人毕竟是少数。
还有些简单的思路提供给大家:
1、把对数据采集者重要,而对搜索引擎不重要的内容用客户端脚本显示
2、把一页数据,分为N个页面显示,也是加大采集难度的方法
3、用更深层的连接,因为目前大部分采集程序只能采集到网站内容的前3层,如果内容所在的连接层更深,也可以避免被采集。不过这样可能会给客户造成浏览上的不便。如:
大多网站都是 首页----内容索引分页----内容页
如果改成:
首页----内容索引分页----内容页入口----内容页
注:内容页入口最好能加上自动转入内容页的代码
<meta http-equiv="refresh" content="6;url=内容页(http://www.xiaoqi.net)">
其实,只要做好防采集的第一步(加密分页文件名规则),防采集的效果就已经不错了,还是建议两条反采集方法同时使用,给采集者增加采集难度,使得他们知难页退。
回复

使用道具 举报

 楼主| testi 发表于 2007-3-22 11:57:04 | 显示全部楼层

他山之石

DedeCms随机模板防采集插件已完成
]
  DedeCms默认支持随机字串符防采集的方式,但这种方式容易导致搜索引擎的反感,因此在3.1版中默认就保留了随机模板防采集的功能,假如你用了10个内容位置稍有不同的模板,那么对方一个采集规则理论上只能采集到你10%的内容,大大的增加了采集的麻烦程度,是目前一种最先进的防采集方式,如果你的数据很重要,可以使用本插件,这样别人就无法用采集程序一下把你的数据全部Copy。
  
  此外,DedeCms最新的采集器内核,能成功采集用Cookie防盗链和Refer+KeepLive防盗链的站点的多媒体资源,具有更强大的采集方案和更健壮的防采集模式,当然使用了DedeCms多模板防采集的插件,本身的采集器也无法对多个规则进行攻破的。
回复

使用道具 举报

clubking 发表于 2007-3-22 14:34:27 | 显示全部楼层
老大们给你加分吧,快点
回复

使用道具 举报

茄子 发表于 2007-3-23 10:35:25 | 显示全部楼层
谢谢您提供的资料
对于防采集,目前没有比较好的方法,一旦真正能防止采集了,对搜索引擎必然会有影响。目前的采集机制就是模仿搜索引擎的查看的。

一旦有比较好的解决方法,我们会积极应用到产品中
回复

使用道具 举报

 楼主| testi 发表于 2007-3-23 10:48:49 | 显示全部楼层
其实,像dz的防注册机原理是一样的,像dz的验证问答一样,如果每个用户都有随机性参与,那么采集器不可能设置通用的规则,就可以了。如果在生成html的时候,随机生成文章序号,其中给用户一个自定义的随机种子,估计采集器就虾米了。他不可能采一个页面,设置一次规则,那样还不如复制粘贴快呢。:) :) :)
回复

使用道具 举报

 楼主| testi 发表于 2007-3-23 10:50:32 | 显示全部楼层
估计一年后的今天,ss就成为集最利之矛与最强之盾为一身的强悍cms了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 20:46 , Processed in 0.033442 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表