如何以编程方式检测机器人

时间:2010-05-05 19:03:09

标签: asp.net bots

我们有一种情况,我们记录访问次数和访问者页面点击和机器人堵塞了我们的数据库。我们不能使用验证码或其他类似技术,因为这是在我们甚至要求人工输入之前,基本上我们正在记录页面命中,我们只想记录人类的页面命中。

那里有已知的僵尸网络IP列表吗?检查已知的bot用户代理是否有效?

6 个答案:

答案 0 :(得分:19)

没有可靠的方法来抓住所有机器人。如果有人想要,机器人就像真正的浏览器一样。

最严重的机器人在代理字符串中清楚地标识自己,所以使用已知机器人的列表,你可以装配大部分机器人。在列表中,您还可以添加一些默认情况下某些HTTP库使用的代理字符串,以捕获那些甚至不知道如何更改代理字符串的人的机器人。如果您只记录访问者的代理字符串,您应该能够选择要存储在列表中的那些字符串。

您还可以通过在页面上放置一个隐藏的链接来制作“糟糕的机器人陷阱”,该链接会导致您的robots.txt文件中的网页被过滤掉。严重的机器人不会跟随链接,人类无法点击它,因此只有不遵守规则的机器人才会请求该文件。

答案 1 :(得分:9)

取决于您要检测的机器人类型:

答案 2 :(得分:1)

您可以使用Request.Browser.Crawler以编程方式检测抓取工具;

最好按照此处的说明更新已识别的抓取工具列表 http://www.primaryobjects.com/cms/article102.aspx

答案 3 :(得分:0)

我认为很多机器人可以被用户代理识别,但肯定不是全部。已知IP的列表 - 我也不会指望它。

启发式方法可能有效。机器人通常比人们更快地关注链接。也许您可以跟踪每个客户端的IP并检测其跟踪链接的平均速度。如果它是一个爬虫,它可能会立即跟踪每个链接(或者至少比人类快得多)。

答案 4 :(得分:0)

我认为不会有Botnet IP地址列表,Botnet IP地址不是静态的,没有人知道谁是机器人,包括像Bots一样的用户。

你的问题现在可以说是热门的研究领域,我很好奇是否有人可以为这个问题提供解决方案。

您可以使用任何类型的技术并了解这是否是人类,然后您可以获取日志。

答案 5 :(得分:0)

您是否添加了robots.txt?虽然这不能解决恶意僵尸程序的使用,但您可能会对您网站上已经发生的合法抓取活动感到惊讶。