KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > util > BotChecker


1 package com.dotmarketing.util;
2
3 import java.util.Iterator JavaDoc;
4 import java.util.List JavaDoc;
5
6 import javax.servlet.http.HttpServletRequest JavaDoc;
7
8 import com.dotmarketing.config.ConfigLoader;
9
10 /**
11  * Determines if a request is actually a bot or spider.
12  *
13  * @author <a HREF="plightbo@hotmail.com">Patrick Lightbody</a>
14  */

15 public class BotChecker {
16     public static boolean isBot(HttpServletRequest JavaDoc request) {
17         List JavaDoc agents = ConfigLoader.getInstance().getConfig().getBotAgents();
18         List JavaDoc hosts = ConfigLoader.getInstance().getConfig().getBotHosts();
19
20         if (request.getRequestURI().indexOf("robots.txt") != -1) {
21             // there is a specific request for the robots.txt file, so we assume
22
// it must be a robot (only robots request robots.txt)
23
return true;
24         }
25
26         String JavaDoc userAgent = request.getHeader("User-Agent");
27         if (userAgent != null) {
28             for (Iterator JavaDoc iterator = agents.iterator(); iterator.hasNext();) {
29                 String JavaDoc agent = (String JavaDoc) iterator.next();
30                 if (userAgent.indexOf(agent) != -1) {
31                     return true;
32                 }
33             }
34         }
35
36         String JavaDoc remoteHost = request.getRemoteHost(); // requires a DNS lookup
37
if (remoteHost != null && remoteHost.length() > 0 && remoteHost.charAt(remoteHost.length() - 1) > 64) {
38             for (Iterator JavaDoc iterator = hosts.iterator(); iterator.hasNext();) {
39                 String JavaDoc host = (String JavaDoc) iterator.next();
40                 if (remoteHost.indexOf(host) != -1) {
41                     return true;
42                 }
43             }
44         }
45
46         return false;
47     }
48 }
Popular Tags