Có cài đặt nào trên Google Analytics để ngăn chặn việc sử dụng cookie cho người dùng chưa đồng ý không


170

Theo Điều 5 (3) của EU về Chỉ thị về quyền riêng tư điện tử (còn gọi là 'Luật Cookie'), các trang web nhắm mục tiêu người dùng EU phải có được sự đồng ý từ người dùng trước khi họ đặt cookie.

Xem hướng dẫn ICO

Tôi đang cố gắng bình phương điều này với Google Analytics trên trang web của mình.

Tôi sẽ tưởng tượng rằng Google Analytics (GA) có thể thực hiện một mức thu thập dữ liệu phân tích nhất định mà không yêu cầu sử dụng cookie.

Tuy nhiên, tôi không thể tìm thấy bất kỳ thông tin nào về điều này (trên bảng điều khiển / trang cài đặt của Google) về cách chuyển tiếp thông tin về 'trạng thái đồng ý' trở lại Google trong khi yêu cầu trang. Vì vậy, lựa chọn duy nhất của tôi có vẻ là rằng tôi không nên nhúng mã thẻ của Google ở tất cả nếu người dùng đã không được đưa ra một cách rõ ràng sự đồng ý. Mà có vẻ hơi quyết liệt.

Để tập lệnh máy chủ của tôi đặt hasConsentedToCookies=FALSEcờ trong các thẻ JavaScript sẽ cho phép tôi hướng dẫn các dịch vụ của Google chạy theo kiểu xuống cấp một cách duyên dáng.

Có cài đặt nào trên Google Analytics để ngăn chặn việc sử dụng cookie cho người dùng chưa được chấp thuận không?

Nếu vậy, tôi có thể tìm thông tin về điều này ở đâu?


2
Cập nhật: Câu hỏi này được sử dụng để hỏi về cả Adsense và Analytics, nhưng vì câu trả lời cho mỗi câu hỏi có thể khác nhau, tôi đã trích xuất khía cạnh 'Google Adsense' ra khỏi câu hỏi này để cho mỗi người gắn kết hơn.
JW.

Một số cuộc thảo luận xen kẽ trên news.ycombinator.com/item?id=4032633
Eduardo

Chỉ trong trường hợp bạn không biết điều này: Bạn đã nghe nói về piwik chưa? ( piwik.org )
TheHippo

Câu hỏi hay và can thiệp!
Cướp

Google nói rằng bạn có thể tắt cookie nhưng có vẻ như nó không hoạt động hoặc tôi đang làm gì đó sai. Liên kết: developers.google.com/analytics/devguides/collection/ trên

Câu trả lời:


149

EDIT (2019): Câu trả lời dưới đây có trước GDPR và có thể yêu cầu sửa đổi.

Google Analytics có một bộ API mới để hỗ trợ tuân thủ quy tắc từ chối cookie. Đây là tài liệu và đây là tài liệu trợ giúp của họ .

Đã có một sự mơ hồ về việc liệu Quy định cookie của EU (như được triển khai ở các quốc gia thành viên) có yêu cầu theo dõi phân tích web thụ động yêu cầu các cơ chế chọn tham gia để tuân thủ hay không. Nếu bạn quan tâm cách này hay cách khác, hãy hỏi ý kiến ​​luật sư. Google đang trao quyền cho bạn đưa ra quyết định về cách bạn muốn tiến hành.

Họ sẽ để lại chi tiết triển khai cho bạn, nhưng, ý tưởng là, khi bạn đã xác định có theo dõi người dùng trong Google Analytics hay không, nếu câu trả lời là không theo dõi, bạn sẽ đặt thuộc tính sau thành đúng trước Google Phân tích chạy:

window['ga-disable-UA-XXXXXX-Y'] = true;

Trong đó UA-XXXXXX-Y là ID tài khoản của bạn trong Google Analytics

Như các áp phích khác đã lưu ý, Google Analytics dựa vào cookie. Vì vậy, bạn không thể thực hiện bất kỳ loại theo dõi nào nếu không có cookie. Nếu bạn đã xác định rằng ai đó sẽ không được nấu nướng để theo dõi, bạn sẽ cần thực hiện một cái gì đó như thế này:

