Tại sao Google +1 ghi lại chuyển động chuột của tôi? [đóng cửa]


196

Điều này chỉ có trên các trang có hộp Google +1 trên trang web của tôi:

nhập mô tả hình ảnh ở đây

Nó dường như đang bắn ra một sự kiện trên mỗi lần di chuyển chuột. Có ai biết nó đang làm gì không? Tôi đã tìm kiếm trên Google (có lẽ tôi nên thử Bing một lần trên cái này!) Nhưng dường như không ai viết về nó. Có phải nó ghi thông tin về khách truy cập của tôi thói quen duyệt web? Đây có phải là một loại CAPTCHA để phát hiện con người như Behviour không?

Ví dụ URL, nhấn F12 bằng chrome, đi đến dòng thời gian và nhấn bản ghi, sau đó di chuyển chuột của bạn xung quanh trang này (nó cộng với câu hỏi này, đừng lo lắng):

https://plusone.google.com.vn/u/0/_/+1/button?hl=vi -1-records-mouse-move & size = height & Count = true & id = I1_1310488711647 & Parent = https: //plusone.google.com/u/0/_/+1/button? Hl = en-US & jsh = r% 3Bgc% 2F22224365-adc url = https: //stackoverflow.com/questions/6667544/google-1-recply-mouse-move&size=tall&count=true&id=I1_1310488711647

Đối với những gì nó có giá trị (tôi có thể thấy đây sẽ là một câu hỏi phổ biến), tôi không nghĩ có gì xấu xa đằng sau nó, nó thậm chí có thể là một tạo tác / lỗi vô dụng, nhưng nếu nó đang thực hiện một số loại theo dõi, tốt, nó có vẻ hơi lừa dối tôi

Chính sách bảo mật của Google +1

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

Chính sách bảo mật của nút +1 của Google

Ngày 28 tháng 6 năm 2011

Chính sách bảo mật của Google mô tả cách chúng tôi xử lý thông tin cá nhân khi bạn sử dụng các sản phẩm và dịch vụ của Google, bao gồm thông tin được cung cấp khi bạn sử dụng nút Google +1. Ngoài ra, phần sau đây mô tả các thực tiễn bảo mật bổ sung của chúng tôi cụ thể đối với việc bạn sử dụng nút +1.

Thông tin chúng tôi thu thập và cách chia sẻ

Nút Google +1 là cách để bạn chia sẻ thông tin công khai với mọi người. Nút Google +1 giúp bạn và những người khác nhận nội dung được cá nhân hóa từ Google và các đối tác của chúng tôi. Thực tế là bạn +1 sẽ được ghi lại bởi Google, cùng với thông tin về trang bạn đang xem khi bạn nhấp vào nút +1. +1 của bạn có thể xuất hiện cho người khác dưới dạng chú thích với tên và ảnh tiểu sử của bạn trong các dịch vụ của Google (chẳng hạn như trong kết quả tìm kiếm hoặc trên Hồ sơ Google của bạn) hoặc ở nơi khác trên các trang web và quảng cáo trên Internet.

Chúng tôi sẽ ghi lại thông tin về hoạt động +1 của bạn để cung cấp cho bạn và những người dùng khác trải nghiệm tốt hơn trên các dịch vụ của Google.

Để sử dụng nút Google +1, bạn cần hiển thị Hồ sơ Google công khai trên toàn thế giới, ở mức tối thiểu bao gồm tên bạn đã chọn cho tiểu sử. Tên đó sẽ được sử dụng trên các dịch vụ của Google và trong một số trường hợp, tên đó có thể thay thế tên khác bạn đã sử dụng khi chia sẻ nội dung trong Tài khoản Google của mình. Chúng tôi có thể hiển thị danh tính Tiểu sử trên Google của bạn cho những người có địa chỉ email của bạn hoặc thông tin nhận dạng khác.

Sử dụng thông tin thu thập được

Ngoài các cách sử dụng được mô tả ở trên, thông tin bạn cung cấp cho chúng tôi được sử dụng theo Chính sách bảo mật chính của Google.

Chúng tôi có thể chia sẻ số liệu thống kê tổng hợp liên quan đến hoạt động +1 của người dùng với công chúng, người dùng và đối tác của chúng tôi, chẳng hạn như nhà xuất bản, nhà quảng cáo hoặc trang web được kết nối. Ví dụ: chúng tôi có thể nói với một nhà xuất bản rằng 10% số người + 1'd trang này ở Tacoma, Washington.

