2015-11-27 18 views
8

Firefox đã khởi chạy một tính năng có tên là Tracking protection trong phiên bản v42.0. Nó khối một số kịch bản theo dõi như Google Analytics, Marketo, LinkedIn, vvCách phát hiện nếu người dùng đang sử dụng tính năng bảo vệ theo dõi trong Firefox 42+

Console output of the "Tracking protection" warnings

Tôi đã cố gắng để phát hiện nó thông qua navigator.DoNotTrack, nhưng nó sẽ trả về unspecified trong cả hai trường hợp - duyệt web trong chế độ bình thường, và trình duyệt trong chế độ riêng tư - sử dụng Firefox 42.0 trên máy Mac.

Làm cách nào để tôi có thể phát hiện bằng JavaScript cho dù người dùng đang xem trang web có bảo vệ Theo dõi, vì navigator.DoNotTrack không thành công?

+0

"? làm thế nào tôi có thể phát hiện nếu người dùng đang sử dụng bảo vệ theo dõi" Dường như bỏ lỡ điểm bảo vệ theo dõi, bạn có nghĩ vậy không? – TylerH

+5

@ TylerH: Không phải nếu bạn muốn nói với người dùng một cái gì đó như "bạn đang bỏ lỡ các tính năng quan trọng của ứng dụng - sử dụng chế độ duyệt web thông thường và điều này và điều đó sẽ có sẵn cho bạn". – PetrHejda

+0

Vâng, tránh các thông điệp theo dõi như vậy là * điểm * của tính năng bảo vệ theo dõi/duyệt web riêng tư. Bạn không muốn bị theo dõi, thậm chí gián tiếp. AKA Tôi không muốn bạn biết tôi đang ở đâu, hoặc thậm chí là tôi đang ở trong khu vực của bạn. Chỉ cần đặt một trong những trang web "trang web này sử dụng cookie" loại biểu ngữ trên đầu trang của bạn cho tất cả người dùng. – TylerH

Trả lời

8

navigator.donottrack chỉ hiển thị cài đặt của tùy chọn "Do not track". Nó không cho biết nếu tracking protection, là một tính năng khác, được kích hoạt. Tính năng bảo vệ theo dõi được bật tự động khi ở chế độ duyệt web riêng tư nhưng người dùng can change a setting in about:config để cho phép tính năng này được bật toàn thời gian.

Trong khi bạn không thể nói trực tiếp nếu tính năng này được kích hoạt, bạn có thể kiểm tra ảnh hưởng của nó với một cái gì đó như thế này:

var canreach = false; 
$(function() { 
    $('<img/>') 
     .attr("src", "//apps.facebook.com/favicon.ico") 
     .load(function(){canreach = true;}) 
     .css("display", "none") 
     .appendTo(document.body); 
}); 

Firefox uses một danh sách thu được từ Disconnect cho bảo vệ theo dõi của nó; chỉ cần sử dụng một tên miền mà bạn biết là có trong danh sách đó và một hình ảnh mà bạn biết sẽ tồn tại.

Tất nhiên, có thể này cờ bất kỳ số nguyên nhân dẫn đến hình ảnh không tải, bao gồm các vấn đề kết nối mạng, phần mềm chặn quảng cáo, lọc proxy vv

+2

Có! Cảm ơn bạn. Điều này giải quyết vấn đề của tôi. – PetrHejda

2

Dưới đây là hơi phiên bản cải tiến của câu trả lời miken32 bằng cách sử dụng thu nhập hoãn lại:

function whenNoTrackingProtection() { 
    if (!whenNoTrackingProtection.promise) { 
     var dfd = new $.Deferred(); 
     whenNoTrackingProtection.promise = dfd.promise(); 

     var time = Date.now(); 
     $('<img/>') 
      .attr('src', '//apps.facebook.com/favicon.ico') 
      .on('load', dfd.resolve) 
      .on('error', function() { 
       if ((Date.now() - time) < 50) { 
        dfd.reject(); 
       } else { 
        // the request took to long, it seams this is a real network error 
        dfd.resolve(); 
       } 
      }); 
    } 

    return whenNoTrackingProtection.promise; 
} 

hoặc không có jQuery, sử dụng Promise:

function whenNoTrackingProtection() { 
    if (!whenNoTrackingProtection.promise) { 
     whenNoTrackingProtection.promise = new Promise(function(resolve, reject) { 
      var time = Date.now(); 
      var img = new Image(); 
      img.onload = resolve; 
      img.onerror = function() { 
       if ((Date.now() - time) < 50) { 
        reject(); 
       } else { 
        // the request took to long, it seams this is a real network error 
        resolve(); 
       } 
      }; 
      img.src = '//apps.facebook.com/favicon.ico'; 
     }); 
    } 

    return whenNoTrackingProtection.promise; 
} 
Các vấn đề liên quan