当前位置: 首页 > 图文教程 > 网络编程 > ASP > 雨哲浅谈关于防采集而不影响收录内容篇

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

ASP 中的 雨哲浅谈关于防采集而不影响收录内容篇


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

防采集是很麻烦而且累人的事,你做的再好,别人要采还得采。累人就在于要防别人采集,还要不影响搜索引擎收录(大部分个人站长的站的生存都寄于百度和Google)。所以要防采集,就得先不影响收录,所以我们先要分析到如何分辨搜索爬虫。 让站长最头痛的事,除了程序和服务器安全外,可能就要算内容被采集了。当然,现在网络本身就是资源共享,我这里不谈采集的对错,只是就防采集说说个人看法。

一、如何分辨搜索爬虫
以前,在网上看到过关于用asp代码来捕捉搜索爬虫的代码,通过代码把爬虫的访问记录记录到文件。就此代码(原作者未知)我作了修改,加入程序中防采集。现做成函数,直接在页面中调用。
复制代码 代码如下:

Function CheckSearchRobots(SearchRobotsAgent)
CheckSearchRobots = False
'自定义搜索爬虫,因篇幅关系,这里只是加入国内主要搜索引擎爬虫部分记录
Dim SearchRobots:SearchRobots="Baidu@Baidu|Google@Google|crawler@alexa|Yahoo@Yahoo|sohu@Sohu|MSN@MSN|QihooBot@Qihoo"
dim ArrSearchRobots,ArrSearchRobots2,SearchRobotsTrue,SearchRobotsName,iSearchRobots
SearchRobotsTrue = False
ArrSearchRobots = split(SearchRobots,chr(124))
For iSearchRobots = 0 To Ubound(ArrSearchRobots)
ArrSearchRobots2 = split(ArrSearchRobots(iSearchRobots),"@")
If Instr(lcase(SearchRobotsAgent),lcase(ArrSearchRobots2(0))) > 0 then
SearchRobotsTrue=true:SearchRobotsName=ArrSearchRobots2(1):exit for
End If
Next
If SearchRobotsTrue and len(SearchRobotsName)>0 then'如果是爬虫,就更新爬虫信息
CheckSearchRobots = True
End If
End Function

将以上代码放在asp程序中(具体如何放置请参考相关文章),然后在需要调用的地方作如下调用: If CheckSearchRobots(SearchRobotsAgent) = False Then
Response.Write "非搜索引擎,可作部分限制!" '这里可以加入判断指定时间的刷新次数,比如在正常情况下,访问速度是N次/分,如果超过这个次数(超常规访问)就可以限制了。
End If
二、限制超常规访问。
下面说说如何限制别人的超常规访问。下面代码来源于互联网(原作者未能找到)。我作了部分修改和说明。
复制代码 代码如下:

Sub CheckAppeal()
Dim AppealNum,AppealCount
AppealNum=10 '同一IP60秒内请求限制次数
'雨哲[Yz81.Com]站长测试结果一,如果限制为10次,动易采集结果,一分钟能采集成功12篇,失败8篇。
'雨哲[Yz81.Com]站长测试结果二,如果限制为8次,动易采集结果,一分钟能采集成功9篇,失败11篇。
AppealCount=Request.Cookies(AppealCookies)
If AppealCount="" Then
Response.Cookies(AppealCookies)=1
AppealCount=1
response.cookies(AppealCookies).expires=dateadd("s",60,now())
Else
response.Cookies(AppealCookies)=AppealCount+1
response.cookies(AppealCookies).expires=dateadd("s",60,now())
End If
if int(AppealCount)>int(AppealNum) then
Response.Write "兄弟,爬了这么久,歇会儿吧,别累坏了身体!"
'这里的提示完全可以自定义,我的做法是另外转到一个和当前文章模板完全一致的页面,当然内容是自定义的。
'有兴趣的朋友也可以采集<a class="channel_keylink" href="http://www.yuzhe.name">雨哲</a>在线的http://www.yz81.com/wanzhuan/频道下面的文章。
Response.end
End If
End Sub

将以上代码放在asp程序中(具体如何放置请参考相关文章),然后在需要调用的地方作如下调用:
Call CheckAppeal()