Lựa chọn của bạn

Bạn có thể xem danh sách các mục bạn có + 1'd trên tab +1 trên Hồ sơ của bạn. Bạn có thể loại bỏ các mục riêng lẻ từ danh sách đó.

Bạn có thể từ chối xem các đề xuất +1 trên các trang web của bên thứ ba (bao gồm cả quảng cáo trên các trang web của bên thứ ba) từ những người bạn biết.

Chúng tôi sẽ lưu trữ dữ liệu (chẳng hạn như +1 gần đây của bạn) cục bộ trong trình duyệt của bạn. Bạn có thể truy cập và xóa thông tin này trong cài đặt trình duyệt của bạn.

Thêm thông tin

Google tuân thủ các nguyên tắc bảo mật của Cảng an toàn Hoa Kỳ. Để biết thêm thông tin về khung che giấu an toàn hoặc đăng ký của chúng tôi, hãy xem trang web của Bộ Thương mại.


3
Human like behavior? Đó là suy nghĩ thú vị. Tôi đã thấy một mã theo dõi chuột tương tự một lần chỉ đơn giản là ghi lại tọa độ X / Y trong các biến toàn cục. Chúng sau đó được sử dụng để bắt đầu / dừng / hủy bỏ cuộn tùy chỉnh trên một plugin jQuery. Có một triển khai tốt hơn so với điều theo dõi toàn cầu này (mà cuối cùng tôi đã thay đổi).
Ông trùm

7
@Mrchief, một số khách hàng chơi bài xì phé sử dụng chuyển động chuột để phát hiện người chơi tự động, tôi nghĩ có lẽ Google có thể coi đó là một biện pháp phòng vệ hiệu quả chống lại các bot xây dựng hồ sơ và + 1ing rất nhiều trang web nhưng tạo ra lợi thế cạnh tranh không công bằng. Ai biết mặc dù.
Tom Gullen

1
Tự hỏi tại sao Facebook không làm bất cứ điều gì như vậy ... (hoặc làm điều đó?)
Mrchief

7
Nó có thể là cho một số loại thử nghiệm UI. Tôi biết google thích thực hiện nhiều thử nghiệm a / b, do đó, 41 màu xanh lam của họ đã kiểm tra một lúc trước. Có lẽ họ đang cố gắng theo dõi cách người dùng di chuyển qua trang, để cung cấp giao diện người dùng tốt hơn.
Greg Guida

Công cụ mà bạn đang sử dụng là gì?
Sid

Câu trả lời:


123

Nó dường như đang gieo một trình tạo số ngẫu nhiên với các chuyển động chuột của bạn.

Trình xử lý di chuyển chuột tự nó làm một cái gì đó dọc theo các dòng sau:

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

d(screen.width * screen.width + screen.height) * 1000000clà một biến bắt đầu bằng 1.

Tất cả điều này được bao bọc trong phạm vi của một hàm ẩn danh, chính nó được đánh giá ngay lập tức để trả về một hàm được gán cho một thuộc tính có tên là "ngẫu nhiên". Hàm trả về đó trông giống như thế này:

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

hash, BTW, là một biến bắt đầu dưới dạng băm MD5 của cookie, vị trí new Date().getTime(), và Math.random().

(Tất nhiên, lưu ý rằng Google có thể thay đổi tập lệnh được trả lại bất cứ lúc nào và do đó làm mất hiệu lực phân tích này)


4
Câu trả lời tuyệt vời cảm ơn, bất kỳ ý tưởng tại sao nó sẽ cần một số ngẫu nhiên? Tôi hiểu chuyển động của chuột là một cách khá tốt để tạo một số ngẫu nhiên, nhưng điều này sẽ không thành công với các thiết bị di động (chúng không có chuột)
Tom Gullen

27
Không Math.random()hạt từ timestamp hiện tại? Nếu vậy, với một nút được triển khai rộng rãi như thế này, bạn sẽ mong đợi rất nhiều va chạm. Có thể giải thích những nỗ lực thêm.
Yahel

