在Rails应用程序中跟踪事件时忽略机器人

Mat*_*eon 3 performance ruby-on-rails

我正在通过我的Rails应用程序中的Mixpanel跟踪事件.例如,我的控制器看起来像

class HomeController < ApplicationController
  def index
    track_event "Visitor: View Landing Page"
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是该应用程序受到许多机器人的攻击,最值得注意的是Pingdom(我们使用的性能跟踪服务).当它是一个击中我的应用程序的机器人时,是否有一种干净的方式来忽略跟踪?

注意:我对跟踪唯一身份访问者感兴趣,因此我为每位访问者分配了一个唯一ID的Cookie.机器人显然不存储cookie.

Chr*_*ald 5

执行此操作的传统方法是构建机器人用户代理的索引,并在UA与机器人匹配时忽略您的跟踪事件代码.

bots = /Googlebot|Pingdom|.../
unless request.env["HTTP_USER_AGENT"].match(bots)
  track_event(...)
end
Run Code Online (Sandbox Code Playgroud)

这是一种难以维持的痛苦,但它通常是有效的.对于任何关于他们的UA的人来说,这显然是没有效果的,但除了做启发式检测以确定他们不是机器人之外,你没有太多可以做的事情,但在这种情况下这可能不值得.