一大堆 robot
Google, Yahoo 的搜寻引擎之所以可以搜寻到很多资料,是因為他们时时刻刻都派著 “robot” 在网路上巡逻,Google 的叫 googlebot, MSN 叫 msnbot, Yahoo! 叫 Yahoo Slurp 等等,任务就是捉新的网页或更新的网页回去资料中心. 為了隐私之类的原因,国际组织订有规则,规范 robot 的行為 — 基本上是 robot 要先参考网站根目录的一个 robots.txt 的档案,内容写著 robot 的名称及禁止捉取的目录或档案,例如:
User-agent: abc
Disallow: /not_for_abc/
User-agent: *
Disallow: /secret/
意思是禁止 abc 这个 robot 捉 /not_for_abc/ 目录,及禁止所有的 robots 捉 /secret/ 目录. 网站管理者理论上可以将不喜欢的 robot,或是禁止 robot 捉取的目录或档案,写在这个档案中.
但是这个只防君子不防小人,碰到网路坏爬虫就没辙了,有些搜寻引擎的 robot 根本不看网站的robots.txt,就一路抓下去,实在另人发指. 网路坏爬虫是什么,就是这些不遵守游戏规则,到处乱捉别人网站的内容的坏蛋,这样会造成网站的流量增加,也就是费用的增加,或是不想被搜寻的资料也被捉走了,侵犯网站的隐私. 很可恶是吧. 下面是几个例子:
iaskspider 是「爱问」属於新浪网的 robot,完全不管 robots.txt
QihooBot,也是来自「奇虎网」,浪费带宽,
另有 larbin,iearthworm,yodaoice,lanshanbot,Outfoxbot 等等一堆,这些不是什么好东西,还有一个 WebClipping.com 不知是好人坏人…
电脑知识学习论坛为电脑初学者的疑难杂症提供最佳解决方案。电脑基础知识学习QQ群:81158926 欢迎电脑爱好者加入。
碰到这种网路坏爬虫,说实在的也没什么积极的办法,不能叫网路警察把它捉起来...不过消极的办法还是有的,把网站门户看好 — Apache 可以挡住特定 IP,但因為 robots 大多有多重 IP,过滤坏蛋的姓名比较有效,可以用 BrowserMatchNoCase 来过滤,用法像是:
〈directory “/wwwroot“〉
Order allow,deny
Allow from all
BrowserMatchNoCase “iaskspider“ badguy
BrowserMatchNoCase “QihooBot“ badguy
BrowserMatchNoCase “larbin“ badguy
BrowserMatchNoCase “iearthworm“ badguy
BrowserMatchNoCase “Outfoxbot“ badguy
BrowserMatchNoCase “lanshanbot“ badguy
BrowserMatchNoCase “Arthur“ badguy
BrowserMatchNoCase “InfoPath“ badguy
BrowserMatchNoCase “DigExt“ badguy
BrowserMatchNoCase “Embedded“ badguy
BrowserMatchNoCase “EmbeddedWB“ badguy
BrowserMatchNoCase “Wget“ badguy
BrowserMatchNoCase “CNCDialer“ badguy
BrowserMatchNoCase “LWP::Simple“ badguy
BrowserMatchNoCase “WPS“ badguy
deny from env=badguy
〈/directory〉
#如此,它們就會收到 Apache 丟回 403 碼:Forbidden
如此,它们就会收到 Apache 丢回 error 403 码:Forbidden
但是,有些更没品的还会隐姓埋名,不敢用真面目见人的 ,…
------------------------
另外
asp 识别
Agent=Request.ServerVariables(“HTTP_USER_AGENT“)
’识别搜索引擎
Dim botlist,i,IsSearch
Botlist=“Google,Isaac,SurveyBot,Baidu,ia_archiver,P.Arthur,FAST-WebCrawler,Java,Microsoft-ATL-Native,TurnitinBot,WebGather,Sleipnir,yahoo,3721,yisou,sohu,openfind,aol“
Botlist=split(Botlist,“,“)
For i=0 to UBound(Botlist)
If InStr(Agent,Botlist(i))〉0 Then
server.transfer “simple.asp“
IsSearch=True
Exit For
End If
Next