Google Analytics에서 실시간 방문자 스크랩
저는 많은 사이트를 가지고 있고 각각의 사이트의 실시간 방문자 수를 한 페이지에 보여주는 대시보드를 만들고 싶습니다.(다른 사람이 이것을 원하겠습니까?)현재 이 정보를 볼 수 있는 유일한 방법은 각 사이트에 대해 새 탭을 여는 것입니다.
구글에는 실시간 API가 없어서 이 데이터를 긁어내는 것이 가능한지 궁금합니다.Eduardo Cereto는 Google이 실시간/바인드 네트워크 요청을 통해 실시간 데이터를 전송한다는 것을 알게 되었습니다.내가 어떻게 시작해야 할지 아는 사람?제 생각은 이렇습니다.
프로그래밍 방식으로 인증하는 방법 알아보기
모든 실시간/바인딩 요청을 검사하여 변경 방법을 확인합니다.각 요청에는 고유한 키가 있습니까?그건 어디서 온 거지?아래는 저의 요청 내역입니다.
https://www.google.com/analytics/realtime/bind?VER=8
&
key
[이게 뭐죠? 어디서 왔습니까? 21자 소문자 영숫자, 각 요청은 동일하게 유지됩니다]&
ds
[이게 뭐죠? 어디서 왔습니까? 21자 소문자 영숫자, 각 요청은 동일하게 유지됩니다]&
pageId
=rt-rtpx% 개요&
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% 3D 기% 3B% 2C% A10%7C%3A1%3A10%3A%2Ct%3A18%7C%3A1%3A10%3A%2Ct%3A4%7C5%7C2%7C%3A1%3A10%3A2!%3Dzz%3B%2C&f그
q
변수 URI가 이를 디코딩합니다(무엇이?).10:,10:10:,|:1::0:0,t:11|1:5:0:0:0:10,t:10:1,t:10:10:10:10:10:10:1,t.t.t|&
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":[{"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"}]}}]]]
]
위의 항목 중에 도와줄 수 있는 것이 있으면 알려주세요!
이를 위해 구글은 새로운 실시간 API를 출시했습니다.이 API를 사용하면 실시간 온라인 방문자뿐만 아니라 다음과 같은 차원과 측정 기준으로 여러 Google Analytics를 쉽게 검색할 수 있습니다.https://developers.google.com/analytics/devguides/reporting/realtime/dimsmets/
이는 Google Analytics API와 매우 유사합니다.이에 대한 개발을 시작하려면 https://developers.google.com/analytics/devguides/reporting/realtime/v3/devguide 을 참조하십시오.
Google Chrome을 사용하면 네트워크 패널에서 데이터를 볼 수 있습니다.
은 요청끝다같다니습과입니다.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);
?>
암멘덤:데이터베이스는 저장하는 모든 데이터 행에 타임스탬프를 추가할 수도 있습니다.이를 사용하여 결과를 추가로 필터링하고 최근 1시간 또는 1분 동안 방문자 수를 제공할 수 있습니다.
미세 조정 또는 오버킬을 위한 AJAX를 사용하는 클라이언트 측 Javascript onblur 및 onfocus javascript 명령을 사용하여 페이지가 보이는지 여부를 알 수 있으며, Ajax를 통해 데이터를 대시보드 서버로 다시 전달할 수 있습니다.http://www.thefutureoftheweb.com/demo/2007-05-16-detect-browser-window-focus/
방문자가 페이지를 닫으면 본문 태그의 javascript on unload 기능을 통해 이를 감지할 수 있으며 브라우저가 페이지를 닫기 전에 Ajax를 사용하여 마지막으로 서버로 데이터를 다시 보낼 수 있습니다.
Google 분석과 같이 방문자에 대한 정보를 수집하고 싶을 수도 있으므로 https://panopticlick.eff.org/ 에는 검사하고 수정할 수 있는 자바스크립트가 많이 있습니다.
저는 개인적인 용도로 사용할 실시간 데이터가 필요했습니다. 그래서 그들의 시스템을 약간 리버스 엔지니어링했습니다.
에 바인딩하는 대신/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 및 도시를 요청하는 쿼리를 작성하려면 다음 URL을 사용합니다.https://www.google.com/analytics/realtime/realtime/getData?key={{propertyID}}&pageId&q=t:10|2|:1|:10:6==CUSTOM;1==United%20States
저는 제 대답이 읽을 수 있고 (조금 늦었지만) 충분히 당신의 질문에 대답하고 앞으로 다른 사람들에게 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/11021554/scraping-real-time-visitors-from-google-analytics
'programing' 카테고리의 다른 글
"초당 쿼리 수"를 측정하는 방법은 무엇입니까? (0) | 2023.09.04 |
---|---|
Play! & MariaDB - InnoDB를 사용할 때 큰 767바이트로 인덱싱 (0) | 2023.09.04 |
파이썬에서 문자열 리터럴을 탈출하지 않고 작성하는 방법은 무엇입니까? (0) | 2023.09.04 |
CSS: 애니메이션 vs.전이 (0) | 2023.09.04 |
Django Rest Framework의 응답에 중간자(모델을 통해) 포함 (0) | 2023.09.04 |