if(doNotCookie()){
   window['ga-disable-UA-XXXXXX-Y'] = true;
}

Chọn tham gia

Điều này không yêu cầu một chút jujitsu khi bạn tải Google Analytics lần đầu tiên, vì thuộc tính này sẽ cần phải được đặt trước Google Analytics chạy để ngăn theo dõi xảy ra, điều đó có nghĩa là, đối với phương pháp "chọn theo dõi", bạn ' Có lẽ bạn cần phải thực hiện một cơ chế, trong lần truy cập đầu tiên, Google Analytics sẽ tự động bị vô hiệu hóa khi không có cookie chọn tham gia (cookie xác định tùy chọn cookie được cho phép rõ ràng) và sau đó, nếu xảy ra chọn tham gia, hãy đăng ký lại. chạy Google Analytics. Trên các lần xem trang tiếp theo, tất cả sẽ chạy trơn tru.

Có thể trông giống như (mã giả):

if( hasOptedOut() || hasNotExpressedCookiePreferenceYet() ){ //functions you've defined elsewhere
     window['ga-disable-UA-XXXXXX-Y'] = true;
}
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXX-Y']);
  _gaq.push(['_trackPageview']);


  function onOptIn(){ //have this run when/if they opt-in.
      window['ga-disable-UA-XXXXXX-Y'] = false;
      //...snip...
      //set a cookie to express that the user has opted-in to tracking, for future pageviews
      _gaq.push(['_trackPageview']); // now run the pageview that you 'missed'
   }

Từ chối

Với phương pháp này, bạn sẽ cho phép người dùng từ chối theo dõi, điều đó có nghĩa là bạn sẽ sử dụng cookie để đặt thuộc ga-disable-UA-XXXXXX-Y'tính và cookie để quản lý nó trong tương lai:

if( hasOptedOut() ){ // function you've defined elsewhere 
     window['ga-disable-UA-XXXXXX-Y'] = true;
}

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXX-Y']);
  _gaq.push(['_trackPageview']);

2
Một câu trả lời hay về câu trả lời hay - if (doNotCookie () {nên là if (doNotCookie ()) {
Roee Shenberg

1
Cảm ơn câu trả lời. Mặc dù tôi sẽ không nói 'tham khảo luật sư'. Có lẽ nhanh hơn cho một kỹ thuật viên đọc và hiểu hướng dẫn hơn là một luật sư để tìm hiểu các sắc thái của các kỹ thuật.
JW.

1
Tôi có hiểu rằng nếu người dùng chọn KHÔNG lưu cookie, thì giải pháp là lưu trữ cookie với tùy chọn này? Hoặc cookie này không được coi là thuộc quy định của EU?
Jonathon Horsman

5
Đúng. Hầu hết các quy định tôi đã thấy (cụ thể là của Vương quốc Anh và tôi tin rằng Pháp) nói rõ ràng rằng một cookie lưu trữ tùy chọn cookie của họ không vi phạm các quy tắc. Vì cookie là cách lưu trữ duy nhất có thể truy cập toàn cầu trong trình duyệt, nên không có cách nào khác.
Yahel

17

Bạn có thể vô hiệu hóa việc sử dụng cookie cho Google Analytics bằng cách chỉ định {'storage' : 'none'}tùy chọn khi tạo phiên bản theo dõi.

Xem hướng dẫn của Google về chủ đề này để biết thêm chi tiết.


1
Hướng dẫn nói rằng nếu bạn tắt cookie, bạn phải tự thực hiện theo dõi tương tự, vì vậy điều này dường như không có ích.
mpartel

4
@mpartel Bạn bị mất một số thông tin: trả lại khách truy cập và chuyển đổi đa kênh. Nhưng nếu bạn không cần những thứ đó, điều này vẫn được chấp nhận.
Ali

16

Lưu ý nhanh, BBC (có lẽ là trang web phổ biến nhất ở Anh) đã thực hiện một cách tiếp cận thú vị để tuân thủ cookie - họ đã hiển thị một biểu ngữ cho người dùng nói với họ rằng cookie được đặt và cung cấp một vài liên kết.

Điều này giải thích cookie là gì. Điều này cho phép họ quản lý cookie của họ , nhưng thú vị nhất là họ cung cấp một liên kết đến Google Analytics để cho phép người dùng từ chối toàn bộ GA . Vì vậy, tóm lại, BBC đã đưa ra quan điểm rằng họ có thể cho người dùng biết cookie nào được đặt và sau đó cung cấp liên kết tới Google để cho phép người dùng từ chối tất cả các cookie GA. Đối với tôi, điều đó ít rắc rối hơn nhiều so với việc bạn bảo GA từ chối nhận địa chỉ thông qua JS.


13
Tôi thực sự sẽ không cho rằng giải pháp của BBC là chấp nhận được. Trên thực tế, giải pháp của họ rất thiếu sót về cơ bản, vì ít nhất ba lý do: 1) nó đặt cookie trước khi hỏi liệu bạn có sẵn sàng chấp nhận chúng không, 2) nó phải đặt cookie để lưu tùy chọn cookie của bạn và 3) tuyên bố rằng trang web sẽ không kiểm soát cookie của bên thứ 3, vi phạm trực tiếp tinh thần nếu không phải là thư của chỉ thị EU. Tôi nghi ngờ rằng các Beebs sẽ bị đánh vào cái này, vì chúng đang cố gắng đẩy ranh giới của pháp luật theo nhiều cách nhất có thể trong khi xuất hiện khác đi.
David T. Macknet

