代码之家  ›  专栏  ›  技术社区  ›  Tom DeMille

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

  •  14
  • Tom DeMille  · 技术社区  · 16 年前

    在这种情况下,我们会记录访问量和访问量,页面点击量和机器人程序会阻塞我们的数据库。我们不能使用captcha或其他类似的技术,因为这是在我们要求人工输入之前,基本上我们正在记录页面点击量,我们只想记录人类的页面点击量。

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

    6 回复  |  直到 8 年前
        1
  •  19
  •   Guffa    16 年前

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

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

    你也可以通过在你的页面上放置一个隐藏链接来制造一个“坏机器人陷阱”,这个链接会导致一个页面在robots.txt文件中被过滤掉。严肃的僵尸不会遵循链接,人类也无法点击链接,因此只有不遵循规则的僵尸才会请求该文件。

        2
  •  9
  •   Community Mohan Dere    9 年前
        3
  •  1
  •   dc2009    13 年前

    您可以使用request.browser.crawler以编程方式检测爬虫;

    最好保持您的认可爬虫名单最新,如这里所述。 http://www.primaryobjects.com/cms/article102.aspx

        4
  •  0
  •   Assaf Lavie    16 年前

    我认为许多机器人程序可以被用户代理识别,但肯定不是所有的机器人程序。一个已知IP的列表-我也不会指望它。

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

        5
  •  0
  •   cfeduke    16 年前

    您已经添加了 robots.txt ?虽然这不能解决恶意bot的使用问题,但您可能会对网站上已经发生的合法爬行活动感到惊讶。

        6
  •  0
  •   berkay    16 年前

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

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

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

    推荐文章