7
@yahelc: Điều này có thể giúp . Nói tóm lại, trong năm 2008, hầu hết các trình duyệt được tạo mầm với thời gian chỉ một lần, khi bắt đầu quá trình hoặc lần đầu tiên Math.random () được gọi (trong quy trình hoặc trong cửa sổ / tab). Mọi thứ có thể đã thay đổi kể từ đó, tất nhiên.
ANOMIE

3
Mặc dù điều này có vẻ kỳ lạ - nếu đây là mục đích, họ sẽ không sử dụng window.crypto.getRandomValues: (function () {var buf = new Uint8Array (1); window.crypto.getRandomValues ​​(buf); alert (buf [ 0])}) ()
Bradshaw giàu

3
Giả sử nó là để cung cấp một hạt giống máy phát ngẫu nhiên tốt hơn, một hạt giống do Google cung cấp sẽ là đủ, phải không? Hoặc ít nhất chỉ một hoặc hai lần di chuyển chuột. Cách hiện tại có vẻ hơi đáng ngờ. Thật tuyệt khi Google thể hiện sự minh bạch ở đây, nơi những người khác đã thất bại trong việc cung cấp nó.
Wernight

47

Mã thực tế đang được thực thi được lấy từ mã Shindig được tìm thấy ở đây:

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

Một số ngẫu nhiên an toàn là cần thiết để đảm bảo rằng kênh postMessage an toàn được tạo ở đây không thể bị xâm phạm bởi các tập lệnh trên trang để thực hiện các hành động tùy ý.

Đây là một bài viết giải thích tại sao sử dụng Math.random () là xấu:

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


32

Nếu bạn có thể tải tập lệnh của mình trước, bạn có thể nối addEventListener và ghi nhật ký tất cả những người đang thiết lập addEventListener và xem ai đang thực hiện và sau đó, bằng cách xem mã có liên quan, hãy xem họ đang làm gì.

Đặt cái này vào vị trí trước khi tải mã 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));
}

Để xem những gì đã nghe window.onmousemove, bạn sẽ phải làm điều đó sau đó bởi vì nó chỉ là một nhiệm vụ thay đổi, không phải là một chức năng mà bạn có thể chặn. Vì vậy, đôi khi sau khi mã khởi tạo của trang chạy, bạn sẽ làm điều này để ghi nhật ký những gì được nối với nó:

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

2
Ý tưởng tốt, nhưng điều này sẽ không hoạt động nếu tập lệnh đặt kiểu cũ window.onmousemovethay vào đó (như tập lệnh của Google làm).
Anomie

Nếu đó là trường hợp, trên có thể móc điều đó theo cùng một cách.
jfriend00

@Ben Alpert - Tôi đã thêm một số mã cho window.onmousemove vào câu trả lời của tôi ở trên.
jfriend00

Mã chức năng có thể dài tùy ý. Chúng tôi không muốn đổ nhiều kb vào bảng điều khiển vì vậy tôi chỉ chọn một số giới hạn ngắn hơn sẽ không áp đảo cửa sổ nhật ký. Nếu điều đó không đủ mã để có thể xác định vị trí của nó, số lượng có thể tăng lên, nhưng có thể không thực tế để xem mọi thứ trong cửa sổ nhật ký nếu không có giới hạn trên với độ dài.
jfriend00

17

Trong mã không bị xáo trộn kể từ ngày 22 tháng 7, bạn sẽ nhận thấy onmousemove là một phần của lớp 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))
    }
}();

Nó nhân tổng của x và y với 2 ^ 16 bằng cách sử dụng bitshift, sau đó thêm một số thứ nguyên khác và nhân tất cả số này theo thời gian trong mili giây mod 1000000. Đây chắc chắn trông giống như một thuật toán ngẫu nhiên.

Tôi không chắc tại sao trang lại cần một cái gì đó như thế này, có lẽ nó đang sử dụng cookie, ngăn nhấp tự động +1? Khi bạn nhấp vào "+1", màn hình đăng nhập bật lên dường như có một số ngẫu nhiên được thêm vào dưới dạng băm, url kết thúc bằng "& hl = en-US # RANDOMNUMBER"


4

Tôi đặt cược cho bạn bản Beta "Phân tích trong trang" của nó. Tạo một con trỏ và nhấp vào bản đồ nhiệt.


