14

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

那里有已知的机器人 IP 列表吗?检查已知的机器人用户代理是否有效?

4

7 回答 7

19

没有万无一失的方法可以捕获所有机器人。如果有人想要,机器人可以像真正的浏览器一样工作。

大多数严重的机器人都在代理字符串中清楚地识别自己,因此通过已知机器人的列表,您可以找出其中的大部分。您还可以在列表中添加一些 HTTP 库默认使用的代理字符串,以从甚至不知道如何更改代理字符串的人那里捕获机器人。如果您只记录访问者的代理字符串,您应该能够挑选出要存储在列表中的那些。

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

于 2010-05-05T19:15:19.563 回答
9

根据您要检测的机器人类型:

于 2010-05-05T19:12:54.040 回答
1

您可以使用 Request.Browser.Crawler 以编程方式检测爬虫;

最好按照此处http://www.primaryobjects.com/cms/article102.aspx的说明,更新已识别的爬虫列表

于 2012-10-15T10:03:46.523 回答
0

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

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

于 2010-05-05T19:11:35.747 回答
0

我认为不会有 Botnet IP 地址列表,Botnet IP 地址不是静态的,没有人知道谁是 bot,包括行为像 Bot 的用户。

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

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

于 2010-05-05T19:13:24.497 回答
0

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

于 2010-05-05T19:14:21.410 回答
0

我认为最好的方法是为非人类用户(机器人、爬虫等)使用链接,然后收集他们的用户代理,然后通过用户代理过滤它们。您必须使链接无法被人类观察到才能执行此操作。

您可以将 robots.txt 添加到站点的根目录,然后执行此操作

于 2022-01-16T10:57:13.803 回答