Google analytics 谷歌分析实时沙盒环境

Google analytics 谷歌分析实时沙盒环境,google-analytics,Google Analytics,我正在寻找一种方法来建立一个谷歌分析沙箱环境,将允许我 几乎实时地测试我的自定义js代码 我的应用程序将使用自定义变量进行高级细分,我想快速测试多个场景,而不是设置一个虚拟GA帐户并等待一整天来确认测试 谢谢好问题 对于GA,服务器更新每四小时进行一次,在每六次这样的更新之后,整个集合都会重新计算,这意味着从代码更改到可靠反馈有24小时的延迟。此延迟也适用于GA浏览器的大多数自定义设置(例如,“自定义过滤器”) 因此,如果您打算使用GA作为您的web度量系统,并且您希望实际依赖这些数据,那么测试

我正在寻找一种方法来建立一个谷歌分析沙箱环境,将允许我 几乎实时地测试我的自定义js代码

我的应用程序将使用自定义变量进行高级细分,我想快速测试多个场景,而不是设置一个虚拟GA帐户并等待一整天来确认测试

谢谢

好问题

对于GA,服务器更新每四小时进行一次,在每六次这样的更新之后,整个集合都会重新计算,这意味着从代码更改到可靠反馈有24小时的延迟。此延迟也适用于GA浏览器的大多数自定义设置(例如,“自定义过滤器”)

因此,如果您打算使用GA作为您的web度量系统,并且您希望实际依赖这些数据,那么测试平台是必不可少的

对我来说,使用两个准则对客户端分析的测试系统进行分组是很有用的:(i)完整的、自包含的(闭环)系统;或者(ii)从生产系统中提取更简单的自动化数据(这里的“生产系统”是指GA的系统,而不是GA代码跟踪其页面的站点)

对于后者,只需将这一行添加到包含GA跟踪代码的站点的每个页面上,就在“\uu trackPageview()”下面:

该行将导致每个事务行的一个副本记录到服务器的活动日志中——因此本质上,您可以实时获取GA捕获的数据,这就是捕获数据所需的全部工作;要解析它,您可以使用,例如,任何优秀的开源web日志分析器,如,或者使用您自己的

这是简单可靠的——但它所能做的只是告诉您(实时)“我刚才在我的生产服务器提供的页面上实现的分析代码真的有效吗?”

通常情况下,这还不够好——您更希望在代码进入生产服务器之前就知道它是否可以工作。为此,您需要模拟生产环境,并找到一种方法来实时访问GA收集的数据

这种试验台有点复杂,但仍然不难

