当前位置: 首页 > 图文教程 > 网站运营 > 建站经验 > 几招让你的网站免受采集之苦

建站经验
11个PR7以上的国内网址导航站
国内现状 目前没几个博客能赚钱
网站推广最重要的2点 细节和坚持
给想通过博客赚钱的站长朋友的一些建议
网络推广经验 前期准备和发帖原则
盈利模式 细分市场是站长梦开始的地方
把握博客更新时间
总结网站推广中需要避免的12种推广方式
淘宝网店推广重点 抓住潜在的购买客户
建站杂谈 2010年web领域的预测
给用户一个无法拒绝的回访理由
建站案例 地方门户网站运营的心酸事
制作英文网站的基本流程
网站备案 图文教程
独立域名的英文博客从WordPress切换到Blogger的步骤
大胆尝试电子商务 改变传统盈利思路
404页面设计全攻略
以收购网站为名的商业间谍不可不防
运营企业网站来实现营销目标的经验
淘宝的站内搜索能改变搜索格局?

建站经验 中的 几招让你的网站免受采集之苦


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-26   浏览: 85 ::
收藏到网摘: n/a

    如今的采集系统是一个比一个NB,站长们辛苦收集制作的网站内容总是很快出现在在另一个网站上,一个网站轻易的就被复制了又复制。有办法既不影响搜索引擎的正常收入又能解决网站被采集之苦么?答案是肯定的。

    最常用的防采集方法:

    1.每个文章的命名不要有任何规律,比如你的文章是<%=id%>.htm的话,请在前面或后面生成个日期,如:20070911-1234.htm,前面的就是日期了,这样对采集新手来说是非常有效的。

    2.不要把所有的文章都放在一个目录下,你可以利用日期生成不同的目录名。

    3.不要所有的文章都用一个模板,制作尽量多的模板,添文章的时候可有选要用哪个模板,一般采集者的采集程序是有针对性的,他在采集前会对你的页面进行分析,如果你所有的页面排版无规律可寻,那么我想他就会放弃了。

    以上三种方法能防住初级采集的,但是对高手来说没什么用。
   
    下面三种方法用限制采集人的IP或SESSION的方法来达到防采集的目的。

方法一:(ASP代码):

以下为引用的内容:
<%
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 "软晨学习网http://www.提醒您:抓取很累,歇一会儿吧!"
response.end
End If
%>

第二种方法(ASP):

以下为引用的内容:
<%
user_agent=Request.ServerVariables("HTTP_USER_AGENT")
http_reffer=Request.ServerVariables("HTTP_REFERER")
server_name=Request.ServerVariables("SERVER_NAME")
'检查当前用户是否是蜘蛛人
function check(user_agent)
allow_agent=split("Baiduspider,Scooter,ia_archiver,Googlebot,FAST-WebCrawler,MSNBOT,Slurp",",")
check_agent=false
for agenti=lbound(allow_agent) to ubound(allow_agent)
if instr(user_agent,allow_agent(agenti))>0 then
check_agent=true
exit for
end if
next
check=check_agent
end function
if check(user_agent)=False then
if http_reffer="" or left(http_reffer,len("http://"&server_name)+1)<>"http://"&server_name&"/" then
%>
<html><body>
<form action='' name=checkrefer id=checkrefer method=post>
</form>
<script>
document.all.checkrefer.action=document.URL;
document.all.checkrefer.submit();
</script>
</body></html>
<%response.end
end if
end if
%>

第三种方法:

    用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任务转移到客户端,减少了数据交互量,大大降低了服务器的负担。