26

多数のサイトがあり、それぞれのリアルタイムの訪問者数を 1 つのページに表示するダッシュボードを作成したいと考えています。(他の誰かがこれを望むでしょうか?) 現在、この情報を表示する唯一の方法は、各サイトの新しいタブを開くことです。

Google はリアルタイム API を持っていないので、このデータをスクレイピングできるかどうか疑問に思っています。Eduardo Cereto さんは、Google がリアルタイム/バインド ネットワーク リクエストを介してリアルタイム データを転送することを発見しました。もっと精通している人は、私がどのように始めるべきかについて考えを持っていますか? これが私が考えていることです:

  1. プログラムで認証する方法を理解する

  2. すべてのリアルタイム/バインドリクエストを調べて、それらがどのように変化するかを確認します。各リクエストには一意のキーがありますか? それはどこから来たのですか?以下は、リクエストの私の内訳です。

    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

    変数 URI は次のqようにデコードされます (何が?): t:0|:1:0:,t:11|:1:5:,ot:0:0:4,ot:0:0:3,t: 7|:1:10:6==REFERRAL;,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,["noop"]
]
]
388
[[152,["rt",[{"ot:0:0:4":{"timeUnit":"MINUTES","overTimeData":[{"values":[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],"name":"Total"}]},"ot:0:0:3":{"timeUnit":"SECONDS","overTimeData":[{"values":[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":[{"values":[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],"name":"Total"}]},"ot:0:0:3":{"timeUnit":"SECONDS","overTimeData":[{"values":[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":[{"values":[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],"name":"Total"}]},"ot:0:0:3":{"timeUnit":"SECONDS","overTimeData":[{"values":[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],"name":"Total"}]}}]]]
]

上記の項目のいずれかでお手伝いできることがあればお知らせください。

ここに画像の説明を入力

4

4 に答える 4

10

同じことを実現するために、Google は新しい Real Time API を開始しました。この API を使用すると、リアルタイムのオンライン訪問者だけでなく、次のディメンションと指標を使用していくつかの Google アナリティクスを簡単に取得できます。https://developers.google.com/analytics/devguides/reporting/realtime/dimsmets/

これは、Google アナリティクス API と非常によく似ています。これで開発を開始するには、 https://developers.google.com/analytics/devguides/reporting/realtime/v3/devguide

于 2013-08-04T08:21:46.690 に答える
6

Google Chromeを使用すると、ネットワークパネルにデータを表示できます。

リクエストエンドポイントはhttps://www.google.com/analytics/realtime/bind

接続は2.5分間開いたままであるように見えますが、この間、接続はますます多くのデータを取得し続けます。

約2.5分後、接続が閉じられ、新しい接続が開かれます。

ネットワークパネルでは、終了した接続のデータのみを表示できます。したがって、5分ほど開いたままにしておくと、データの表示を開始できます。

それがあなたに始める場所を与えることができることを願っています。

于 2012-06-14T07:34:45.223 に答える
6

グーグルをループに入れることはかなり冗長に思えます。ダッシュボード サーバーからオンデマンドで配信される共通要素を使用し、特定のサイトで監視するすべてのページに絶対 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);
?>

補足: データベースは、格納するデータのすべての行にタイムスタンプを追加することもできます。これを使用して、結果をさらにフィルタリングし、過去 1 時間または 1 分間の訪問者数を提供できます。

微調整またはオーバーキル のための AJAX を使用したクライアント側 Javascript onblur および onfocus JavaScript コマンドを使用して、ページが表示されているかどうかを確認し、データを Ajax 経由でダッシュボード サーバーに戻すことができます。http://www.thefutureoftheweb.com/demo/2007-05-16-detect-browser-window-focus/

訪問者がページを閉じると、これは body タグの javascript onunload関数によっても検出でき、Ajax を使用して、ブラウザーが最終的にページを閉じる前にもう一度サーバーにデータを送り返すことができます。

また、Google アナリティクスが行うように、訪問者に関する情報を収集したい場合があるため、このページhttps://panopticlick.eff.org/には、調査および適応できる JavaScript がたくさんあります。

于 2012-06-14T22:41:50.597 に答える
5

個人的に使用するリアルタイム データが必要/欲しかったので、システムを少しリバース エンジニアリングしました。

にバインドする代わりに、/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)、1 つのリクエストに結合することもできます。

上記の「ドキュメンテーション」に従って、トラフィック ソース タイプが CUSTOM である米国内の上位 10 人のアクティブな訪問者のページ URL と都市を要求するクエリを作成する場合は、次の URL を使用します。https://www.google.com/analytics/realtime/realtime/getData?key={{propertyID}}&pageId&q=t:10|2|:1|:10:6==CUSTOM;1==United%20States


ドキュメンテーション

ドキュメンテーション 2


私の答えが読みやすく、(少し遅れていますが)あなたの質問に十分に答え、将来他の人に役立つことを願っています.

于 2013-09-22T15:31:51.233 に答える