how to distinguish a request from bot and browser

Request.Browser has a parameter Crawler.

For Ex:
System.Web.HttpBrowserCapabilities myBrowserCaps = Request.Browser;
if (((System.Web.Configuration.HttpCapabilitiesBase)myBrowserCaps).Crawler)
{
return true;// iscrawler
}
else
{
return false;//is user/browser
}
(((System.Web.Configuration.HttpCapabilitiesBase)myBrowserCaps).ActiveXControls)
Above property can be used to find if the caller(browser) supports activex controls.