是不是StartsWith(Mozilla)足以识别大多数机器人UserAgent没有影响任何真正的访客?

时间:2015-05-19 18:48:35

标签: asp.net user-agent bots

我试图不在我的asp.net页面上为机器人做一些会话初始化例程。因此,我正在考虑如下测试:

bool IsBot = !(UserAgent.StartsWith("Mozilla") || UserAgent.Contains("Opera"));

够了吗?还有其他建议吗?它会在99%的情况下正常运作吗?

1 个答案:

答案 0 :(得分:1)

好的,根据我的研究,我认为以下内容就足够了:

Private _Bots As String() = New String() {"bot", "slurp", "crawl", "spider", "sleuth", "http://", "https://"}

Public Function IsBot(aRequest As HttpRequest) As Boolean
    If aRequest.Browser.Crawler Then Return True
    Dim _ua As String = aRequest.UserAgent.ToLower
    If Not (_ua.Contains("mozilla") OrElse _ua.Contains("opera")) Then Return True
    For i = 0 To _Bots.Length - 1
        If _ua.Contains(_Bots(i)) Then Return True
    Next
    Return False
End Function