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


196

내 웹 사이트에 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 웹 사이트를 참조하십시오.


3
Human like behavior? 흥미로운 생각입니다. 비슷한 마우스 추적 코드를 한 번 보았습니다.이 코드는 단순히 전역 변수로 X / Y 좌표를 기록하는 것입니다. 나중에 jQuery 플러그인에서 사용자 정의 스크롤을 시작 / 중지 / 취소하는 데 사용되었습니다. 이 글로벌 추적보다 나은 구현이있었습니다 (결국 변경되었습니다).
Mr.

7
@Mrchief, 일부 포커 클라이언트는 마우스 움직임을 사용하여 자동 플레이어를 감지합니다 .Google은 프로필을 작성하고 많은 사이트를 +1하는 봇에 대해 효과적인 방어책이라고 생각하지만 사이트에 가중치를 부여하여 불공정 한 경쟁 우위를 점할 수 있다고 생각했습니다. 그래도 누가 알 겠어?
Tom Gullen

1
페이스 북이 왜 그런 짓을하지 않는지 궁금해 ... (또는 그렇게합니까?)
Mr.

7
일종의 UI 테스트를위한 것일 수 있습니다. 나는 구글이 많은 a / b 테스트를 좋아한다는 것을 알고 있기 때문에 41 번의 파란색 테스트 가 잠시 되돌아 왔습니다. 아마도 그들은 더 나은 UI를 제공하기 위해 사용자가 페이지를 어떻게 이동하는지 추적하려고합니다.
Greg Guida

사용중인 도구는 무엇입니까?
Sid

답변:


123

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

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

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은 언제든지 반환 된 스크립트를 변경하여이 분석을 무효화 할 수 있습니다.


4
큰 대답 덕분에 왜 난수가 필요할까요? 나는 마우스 움직임이 임의의 숫자를 생성하는 아주 좋은 방법이라는 것을 알고 있지만 (모바일이없는) 모바일 장치에서는 이것이 실패하지 않을 것입니다.
Tom Gullen

27
Math.random()현재 타임 스탬프에서 시드 되지 않습니까? 그렇다면 이와 같이 널리 배포 된 버튼을 사용하면 많은 충돌이 발생할 수 있습니다. 추가 노력을 설명 할 수 있습니다.
Yahel

7
@yahelc : 도움이 될 것 입니다. 간단히 말해 2008 년에 대부분의 브라우저는 프로세스 시작시 또는 프로세스 또는 창 / 탭에서 Math.random ()을 처음 호출 할 때 한 번만 시드되었습니다. 물론 그때부터 상황이 바뀌었을 수도 있습니다.
Anomie

3
이것은 이상하게 보이지만 이것이 목적이라면 window.crypto.getRandomValues를 사용하지는 않을 것입니다 : (function () {var buf = new Uint8Array (1); window.crypto.getRandomValues ​​(buf); alert (buf [ 0])}) ()
Rich Bradshaw

3
더 나은 무작위 생성기 시드를 제공한다고 가정하면 Google에서 제공하는 시드이면 충분합니다. 또는 적어도 하나 또는 두 개의 마우스 움직임. 현재의 방식은 실제로 조금 의심스러운 것 같습니다. 다른 사람들이 제공하지 못한 곳에서 Google에 투명성을 표시하게하는 것이 좋습니다.
Wernight

47

실행되는 실제 코드는 여기에있는 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/


32

스크립트를 먼저로드 할 수있는 경우 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));
}

2
좋은 생각이지만 스크립트가 이전 스타일을 window.onmousemove대신 설정하면 작동하지 않습니다 (Google의 스크립트와 동일).
Anomie

이 경우에도 같은 방식으로 연결할 수 있습니다.
jfriend00

@ Ben Alpert-위의 답변에 window.onmousemove에 대한 코드를 추가했습니다.
jfriend00

함수 코드 자체는 임의로 길 수 있습니다. 우리는 콘솔에 여러 kb를 덤프하고 싶지 않으므로 로그 창을 압도하지 않는 더 짧은 한계를 선택했습니다. 그것이 코드의 위치를 ​​식별하기에 충분하지 않으면 숫자를 늘릴 수 있지만 길이의 상한이 없으면 로그 창에서 내용을 보는 것이 실용적이지 않을 수 있습니다.
jfriend00

17

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"로 끝납니다.


4

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


정확히 같은 않는 좋은 프로젝트도있다 이 Node.js를 응용 프로그램을 예를 들어이
부두 파올로 라몬

+1 (Sic) 사람들이 어디를 클릭하여 유용한 지, 어떤 장소가 광고에 가장 적합한 지 알기 위해 클릭하는 것이 좋습니다.
rds

좋은 생각이지만 주제와는 아무 관련이 없습니다;)
naugtur


1

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

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

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

주제를 조금 벗어나려면 :

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


Google +1 스크립트를 사용하면 마우스를 컨트롤에 사용하는 미니 게임에 표시됩니다. 실제로 많은 노이즈가 발생합니다. XD
PicoCreator

1

이 마우스 움직임 데이터로 Google이하는 일을 확실히 말할 수는 없습니다. 당신이 볼 수 있듯이, 그것은 많은 양의 정보를 서버로 다시 반환하지 않으므로 걱정할 필요가 없습니다.

첫 번째는 아마도 일반 이벤트 핸들러 일 것입니다. 소스를 읽는다면 throw Error ( "Invalid listener argument"); 전에 라인에서 볼 수 있습니다. 다음 또는 다음 다음에는 Error ( "Invalid event type")가 발생합니다. 시작된 행이이 두 (이벤트 관련) 예외 사이에 있기 때문에 일종의 이벤트 처리기라고 확신합니다. 디버거를 사용하면 실제로 다른 작업으로 이동하지 않으므로 향후 구현을 위해 존재하는 것 같습니다.

두 번째 기능은 첫 번째 기능과 동일합니다. gTalk이기 때문에 (귀하의, 온라인 등) 상태를 업데이트한다고 가정합니다.

세 번째는 콘텐츠 업데이터 또는 비슷한 것으로 보입니다. 캐시 타임 아웃과 같은 문자열이 흩어져 있기 때문입니다.

내 2 센트


1

이것은 실제로 가져온 것 이상이지만, 어쨌든 그것은 간다 ...

시작점에서 다른 끌어 당김자를 향한 마우스 움직임의 궤도 및 곡률 유형을 중심으로 회전합니다. 즉, 페이지에서 2 개의 항목 / 링크를 가져옵니다.

http://sciencestage.com/v/26698/dynamics-and-embodiment-in-language-comprehension.html

간단히 말해, 두 개의 경쟁 링크 / 버튼을 배치하고 해당 링크 중 하나에 대한 궤적을 분석하는 경우 해당 링크 중 하나만 클릭 하기로 결정한 방법 또는 패턴을 추론 할 수 있습니다 (13:00 경 vid 참조)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.