从Google Analytics(分析)中抓取实时访问者

我有很多网站,并希望构建一个仪表板,在单个页面上显示每个网站上的实时访问者数量。 (其他人是否想要这样?)现在,查看此信息的唯一方法是为每个站点打开一个新选项卡。

谷歌没有一个实时的API,所以我想知道是否有可能刮这些数据。 Eduardo Cereto发现Google通过实时/绑定网络请求传输实时数据。 任何更精明的人都知道我该如何开始? 以下是我的想法:

  • 找出如何以编程方式进行身份验证
  • 检查所有的实时/绑定请求,看看它们是如何改变的。 每个请求是否有唯一的密钥? 这是从哪里来的? 以下是我的请求细目:

    https://www.google.com/analytics/realtime/bind?VER=8

    &key = [这是什么? 它从何而来? 21个字符小写字母数字,每个请求保持不变]

    &ds = [这是什么? 它从何而来? 21个小写字母数字字符,每个请求保持不变]

    &PAGEID = RT-标准%2Frt-概述

    &Q = T%3A0%7C%3A1%3A0%3A%2CT%3A11%7C%3A1%3A5%3A%2Cot%3A0%3A0%3A4%2Cot%3A0%3A0%3A3%2CT%3A7%7C%3A1% 3A10%3A6%3D%3DREFERRAL%3B%2CT%3A10%7C%3A1%3A10%3A%2CT%3A18%7C%3A1%3A10%3A%2CT%3A4%7C5%7C2%7C%3A1%3A10%3A2! %3Dzz%3B%2C&F

    q变量URI解码为这个(什么?):t:0 |:1:0:,t:11 |:1:5:,ot:0:0:4,ot:0:0:3,t :7 |:1:10:6 ==转诊;,T:10 |:1:10:,T:18 |:1:10:,T:4 | 5 | 2 |:1:10:2 = ZZ;,&F

    &RID = RPC

    &SID = [这是什么? 它从何而来? 16个字符的大写字母数字,保持相同的每个请求]

    &CI = 0

    &AID = [这是什么? 它从何而来? 整数,从1开始,奇怪地增加到150,然后是298]

    &TYPE = XMLHTTP

    &zx = [这是什么? 它从何而来? 12个字符小写字母数字,更改每个请求]

    &t = 1时

  • 检查所有的实时/绑定响应,看看它们是如何改变的。 数据如何进入? 它看起来像一些改变的JSON。 我需要连接多少次以获取数据? 那里的活跃访客在哪里? 以下是样本数据的转储:

    19 [[151,[“noop”]]] 388 [[152,[“rt”,[{“ot:0:0:4”:{“timeUnit”:“MINUTES”,“overTimeData”值“:[49,53,52,40,42,55,49,41,51,52,47,42,62,82,76,71,81,66,81,86,71,66,65, 65,55,51,53,73,71,81], “姓名”: “合计”}]}, “OT:0:0:3”:{ “TIMEUNIT”: “秒”, “overTimeData”:[ { “值”:[0,1,1,1,1,0,1,0,1,1,1,0,2,0,2,2,1,0,0,0,0,0, 2,1,1,2,1,2,0,5,1,0,2,1,1,1,2,0,2,1,0,5,1,1,2,0,0, 0,0,0,0,0,0,0,1,1,0,3,2,0],“name”:“Total”}]}}]]]] 388 [[153,[“rt ”,[{ “OT:0:0:4”:{ “TIMEUNIT”: “MINUTES”, “overTimeData”:[{ “值”:[52,53,52,40,42,55,49,41, 51,52,47,42,62,82,76,71,81,66,81,86,71,66,65,65,55,51,53,73,71,81], “名”:”总 “}]},” OT:0:0:3 “:{” TIMEUNIT “:” 秒”, “overTimeData”:[{ “值”:[2,1,1,1,1,1,0, 1,0,1,1,1,0,2,0,2,2,1,0,0,0,0,0,2,1,1,2,1,2,0,5,1, 0,2,1,1,1,2,0,2,1,0,5,1,1,2,0,0,0,0,0,0,0,0,0,1,1, 0,3,2]“name”:“Total”}]}}]]]] 388 [[154,[“rt”,[{“ot:0:0:4”:{“timeUnit”:“ MINUTES”, “overTimeData”:[{ “值”:[53,53,52,40,42,55,49,41,51,52,47,42,62,82,76,71,81,66, 81,86,71,66,65,65,55,51,53,73,71,81], “名”: “总”}]},“OT:0:0 :3 “:{” TIMEUNIT “:” 秒”, “overTimeData”:[{ “值”:[0,3,1,1,1,1,1,0,1,0,1,1,1, 0,2,0,2,2,1,0,0,0,0,0,2,1,1,2,1,2,0,5,1,0,2,1,1,1, 2,0,2,1,0,5,1,1,2,0,0,0,0,0,0,0,0,0,1,1,0,3], “名”:”总计“}]}}]]]]

  • 让我知道,如果你可以帮助上面的任何项目!

    在这里输入图像描述


    为了获得相同的结果,谷歌推出了新的实时API。 使用此API,您可以轻松检索实时在线访问者以及具有以下维度和指标的多个Google Analytics(分析)。 https://developers.google.com/analytics/devguides/reporting/realtime/dimsmets/

    这与Google AnalyticsAPI非常相似。 要开始这项工作,请https://developers.google.com/analytics/devguides/reporting/realtime/v3/devguide


    使用谷歌浏览器,我可以在网络面板上看到数据。

    请求端点是https://www.google.com/analytics/realtime/bind

    似乎连接保持打开状态的时间为2.5分钟,并且在此期间它只是获得越来越多的数据。

    大约2.5分钟后,连接关闭并打开一个新连接。

    在“网络”面板上,您只能看到终止连接的数据。 因此,请将其打开5分钟左右,然后您就可以开始查看数据了。

    我希望能给你一个开始的地方。


    谷歌在循环似乎相当多余。 建议您使用仪表板服务器按需提供的通用元素,并在给定站点的所有要监视的页面上通过绝对URL包含此项目。 输出项目的脚本可以读取浏览器询问的IP,并且这些都可以登录到数据库并过滤以获得实时头数的唯一性。

    <?php
    $user_ip = $_SERVER["REMOTE_ADDR"];
    /// Some MySQL to insert $user_ip to the database table for website XXX  goes here
    
    
    $file = 'tracking_image.gif';
    $type = 'image/gif';
    header('Content-Type:'.$type);
    header('Content-Length: ' . filesize($file));
    readfile($file);
    ?>
    

    Ammendum:数据库还可以为其存储的每一行数据添加一个时间戳。 这可用于进一步过滤结果并提供过去一小时或一分钟内的访问者数量。

    带有AJAX的客户端Javascript用于微调或矫正过度 onblur和onfocus javascript命令可用于判断页面是否可见,并通过Ajax将数据传回仪表板服务器。 http://www.thefutureoftheweb.com/demo/2007-05-16-detect-browser-window-focus/

    当访问者关闭页面时,也可以通过body标签中的javascript onunload函数检测到,并且可以使用Ajax在浏览器最终关闭页面之前最后一次将数据发回服务器。

    您也可能希望收集一些关于访问者的信息,例如谷歌分析这个页面https://panopticlick.eff.org/有很多可以检查和修改的javascript。

    链接地址: http://www.djcxy.com/p/68113.html

    上一篇: Scraping Real Time Visitors from Google Analytics

    下一篇: Reshape 3D numpy array with heterogeneous dimensions to 2D numpy array