Hãy xem blog.wsj.com/tech-europe/2012/05/25/ cho một số cuộc thảo luận tốt.
David T. Macknet

Tất nhiên, có lẽ tôi đã sai - rõ ràng họ đã thay đổi yêu cầu? blog.silktide.com/2012/05/ Nói về sự thay đổi các yêu cầu, vì vậy tôi không biết gì nữa. Chỉ cần không biết về những người này, và tôi SỐNG ở đây (bây giờ)!
David T. Macknet

Sổ đăng ký có một biểu ngữ cho biết bằng cách tiếp tục sử dụng trang web của họ, họ cho rằng bạn đồng ý cho phép họ sử dụng cookie cũng như nút chấp nhận.
iamichi

6
@MartinClarke - Chà ... thực ra, tôi không chắc chắn rằng tôi sẽ đi theo sự lãnh đạo của một công ty truyền thông, đặc biệt bởi vì tôi hy vọng rằng BBC giữ một vị trí đặc biệt trong Vương quốc Anh và có khả năng sẽ được định hình lên, thay vì bị tát với một khoản tiền phạt. Tôi nghĩ đó là một câu hỏi về rủi ro - BBC không có nhiều rủi ro, như một cơ quan được tài trợ công khai, trong khi một trang web thương mại có thể có.
David T. Macknet

15

Tôi thường không bao giờ yêu cầu người dùng từ chối phân tích google, đó là vì tôi không bao giờ đặt cookie và tôi không bao giờ lưu ip của họ (và các dữ liệu cá nhân khác).

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-98765432-1', 'www.example.com', {
  'anonymizeIp': true
  , 'storage': 'none'
  , 'clientId': window.localStorage.getItem('ga_clientId')
});
ga(function(tracker) {
  window.localStorage.setItem('ga_clientId', tracker.get('clientId'));
});
ga('send', 'pageview');

Đồng thời kiểm tra mã này tại Chuyển đổi cookie Google Analytics sang Lưu trữ cục bộ / phiên

Tập lệnh này sẽ không đặt bất kỳ cookie nào, nhưng vẫn theo dõi qua phân tích google. Điều này thực sự sẽ có tác dụng tương tự đối với quyền riêng tư như sử dụng cookie, vì google vẫn ghi lại địa chỉ IP của người dùng.