总之,它需要以下步骤:

  • 托管/服务ga.js和 局部跟踪像素

  • 记录_utm.gif请求(在 GA数据流,每个请求 对应于一个已记录的 交易);及

  • 将标题解析为 方便的可读形式。

  • 如果您想要更多的细节(即,一步一步的实现),这里是:

    I.托管/服务GA脚本(&自动更新)

    为此,您可以创建一个像这样的小shell脚本,将最新的ga.js版本wget到您的本地目录中(替换它在那里找到的现有版本)

    (感谢,它提供了在生产环境中执行此操作的原始动机和配置详细信息。)

    II.创建\uuu utm.gif文件

    这只是一个透明的1x1像素gif图像,您将把它放在站点目录中(不管在哪里,它只需要与页面中叙述的位置相匹配)

    III.记录\uuu utm.gif请求

    对于您是客户端活动来源的测试协议(例如,您希望验证添加到站点页面的某些事件跟踪代码的跨浏览器保真度,因此您可以自动在刚连接的按钮上单击5000次,从为此目的设置的开发服务器为页面提供服务)只记录请求头可能是最简单的,因为GA脚本正是在这些头中指示客户端从DOM、位置栏(url)和以前的http头收集各种数据,并将它们附加到GA服务器上的资源请求中(u_utm.gif,它只是一个1x1透明像素)

    对于这种类型的协议,我使用Firefox插件。您可以像其他Firefox插件一样安装它,只需单击几下鼠标。接下来,打开它,然后单击“生成器”选项卡。在此窗口中,您可以实时查看实际请求。窗口底部有一个“保存”按钮来存储日志。我发现将LiveHTTPHeaders配置为只记录_utm.gif请求更容易;要做到这一点,只需单击“编辑”选项卡并创建一个siimple筛选器,以排除除这些特定gif图像之外的所有内容(使用右侧的复选框和右侧的大文本框)

    其他类型的测试协议要求您从服务器活动日志开始工作;在这种情况下,只需将这一行添加到站点的每个页面,就在_trackPageview()下面:


    IV.解析那些记录的请求,以便您可以实际读取它们

    因此,现在您的日志将包含单独的转换行,其中每一行都是附加到GA跟踪像素HTTP请求的字符串。该字符串只是键-值对的串联,每个键都以字母“utm”开头(可能是“顽童跟踪器”)。这些参数中的每一个都对应于您在GA仪表板中看到的一个变量(以下是它们的名称和说明)。这是构建解析器所需要知道的全部内容。更详细的信息:

    首先,这里是一个经过清理的uu utm.gif请求(LiveHTTPHeaders日志中的条目):

    这是我的解析器(Python):

    结果如下所示:

        gatc_version              1         
        GIF_req_unique_id         1669045322
        language_encoding         UTF-8     
        screen_resolution         1280x800  
        screen_color_depth        24-bit    
        browser_language          en-us     
        java_enabled              1         
        flash_version             10.0%20r45
        campaign_session_new      1         
        page_title                Position%20Listings%20%7C%20Linden%20Lab
        host_name                 lindenlab.hrmdirect.com
        referral_url              http://lindenlab.com/employment
        page_request              /employment/openings.php?sort=da
        account_string            UA-XXXXXX-X
        cookies
    

    为了避免这一过程变得更长,我省略了cookies的值。它们显然需要一个单独的解析步骤,尽管它实际上与我刚才展示的步骤相同。同样,每个请求都代表一个事务,因此您可以根据需要存储它们。

    Doug,感谢您提供如此详细的帖子!我一定会尝试并通知您下周你会看到我的进展。也许你想创建一个谷歌项目,我可以帮助开发一个其他人可以使用的套件?好主意,萨尔曼。我使用GibHub,所以我会在下周把它放在那里,让你知道我什么时候做,在哪里找到它。
    #!/bin/sh
    rm /My_Sites/sitename.com/analytics/ga.js
    cd /My_Sites/sitename.com/analytics/
    wget http://www.google-analytics.com/ga.js
    chmod 644 /My_Sites/sitename.com/analytics/ga.js
    cd ${OLDPWD}
    exit 0;
    
    pageTracker._setLocalRemoteServerMode();
    
    http://www.google-analytics.com/__utm.gif?utmwv=1&utmn=1669045322&utmcs=UTF-8&utmsr=1280x800&utmsc=24-bit&utmul=en-us&utmje=1&utmfl=10.0%20r45&utmcn=1&utmdt=Position%20Listings%20%7C%20Linden%20Lab&utmhn=lindenlab.hrmdirect.com&utmr=http://lindenlab.com/employment&utmp=/employment/openings.php?sort=da&&utmac=UA-XXXXXX-X&utmcc=__utma%3D87045125.1669045322.1274256051.1274256051.1274256051.1%3B%2B__utmb%3D87045125%3B%2B__utmc%3D87045125%3B%2B__utmz%3D87045125.1274256051.1.1.utmccn%3D(referral)%7Cutmcsr%3Dlindenlab.com%7Cutmcct%3D%2Femployment%7Cutmcmd%3Dreferral%3B%2B
    
    # regular expression module imported
    import re
    
    pattern = r'\&{1,2}'
    pat_obj = re.compile(pattern)
    
    # splitting the gif request on the '&' character 
    # (which GA originally used to concatenate each piece to build the request)
    # (here, i've bound the __utm.gif to the variable by 'gfx')
    gfx1 = pat_obj.split(gfx)
    
    # create a look-up table to map a descriptive name to each gif request parameter
    # (note, this isn't the entire list, which i've linked to above)
    keys = "utmje utmsc utmsr utmac utmcc utmcn utmcr utmcs utmdt utme utmfl utmhn utmn utmp utmr utmul utmwv"
    values = "java_enabled screen_color_depth screen_resolution account_string cookies campaign_session_new repeat_campaign_visit language_encoding page_title event_tracking_data flash_version host_name GIF_req_unique_id page_request referral_url browser_language gatc_version"
    keys = keys.strip().split()
    
    #create the look-up table
    GIF_REQUEST_PARAMS = dict(zip(keys, values))
    
    # parse each request parameter and map the parameter name to a descriptive name:
    pattern = r'(utm\w{1,2})=(.*?)$'
    pat_obj = re.compile(pattern)
    
    for itm in gfx1 :
        m = pat_obj.search(itm)
        if m :
            fmt = '{0:25} {1:10}'
            print( fmt.format( GIF_REQUEST_PARAMS[m.group(1)], m.group(2) ) )
    
        gatc_version              1         
        GIF_req_unique_id         1669045322
        language_encoding         UTF-8     
        screen_resolution         1280x800  
        screen_color_depth        24-bit    
        browser_language          en-us     
        java_enabled              1         
        flash_version             10.0%20r45
        campaign_session_new      1         
        page_title                Position%20Listings%20%7C%20Linden%20Lab
        host_name                 lindenlab.hrmdirect.com
        referral_url              http://lindenlab.com/employment
        page_request              /employment/openings.php?sort=da
        account_string            UA-XXXXXX-X
        cookies