2012-10-28 52 views
3

我通過我的Rails應用程序中的Mixpanel跟蹤事件。例如,我的控制器看起來像在Rails應用程序中跟蹤事件時忽略機器人

class HomeController < ApplicationController 
    def index 
    track_event "Visitor: View Landing Page" 
    end 
end 

的問題是,應用進行了由多個機器人,最著名的是Pingdom的(性能跟蹤服務,我們使用)擊中。有沒有一種乾淨的方式來忽略跟蹤,當它是一個機器人擊中我的應用程序?

注意:我有興趣跟蹤唯一身份訪問者,因此我爲每個訪問者分配一個具有唯一ID的Cookie。機器人顯然不存儲餅乾。

+0

我沒有使用Pingdom的,但我想,你爲它們指定加載一個URL。如果是,請在查詢字符串中包含一個特殊的「bot = 1」參數。 :) –

+0

@SergioTulentsev問題是,有可能其他機器人訪問,不應該被跟蹤。例如:谷歌機器人,bing機器人等 –

回答

5

傳統的做法是建立bot用戶代理索引,並在UA匹配bot時簡單忽略跟蹤事件代碼。

bots = /Googlebot|Pingdom|.../ 
unless request.env["HTTP_USER_AGENT"].match(bots) 
    track_event(...) 
end 

這是一個痛苦的維持,但它通常是有效的。對於任何對他們的UA撒謊的人來說,這顯然不是有效的,但除了通過啓發式檢測來確定他們不是機器人之外,你可以做的並不多,但這可能不值得在這種情況下付出努力。

+0

任何原因,它不能成爲白名單,而不是黑名單?它只能允許用戶代理,比如Mozilla,IE,ipad等。 –

+1

沒有理由,除非你最終將很多工作放在構建和維護有效用戶代理的白名單上。他們在不斷變化,這些日子裏使用的代理商數量非常多。 –