Đó là nơi chuyển đổi ẩn danhIp xuất hiện. Điều này cho google biết chỉ lưu phiên bản ẩn danh của địa chỉ IP. Địa chỉ IP ẩn danh không được coi là dữ liệu cá nhân, vì vậy quyền riêng tư của người dùng sẽ được tôn trọng.

Luật cookie của AFAIK là tất cả về quyền riêng tư và không cho phép trang web theo dõi việc sử dụng của họ. Tôi không phải là luật sư hay bất cứ điều gì nhưng theo tôi kịch bản này tuân thủ luật cookie của EU.

Kiểm tra plunk này để xem nó hoạt động: http://plnkr.co/MwH6xwGK00u3CFOTzepK


xin chào, đây không phải lúc nào cũng là một cách tiếp cận an toàn: đây là những lý do.
caesarsol

Đó là những gì 'anonymizeIp': truetùy chọn dành cho, điều này sẽ không lưu địa chỉ IP. Tôi thích sử dụng lưu trữ cục bộ trên cookie vì một số lý do không liên quan đến luật cookie.
Elmer

5
Không, điều này hoàn toàn không tuân thủ: - ẩn danhIp là sai lệch và vẫn giữ quá nhiều thông tin theo luật EU - LocalStorage được coi là "Cookie" theo luật EU Vì vậy, đoạn mã này cung cấp cho bạn ít thông tin hơn trong GA và vẫn không tuân thủ với luật pháp
Flunch

"Luật cookie EU" thực sự là một chỉ thị, vì vậy nó phụ thuộc vào luật cụ thể của các thành viên UE. Ví dụ: cơ quan bảo mật của Ý tuyên bố rõ ràng rằng không cần có sự đồng ý của người dùng theo luật của Ý nếu bạn ẩn danh địa chỉ IP và vô hiệu hóa việc chia sẻ dữ liệu với các dịch vụ khác trên bảng điều khiển Google Analytics.
mcont

3
@Flunch "ẩn danhIp là sai lệch và vẫn giữ quá nhiều thông tin theo luật pháp EU" Vui lòng cung cấp tài liệu tham khảo. Tại sao nó không được chấp nhận và khi nào nó sẽ ổn? Là gì "quá nhiều thông tin" ?
Ali

3

Bạn có thể tắt cookie phân tích google bằng cách thêm mã này vào đầu mã phân tích google (trước dòng: var _gaq = _gaq || [];):

ga('create', 'UA-XXXXXX-XX', {'storage': 'none'});
ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

Tuy nhiên, một số tính năng của Google Analytics (ví dụ: thống kê thời gian thực) không hoạt động chính xác sau khi sửa đổi này. Tìm hiểu thêm về cookie phân tích của google: https://developers.google.com/analytics/devguides/collection/analyticsjs/domains?hl=vi#disableCookies


điều gì sẽ là var clientId = ...đang làm gì? Theo như tôi biết nó định nghĩa một biến cục bộ bên trong hàm, nó có vô dụng không?
caesarsol

Tôi đoán đó chỉ là một ví dụ, bạn nên sử dụng clientIdbên trong hàm vì nó được thực hiện trên stackoverflow.com/questions/4502128/
Ấn

1

Cách phổ biến để xử lý vấn đề này cho đến nay là phương pháp được sử dụng bởi plugin jquery của phần mềm sói, theo đó nó ngăn không cho tập lệnh chạy cho đến khi người dùng đăng nhập. Tuy nhiên, ICO đã cập nhật hướng dẫn của họ vào tuần trước. ngụ ý đồng ý 'của loại được sử dụng trên trang web BBC. Mặc dù tôi không thực sự nghĩ rằng đó là tinh thần của luật pháp, nhưng đó là những gì được coi là chấp nhận được bởi những người thực thi nó. Vì hầu hết EU vẫn chưa thực hiện chỉ thị, tôi muốn nói rằng rất có thể họ sẽ tuân theo sự dẫn dắt của Vương quốc Anh.

Có một bài viết thú vị về các bản cập nhật của Vương quốc Anh tại đây:

http://www.redant.com/articles/eu-cookie-law-update-ico-adopts-softly-softly-approach/


1

EDIT: Có một cài đặt Google Analytics cho điều này với đoạn mã không đồng bộ GA.

Không có cài đặt Google Analytics cho việc này, như bạn đang đề xuất, bạn sẽ cần loại trừ một cách có điều kiện tập lệnh cho những người không đồng ý nếu bạn muốn sử dụng tập lệnh theo dõi Javascript của Google Analytics.

Có một số giải pháp hiện có đã có thể hữu ích thay vì tự lăn. Javascript: http://cookies.dev.wolf-software.com/demo/index.htm

Đây là một giải pháp cho phép sử dụng các tính năng cơ bản của Google Analytics mà không cần cookie, bằng cách thực hiện phía máy chủ theo dõi, ví dụ này có trong PHP: http://techpad.co.uk/content.php?sid=205


Cảm ơn các liên kết. liên kết rất hữu ích.
JW.

1

Đối với giải pháp UX ít xâm phạm hơn, bạn có thể đặt sự đồng ý ngụ ý cho cookie phân tích của google bằng cách đặt liên kết tới: cookiestatement.eu (không javascript, không cửa sổ bật lên, không quảng cáo)


1

Xin lỗi vì đã trả lời muộn nhưng tôi đã tìm kiếm điều tương tự gần đây cho đến khi tôi tự tìm ra cách. Nó có thể không phải là cách đúng đắn để làm điều đó nhưng nó hoạt động. (chỉ hoạt động trên trang web được đề cập không chọn hoàn toàn GA). Tôi đã thử nghiệm trong một vài ngày để đảm bảo.

Cách tôi quản lý để làm điều đó là sử dụng cookie PHP. Trước tiên, bắt đầu với việc thêm tệp phân tích.php bao gồm ...

<?php include_once('analyticstracking.php'); ?>

và trong analyticstracking.php thêm ... sau đây ...

<?php
if($_COOKIE['consent_cookie']=="Y"){
?>

<script type="text/javascript">
var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-********-*']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript';     ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :      'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];      s.parentNode.insertBefore(ga, s);
  })();
</script>

<?php   
}
else{
//do nothing
}
?>

Trước khi người dùng đồng ý với cookie, Google Analytics sẽ không hoạt động và một khi họ có, 'obl_cookie' sẽ được lưu và sẽ cho phép GA hoạt động nhưng nếu cookie 'google' bị phá hủy, nó sẽ ngăn GA hoạt động (Rõ ràng).

Giống như tôi đã nói nó có thể không đúng cách nhưng tôi đã thử và thử nghiệm và nó đã làm được. Hy vọng điều này sẽ giúp ai đó.


0

Tôi đã phải đối mặt với cùng một vấn đề.

Cuối cùng, tôi đã nhận được một giải pháp trong dòng trả lời của Elmer nhưng chơi an toàn về IP, đó là không sử dụnglocalStorage

// Create a fake ID instead of storing anything locally
function guidGenerator() {
    var S4 = function() {
       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
    };
    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}

...
ga('create', 'UA-XXXXXX-Y', {
        'storage': 'none',
        'clientId': guidGenerator()
});

(-) Mỗi ​​trang được truy cập sẽ được tính là một khách truy cập mới trong Google Analytics, vì vậy tôi đang mất khá nhiều chức năng ở đó.

(+) Nhưng tôi có thể sống với nó và tôi tin rằng tôi an toàn về luật pháp bảo mật dữ liệu.

Bất kỳ thông tin phản hồi hoặc đề xuất cải thiện đều được chào đón.


-3

GA không hoạt động mà không có cookie, nó cần nó để 'xác định s' khách truy cập nếu anh ấy / cô ấy truy cập trang web của bạn trước đó. Vì vậy, không có cài đặt nào trong GA cho việc này, GA chỉ không ghi lại khách truy cập nếu không thể tạo cookie.

Nếu người dùng đến từ EU và không chọn tham gia thì bạn nên loại trừ tập lệnh phân tích google tôi nghĩ.

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.