[javascript] Google +1이 마우스 움직임을 기록하는 이유는 무엇입니까? [닫은]

내 웹 사이트에 Google +1 상자가있는 페이지에만 있습니다.

여기에 이미지 설명을 입력하십시오

마우스를 움직일 때마다 이벤트가 발생하는 것 같습니다. 아무도 그것이 무엇을하는지 알고 있습니까? Google에서 검색했습니다 (아마도 Bing을 한 번 시도해야합니다!). 그러나 아무도 그것에 대해 쓰지 않은 것 같습니다. 방문자가 습관을 탐색하는 것에 대한 정보를 기록하고 있습니까? 인간과 같은 행동을 감지하는 것이 일종의 보안 문자입니까?

URL 예, 크롬에서 F12 키를 누르고 타임 라인으로 이동하여 레코드를 누른 다음 마우스를이 페이지 주위로 이동하십시오 (이 질문에 더해 걱정하지 마십시오).

https://plusone.google.com/u/0/_/+1/button?hl=ko-KR&jsh=r%3Bgc%2F22224365-adc8a19e#url=/programming/6667544/google -1-recording-mouse-move & size = tall & count = true & id = I1_1310488711647 & parent = https : //plusone.google.com/u/0/_/+1/button? hl = ko-KR & jsh = r % 3Bgc % 2F22224365-adc8a19e # url = https : //stackoverflow.com/questions/6667544/google-1-recording-mouse-move&size=tall&count=true&id=I1_1310488711647

가치가있는 것 (이것이 인기있는 질문 일 것임을 알 수 있습니다), 그 뒤에 사악한 것이 없다고 생각하지 않으며 쓸모없는 인공물 / 버그 일 수도 있지만 일종의 추적을 수행하는 경우, 글쎄, 그것은 조금기만적인 것 같습니다.

Google +1 개인 정보 취급 방침

http://www.google.com/intl/en/privacy/plusone/

Google +1 버튼 개인 정보 취급 방침

2011 년 6 월 28 일

Google 개인 정보 취급 방침에는 Google +1 버튼을 사용할 때 제공되는 정보를 포함하여 Google 제품 및 서비스를 사용할 때 개인 정보를 취급하는 방법이 설명되어 있습니다. 또한 다음은 +1 버튼 사용과 관련된 추가 개인 정보 보호 관행에 대해 설명합니다.

수집 한 정보 및 공유 방법

Google +1 버튼을 사용하면 전세계 사람들과 정보를 공개적으로 공유 할 수 있습니다. Google +1 버튼은 귀하와 다른 사람들이 Google 및 파트너로부터 맞춤 콘텐츠를받는 데 도움이됩니다. +1 버튼을 클릭했을 때보고 있던 페이지에 대한 정보와 함께 +1 한 내용이 Google에 기록됩니다. +1은 Google 서비스 (예 : 검색 결과 또는 Google 프로필) 또는 웹 사이트 및 인터넷의 다른 곳에서 프로필 이름과 사진이있는 주석으로 다른 사람에게 표시 될 수 있습니다.

Google은 귀하와 다른 사용자에게 Google 서비스에 대한 더 나은 경험을 제공하기 위해 귀하의 +1 활동에 대한 정보를 기록합니다.

Google +1 버튼을 사용하려면 최소한 공개적으로 공개 된 Google 프로필이 있어야하며 여기에는 최소한 프로필에 대해 선택한 이름이 포함됩니다. 이 이름은 Google 서비스에서 사용되며 경우에 따라 Google 계정에서 콘텐츠를 공유 할 때 사용한 다른 이름을 대체 할 수도 있습니다. 귀하의 이메일 주소 나 기타 식별 정보가있는 사람들에게 귀하의 Google 프로필 신원이 표시 될 수 있습니다.

수집 된 정보의 사용

위에서 설명한 용도 외에도 귀하가 제공 한 정보는 Google의 기본 개인 정보 취급 방침에 따라 사용됩니다.

Google은 사용자의 +1 활동과 관련된 집계 통계를 일반인, 사용자 및 게시자 (예 : 게시자, 광고주 또는 연결된 사이트)와 공유 할 수 있습니다. 예를 들어 게시자에게 “이 페이지를 +1 한 사람의 10 %가 워싱턴 주 타코마에 있습니다”라고 말할 수 있습니다.

당신의 선택

프로필의 +1 탭에서 +1 한 항목 목록을 볼 수 있습니다. 해당 목록에서 개별 항목을 제거 할 수 있습니다.

알고있는 사람들의 타사 웹 사이트 (타사 사이트의 광고 포함)에 대한 +1 권장 사항 표시를 거부 할 수 있습니다.

브라우저에 데이터 (예 : 최근 +1)가 로컬로 저장됩니다. 브라우저 설정에서이 정보에 액세스하고 지울 수 있습니다.

추가 정보

Google은 미국 세이프 하버 개인 정보 보호 원칙을 준수합니다. Safe Harbor 프레임 워크 또는 등록에 대한 자세한 내용은 Department of Commerce 웹 사이트를 참조하십시오.



답변

마우스 움직임으로 난수 생성기를 시드하는 것으로 보입니다.

마우스 이동 처리기 자체는 다음과 같은 작업을 수행합니다.

var b = ((event.X << 16) + event.Y) * (new Date().getTime() % 1000000);
c = c * b % d;
if (previousMouseMoveHandler) previousMouseMoveHandler.call(arguments);

dis (screen.width * screen.width + screen.height) * 1000000이며 c1로 시작하는 변수입니다.

