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

ASP
嵌入式Web视频点播系统实现方法
GB与BIG5内码转换COM原代码
金额阿拉伯数字转换为中文的存储过程
利用 WSH 作定时工作流程
用InstallShield 进行 ASP 软件的打包和自动安装
服务器获得客户端时间的方法
关于如何读出图片的高度与长度的总结
按下回车键指向下一个位置的一个函数
一个不错的随机函数
一套加解密字符串的函数
一段加密函数(base64)
一段加密函数
使用asp实现支持附件的邮件系统(三)
使用asp实现支持附件的邮件系统(二)
使用asp实现支持附件的邮件系统(一)
检查当前目录下是否存在指定的文件,如果存在就重新命名
MD5加密的javascript实现例子
如何在服务器端调用winzip命令行对上传的多个文件打包压缩
MD5不可逆加密算法的ASP实现实例
看人家用使用InstallShield制作ASP安装程序(6)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 212 ::
收藏到网摘: 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()