蜘蛛/机器人UserAgent检测C#

Mar*_*ark 3 c# asp.net user-agent

我正在开发一个应用程序,如果它们不在我们的浏览器列表中,则会重定向用户以升级浏览器.

我的目标是创建一个异常,以根据UserAgent字符串检测它们是否是爬虫.

此时,我收到一条消息......"没有.ToLower的定义或扩展方法"

这是我的代码:

    private bool IsValidCrawler(HttpRequestBase request)
    {
        bool isCrawler = true;

        switch (request.Browser.Crawler.ToLower())  
        {
            case "googlebot":
            case "bingbot":
            case "yahoo!":
            case "facebookexternalhit":
            case "facebookplatform":
                break;
        }

        return isCrawler;
    }
Run Code Online (Sandbox Code Playgroud)

谁能指出我哪里出错了?

Bab*_*fas 11

如果您查看Crawler属性的文档(http://msdn.microsoft.com/en-us/library/system.web.configuration.httpcapabilitiesbase.crawler(v=vs.110).aspx),您会注意到它是一个布尔类型.

如果请求来自已知的爬虫,则属性本身会通知您.您可以暂时尝试以下操作.离开方法,所以你不必改变太多.

private bool IsValidCrawler(HttpRequestBase request)
{
    bool isCrawler = request.Browser.Crawler;

    return isCrawler;
}
Run Code Online (Sandbox Code Playgroud)

  • Microsoft保留已知抓取工具列表的位置?它们如何被添加到列表中? (5认同)
  • 为什么一开始需要在已经拥有该属性的情况下创建函数? (3认同)
  • 它允许任何针对该方法编写的代码在测试实现的可行性时继续工作而无需修改.我最终会删除该方法,但只有在我确认它符合我的所有用例之后. (2认同)