这里有几件事情:
我不知道你为什么会想返回503错误。机器人仍然占用一些相同的服务器资源。
您应该考虑禁用僵尸程序的会话管理(或至少最小化会话超时)。
如果你正在试图阻止僵尸,你也应该使用robots.txt(见http://www.robotstxt.org/有关良好的信息)。
很可能您已经在使用robots.txt,但是对于稍后访问此页面的任何人都应该注意。
以下UDF基于Ben Nadel's work。不过,它中的数据应该保持更新。
我可能最终会按照我在我自己的SpamFilter.cfc中使用的模式来做到这一点。但现在,下面的一对UDF应该让你开始。
请注意,我的UDF将CFSCHEDULE视为bot,因为我不想为它使用会话。如果你想阻止所有的机器人,那么你应该从列表中删除它。
<cffunction name="hasCFCookies" access="public" returntype="boolean">
<cfreturn (StructKeyExists(Cookie,"CFID") AND StructKeyExists(Cookie,"CFTOKEN"))>
</cffunction>
<cfset request.hasCFCookies = hasCFCookies>
<cffunction name="isBot" access="public" returntype="boolean">
<!---
Based on code by Ben Nadel:
http://www.bennadel.com/blog/154-ColdFusion-Session-Management-Revisited-User-vs-Spider-III.htm
--->
<cfset var UserAgent = "">
<!--- If the user has cookies, this is at least a second request from a real user --->
<cfif hasCFCookies()>
<cfreturn false>
</cfif>
<!--- Real users have user-agent strings --->
<cfset UserAgent = LCase(CGI.http_user_agent)>
<cfif NOT Len(UserAgent)>
<cfreturn true>
</cfif>
<!---
High-probability checks
If the user agent has bot or spider in it, it is a bot
Some specific high-volume spiders listed individually
--->
<cfif
REFind("bot\b", UserAgent)
OR Find("spider", UserAgent)
OR REFind("search\b", UserAgent)
OR UserAgent EQ "CFSCHEDULE"
>
<cfreturn true>
</cfif>
<!---
If we haven't yet tagged it as a bot and it is on Windows or Mac (including iOs devices), call it a real user.
If this results in a few spiders showing as real users that is OK
--->
<cfif REFind("\windows\b", UserAgent) OR REFind("\bmac", UserAgent)>
<cfreturn false>
</cfif>
<!--- If we don't know yet, only figure spiders from a known list of a few --->
<cfif
REFind("\brss", UserAgent)
OR Find("slurp", UserAgent)
OR Find("xenu", UserAgent)
OR Find("mediapartners-google", UserAgent)
OR Find("zyborg", UserAgent)
OR Find("emonitor", UserAgent)
OR Find("jeeves", UserAgent)
OR Find("sbider", UserAgent)
OR Find("findlinks", UserAgent)
OR Find("yahooseeker", UserAgent)
OR Find("mmcrawler", UserAgent)
OR Find("jbrowser", UserAgent)
OR Find("java", UserAgent)
OR Find("pmafind", UserAgent)
OR Find("blogbeat", UserAgent)
OR Find("converacrawler", UserAgent)
OR Find("ocelli", UserAgent)
OR Find("labhoo", UserAgent)
OR Find("validator", UserAgent)
OR Find("sproose", UserAgent)
OR Find("ia_archiver", UserAgent)
OR Find("larbin", UserAgent)
OR Find("psycheclone", UserAgent)
OR Find("arachmo", UserAgent)
>
<cfreturn true>
</cfif>
<cfreturn false>
</cffunction>
WebTrends的,网络分析软件,拥有目前592的 “搜索引擎”,在keyword.ini文件。也许http://stackoverflow.com/questions/677419/how-to-detect-search-engine-bots-with-php可以帮助你,即使它不是cfml –
_“正如我想通过网站通知我曾经有一个搜索引擎正在浏览这个网站。“ - 那么你很快就会收到许多电子邮件。使用Webtrends/[Awstats](http://www.awstats.org/)/ [Piwik](http://piwik.org/)/ etc等现有软件可以更好地查看日志和聚合数据。 –
为什么当机器人尝试为您的网站编制索引时,您会返回503错误?你不想让搜索引擎索引你的网站吗?还有其他的事情可以做,以防止这种情况。 –