如何以编程方式检测机器人
Posted
技术标签:
【中文标题】如何以编程方式检测机器人【英文标题】:How do I detect bots programmatically 【发布时间】:2011-02-16 02:07:54 【问题描述】:我们有一种情况,我们记录访问和页面点击的访问者,而机器人正在堵塞我们的数据库。我们不能使用验证码或其他类似的技术,因为这是在我们甚至要求人工输入之前,基本上我们正在记录页面点击,我们只想记录人类的页面点击。
那里有已知机器人 IP 的列表吗?检查已知的机器人用户代理是否有效?
【问题讨论】:
【参考方案1】:没有万无一失的方法可以捕获所有机器人。如果有人想要,机器人可以像真正的浏览器一样工作。
大多数严重的机器人都会在代理字符串中清楚地识别自己,因此通过已知机器人的列表,您可以找出其中的大部分。您还可以在列表中添加一些 HTTP 库默认使用的代理字符串,以从甚至不知道如何更改代理字符串的人那里捕获机器人。如果你只记录访问者的代理字符串,你应该能够挑选出那些存储在列表中。
您还可以通过在您的网页上放置一个隐藏链接来制造“不良机器人陷阱”,该链接指向一个在您的 robots.txt 文件中被过滤掉的网页。严重的机器人不会点击链接,人类也无法点击,因此只有不遵守规则的机器人才会请求文件。
【讨论】:
您还可以为行为良好的机器人创建 robots.txt 文件robotstxt.org/orig.html【参考方案2】:取决于您要检测的机器人类型:
Detecting Honest Web Crawlers Detecting Stealth Web Crawlers【讨论】:
网络爬虫是否属于机器人?【参考方案3】:您可以使用 Request.Browser.Crawler 以编程方式检测爬虫;
最好按照此处的说明更新已识别的爬虫列表 http://www.primaryobjects.com/cms/article102.aspx
【讨论】:
【参考方案4】:我认为用户代理可以识别许多机器人,但肯定不是所有机器人。已知 IP 的列表 - 我也不会指望它。
启发式方法可能会奏效。机器人通常比人更快地跟踪链接。也许您可以跟踪每个客户端的 IP 并检测它跟随链接的平均速度。如果它是一个爬虫,它可能会立即跟踪每个链接(或者至少比人类快得多)。
【讨论】:
【参考方案5】:您是否已经添加了robots.txt?虽然这不能解决恶意机器人使用问题,但您可能会对您网站上已经发生的合法抓取活动感到惊讶。
【讨论】:
我不确定 robots.txt 是否会帮助他们分别记录真实的访问者。他们并没有说要完全过滤掉机器人。【参考方案6】:我认为不会有 Botnet IP 地址列表,Botnet IP 地址不是静态的,没有人知道谁是 bot,包括行为类似 Bot 的用户。
您的问题可以说是目前的热门研究领域,我很好奇是否有人可以为该问题提供解决方案。
您可以使用任何技术并了解这是否是人,然后您可以获得日志。
【讨论】:
【参考方案7】:我认为最好的方法是为非人类用户(机器人、爬虫等...)使用链接 然后收集他们的用户代理,然后通过用户代理过滤它们。 你必须使链接不能被人类观察到才能做到这一点。
您可以将 robots.txt 添加到您网站的根目录,然后执行此操作
【讨论】:
以上是关于如何以编程方式检测机器人的主要内容,如果未能解决你的问题,请参考以下文章