Ngoài ra còn có một số dự án tốt thực hiện chính xác cùng ứng dụng node.js này , ví dụ
Cầu tàu Paolo Ramon

+1 (sic). Thật tốt khi biết mọi người nhấp vào đâu để biết nơi nào hữu ích và nơi phù hợp nhất cho quảng cáo.
rds

Ý tưởng hay, nhưng không liên quan gì đến chủ đề này;)
naugtur

2

Tôi nghĩ rằng bài báo của Guo và Agichtein từ CHI 2010 http://www.mathcs.emory.edu/~qguo3/wip287-guo11.pdf có thể cung cấp thêm ý tưởng về lý do Google làm điều đó.

Rõ ràng chuyển động của chuột là một proxy thô cho chuyển động của mắt và cho phép mọi người ước tính kết quả theo dõi mắt.


1

Họ có thể sử dụng nó để đo tốc độ người dùng di chuyển từ một mục UI này sang mục khác, tần suất nhấp chuột bỏ lỡ, v.v.

Tôi thường có một cái nhìn cay độc sâu sắc về các tính năng xâm lấn nhưng tôi không nghĩ rằng đây là một rủi ro riêng tư. Điều đó gây sốc bởi vì nó rất mịn, nhưng nó không quá lộ liễu . Liệu chuyển động chuột của bạn mã hóa chi tiết ngân hàng? Khiêu dâm?

Google và những thứ tương tự có nhiều dữ liệu chất lượng cao để theo dõi bạn. Tọa độ chuột có ứng dụng rất hạn chế.

Để lạc đề một chút:

Ở một mức độ nào đó, càng nhiều dữ liệu bạn thu thập về mọi người, bạn càng có nhiều vấn đề. Tôi nghe (từ Schneier và những người tương tự) rằng các cơ quan tình báo đang phải chịu đựng một số lượng lớn các thông tin sai lệch được kích hoạt bởi việc cung cấp dữ liệu ngày càng tăng tốc của họ - tỷ lệ tín hiệu trên tạp âm là rất lớn. Tôi thấy điều này hơi thú vị.


Với các tập lệnh google +1, xuất hiện trên các trò chơi mini, sử dụng chuột để điều khiển ... Thực sự sẽ có rất nhiều tiếng ồn. XD
PicoCreator

1

Không thể biết chắc chắn, Google sẽ làm gì với dữ liệu di chuyển chuột này. Như bạn có thể thấy, nó không trả lại tải và tải thông tin trở lại máy chủ, do đó, không có gì phải lo lắng.

Đầu tiên có lẽ là một xử lý sự kiện chung. Lý do tại sao tôi nghĩ rằng nếu bạn đọc nguồn, bạn có thể thấy điều đó trên dòng trước khi có Lỗi ném ("Đối số người nghe không hợp lệ"); và tiếp theo hoặc một lần sau lỗi ném tiếp theo ("Loại sự kiện không hợp lệ"). Vì đường bắn nằm ở giữa hai trường hợp ngoại lệ (liên quan đến sự kiện) này, tôi khá chắc chắn rằng đó là một loại xử lý sự kiện. Sử dụng trình gỡ lỗi, nó không thực sự làm bất cứ điều gì (không chuyển sang một số chức năng khác) vì vậy có vẻ như đó là để thực hiện trong tương lai.

Hàm thứ hai giống hệt với hàm thứ nhất. Vì đó là gTalk, tôi cho rằng nó cập nhật trạng thái của bạn (đi xa, trực tuyến, v.v.).

Thứ ba dường như là trình cập nhật nội dung hoặc một cái gì đó tương tự, vì bạn có thể thấy các chuỗi như cacheTimeout vv nằm rải rác xung quanh nó.

2 xu của tôi.


1

điều này thực sự vượt xa, nhưng dù sao đi nữa ...

nó xoay quanh loại quỹ đạo & độ cong của một mousemovement từ điểm bắt đầu đối với những người thu hút khác nhau, ví dụ như 2 mục / liên kết trên một trang.

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

Nói tóm lại, nếu bạn đặt hai liên kết / nút cạnh tranh và phân tích quỹ đạo theo một trong những liên kết đó, bạn có thể suy ra một mẫu hoặc cách bạn đạt được quyết định chỉ nhấp vào 1 trong số các liên kết đó (xem vid khoảng 13:00)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.