刮从谷歌Analytics(分析)实时访客(Scraping Real Time Visitors

2019-06-25 11:03发布

我有很多的网站,并希望打造出一个页面上每个人的实时游客数量的仪表板。 (将别人想的?)现在查看此信息的唯一方法是打开一个新的标签为每个站点。

谷歌没有实时API,所以我不知道是否有可能凑这个数据。 爱德华Cereto发现,谷歌在实时/绑定网络请求实时数据传送。 任何人都更精明有我应该如何开始的想法? 下面是我在想什么:

  1. 弄清楚如何编程认证
  2. 检查所有实时/绑定请求 ,看看他们如何改变。 是否每个请求有一个唯一的钥匙吗? 在这情况下从何而来? 下面是我的要求的明细:

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

    &键= [这是什么? 它从何而来? 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,叔: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时

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

    19 [[151,[ “空操作”]]] 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], “姓名”: “总”}]}}]]]] 388 [[153,[“室温”,[{ “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], “姓名”: “总”}]}}]]]] 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], “名”:”共有“}]}}]]]]

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

Answer 1:

要获得相同,谷歌已经推出了新的实时API。 有了这个API,你可以轻松地检索实时在线访问者以及一些谷歌分析以下维度和指标。 https://developers.google.com/analytics/devguides/reporting/realtime/dimsmets/

这非常类似于谷歌Analytics(分析)API。 要在此开始发展, https://developers.google.com/analytics/devguides/reporting/realtime/v3/devguide



Answer 2:

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

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

好像连接保持打开2.5分钟,在这段时间它只是让越来越多的数据。

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

在网络面板,你只能看到该终止连接的数据。 所以,把它打开5分钟左右,你就可以开始看到的数据。

我希望可以给你一个地方开始。



Answer 3:

在回路中有谷歌似乎相当多余。 建议你使用从仪表盘服务器按需提供一个常见的元素,包括:通过对所有页面的绝对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:数据库还可以添加时间戳数据IT卖场中的每一行。 这可以用来进一步筛选结果,并提供在最后一个小时或分钟的参观人数。

与AJAX客户端的JavaScript进行微调或矫枉过正的onblur和聚焦状态JavaScript命令可以用来告诉我们,如果该页面是可见的,通过Ajax的数据传回给仪表盘服务器。 http://www.thefutureoftheweb.com/demo/2007-05-16-detect-browser-window-focus/

当访问者关闭页面这也可以通过在body标签的JavaScript函数onunload的被检测和Ajax可以用来将数据发送回服务器最后一次浏览器终于关闭页面之前。

正如你可能还希望收集有关像谷歌分析访问者的一些信息做这个页面https://panopticlick.eff.org/有大量的JavaScript可以检查和调整的。



Answer 4:

我需要/想实时数据供个人使用的,所以我反向工程的系统一点点。

相反,结合/bind我得到的数据/getData (没有双关语意)。

/getData最小请求显然: https://www.google.com/analytics/realtime/realtime/getData?pageId&key={{propertyID}}&q=t:0|:1

下面是可能的查询参数和语法的简短说明,请记住,这些都是猜测,我不知道所有的人:

查询语法: pageId&key=propertyID&q=dataType:dimensions|:page|:limit:filters

价值观:

pageID: Required but seems to only be used for internal analytics.

propertyID: a{{accountID}}w{{webPropertyID}}p{{profileID}}, as specified at the Documentation link below. You can also find this in the URL of all analytics pages in the UI.


dataType:
    t: Current data
    ot: Overtime/Past
    c: Unknown, returns only a "count" value


dimensions (| separated or alone), most values are only applicable for t:
    1:  Country
    2:  City
    3:  Location code?
    4:  Latitude
    5:  Longitude
    6:  Traffic source type (Social, Referral, etc.)
    7:  Source
    8:  ?? Returns (not set)
    9:  Another location code? longer.
    10: Page URL
    11: Visitor Type (new/returning)
    12: ?? Returns (not set)
    13: ?? Returns (not set)
    14: Medium
    15: ?? Returns "1"

page:
    At first this seems to work for pagination but after further analysis it looks like it's also used to specify which of the 6 pages (Overview, Locations, Traffic Sources, Content, Events and Conversions) to return data for.

    For some reason 0 returns an impossibly high metrictotal

limit: Result limit per page, maximum of 50

filters:
    Syntax is as specified at the Documentation 2 link below except the OR is specified using | instead of a comma.6==CUSTOM;1==United%20States


还可以通过逗号结合多个查询中一个请求将它们分开(即q=t:1|2|:1|:10,t:6|:1|:10 )。

按照上面的“文档”,如果你想建立一个与位于美国,你会使用这个网址CUSTOM的流量来源类型要求排名前10位的活跃访客的页面URL和城市查询: https://www.google.com/analytics/realtime/realtime/getData?key={{propertyID}}&pageId&q=t:10|2|:1|:10:6==CUSTOM;1==United%20States


文档

文档2


我希望我的回答是可读的,(虽然这是一个有点晚)充分回答你的问题,并在未来帮助别人。



文章来源: Scraping Real Time Visitors from Google Analytics