이 모든 것은 익명 함수의 범위에 싸여 있으며 “random”이라는 속성에 할당 된 함수를 반환하기 위해 즉시 평가됩니다. 반환 된 함수는 다음과 같습니다.

var b = c;
b += parseInt(hash.substr(0,20), 16);
hash = MD5(hash);
return b / (d + Math.pow(16, 20));

hash, BTW는 페이지 쿠키, 위치 new Date().getTime(), 및 의 MD5 해시로 시작하는 변수입니다 Math.random().

물론 Google은 언제든지 반환 된 스크립트를 변경하여이 분석을 무효화 할 수 있습니다.


답변

실행되는 실제 코드는 여기에있는 Shindig 코드에서 파생됩니다.

http://svn.apache.org/repos/asf/shindig/trunk/features/src/main/javascript/features/shindig.random/random.js

여기에서 작성된 보안 postMessage 채널이 임의의 조치를 실행하기 위해 페이지의 스크립트에 의해 손상되지 않도록하려면 보안 난수가 필요합니다.

Math.random () 사용이 왜 나쁜지를 설명하는 기사는 다음과 같습니다.

http://baagoe.com/en/RandomMusings/javascript/


답변

스크립트를 먼저로드 할 수있는 경우 addEventListener를 연결하고 addEventListener를 설정하는 모든 사람을 기록하고 누가하고 있는지 확인한 다음 관련 코드를보고 수행중인 작업을 확인할 수 있습니다.

Google 코드가로드되기 전에이 위치에 두십시오.

var oldListener = document.addEventListener;
document.addEventListener = function(type, listener, capture) {
    if (type == "mousedown" || type == "mouseup" || type == "mousemove") {
        console.log("type=" + type + " listener=" + listener.toString().slice(0, 80));
    }
    return (oldListener.apply(this, arguments));
}

window.onmousemove를 듣고있는 것을 보려면 나중에 가로 챌 수없는 함수가 아니라 변수 할당이므로 나중에해야합니다. 따라서 때때로 페이지의 초기화 코드가 실행 된 후 연결된 코드를 기록하기 위해이 작업을 수행합니다.

if (window.onmousemove) {
    console.log(window.onmousemove.toString().slice(0,80));
}


답변

7 월 22 일 의 정리되지 않은 코드 에서 onmousemove가 Gb.random 클래스의 일부임을 알 수 있습니다.

Gb.random = function () {
    function a(a) {
        var b = Jb();
        b.update(a);
        return b.ib()
    }
    var b = la.random(),
        c = 1,
        d = (screen[za] * screen[za] + screen[J]) * 1E6,
        e = i.onmousemove || Db();
    i.onmousemove = function (a) {
        if (i.event) a = i.event;
        var b = a.screenX + a.clientX << 16;
        b += a.screenY + a.clientY;
        b *= (new Date)[Ta]() % 1E6;
        c = c * b % d;
        return e[G](i, ka[x][Aa][G](arguments))
    };
    var f = a(k.cookie + "|" + k[B] + "|" + (new Date)[Ta]() + "|" + b);
    return function () {
        var b = c;
        b += ia(f[cb](0, 20), 16);
        f = a(f);
        return b / (d + la.pow(16, 20))
    }
}();

비트 쉬프트를 사용하여 x와 y의 합에 2 ^ 16을 곱한 다음 다른 차원을 추가하고 밀리 초 단위로 mod 1000000 단위로 시간을 곱하는 것입니다. 이것은 무작위 알고리즘처럼 보입니다.

왜 페이지에 이와 같은 것이 필요한지 잘 모르겠습니다. 아마도 쿠키를 사용하여 자동화 된 +1 클릭을 막을 수 있습니까? “+1″을 클릭하면 팝업 화면에 임의의 숫자가 해시로 추가 된 것으로 보이며 URL은 “& hl = ko-US # RANDOMNUMBER”로 끝납니다.


답변

“인 페이지 웹 로그 분석”베타에 대해 확신합니다. 커서를 만들고 히트 맵을 클릭하십시오.


답변

CHI 2010의 Guo와 Agichtein의 논문이 http://www.mathcs.emory.edu/~qguo3/wip287-guo11.pdf의 Google이 왜 그렇게하고 있는지에 대한 추가 아이디어를 제공 할 수 합니다.

분명히 마우스 움직임은 눈 움직임의 대략적인 프록시이며 사람들이 눈 추적 결과에 근접 할 수 있도록합니다.


답변

아마도 사용자가 한 UI 항목에서 다른 UI 항목으로 얼마나 빨리 이동하는지, 클릭 누락 횟수 등을 측정하는 데 사용합니다.

필자는 일반적으로 침입 기능에 대한 냉소적 인 견해를 가지고 있지만 이것이 개인 정보 보호 위험이라고 생각하지 않습니다. 너무 이례적으로 세밀하기 때문에 충격적이지만 공개 되지는 않습니다. . 마우스 움직임으로 은행 정보가 인코딩됩니까? 포르노?

Google 등은 사용자를 추적 할 수있는 많은 고품질 데이터를 보유하고 있습니다. 마우스 좌표는 적용이 매우 제한되어 있습니다.

주제를 조금 벗어나려면 :

어느 정도, 사람들에 대한 데이터가 많을수록 더 많은 문제가 있습니다. 나는 정보 기관이 데이터 가속에 대한 데이터 수집에 의해 유발되는 수많은 오탐 (false positive)으로 고통 받고 있다고 들었습니다. 나는 이것이 다소 재미있는 것을 발견했다.