Примечание: Изначально это было опубликовано 6 ноября 2015 г. ~ Увы, моего оригинального блога больше нет 😦 Поскольку люди спрашивали об этой статье и, видя, что она связана с репозиторием, я подумал, что пора принести ее вернуться к жизни.
Два краеугольных камня открытой сети - это выбор и доверие. В последнее время все больше и больше внимания уделяется практике, разрушающей эти краеугольные камни. Я, конечно, имею в виду онлайн-отслеживание, которое осуществляется, среди прочего, компаниями поведенческой рекламы, правительствами, операторами мобильной связи, интернет-провайдерами. Они не только подрывают доверие пользователей, отслеживая их без разрешения, но и не предлагают пользователям выбора в этом отношении.
На самом деле, это даже хуже.
Благодаря работе, инициированной Mozilla, у пользователей есть способ сообщить вышеупомянутым игрокам, что они не хотят, чтобы их отслеживали в Интернете. Этот механизм известен как« Не отслеживать . Рассмотрение механизма работы и реализации Do Not Track выходит за рамки этой публикации. Прочтите статью EFF выше, если хотите узнать подробности.
Этот пост о том, что дает вам простую утилиту JavaScript, которая позволит вам уважать выбор вашего пользователя, соблюдая его статус "Не отслеживать".
Но у меня на сайте нет рекламы, - скажете вы. Что ж, если вы используете такие инструменты, как Google Analytics или Диспетчер тегов Google, для доступа пользователей к статистике или, чтобы отслеживать поведение пользователей, ваши пользователи отслеживаются. Если вы используете Optimizely, для проведения A / B-тестирования на вашем сайте отслеживаются ваши пользователи.
Если вы встраиваете кнопки социальных сетей или используете что-то вроде AddThis для публикации в социальных сетях, ваши пользователи отслеживаются. Даже после того, как они покинули ваш сайт.
Вы также можете увидеть недавнюю статью на Ars Technica о постановлении Федеральной комиссии по связи, согласно которому веб-сайты могут продолжать игнорировать Do Not Tack. Вы даже можете возразить, что у пользователей есть множество вариантов защиты, если они не хотят, чтобы их отслеживали, такие как uBlock, Privacy Badger, Ghostery и, в последнее время, использование Приватного просмотра Firefox с защитой от отслеживания . Но ответственность не должна лежать на пользователе.
Как и в случае с доступностью и хорошим пользовательским интерфейсом, уважение к выбору, сделанному вашими пользователями, является правильным поступком, с положительным побочным эффектом повышения доверия пользователей. С учетом всего сказанного, давайте перейдем к тому, как написано в этой публикации.
В основе этого лежит функция JavaScript, которая возвращает текущий статус флажка Не отслеживать. Таким образом, вы можете использовать это для обертывания, например, ваших скриптов GA.
Вот и все. Теперь вы будете добавлять Диспетчер тегов Google / Google Analytics только в том случае, если текущий пользователь не включил функцию «Не отслеживать».
Технические детали
Давайте рассмотрим некоторые детали, касающиеся реализации помощника. Первая часть фактически получает статус свойства doNotTrack
. Теперь это должен быть простой процесс, но из-за различий в браузерах он требует немного больше усилий, чем нужно.
Согласно спецификации Выражение предпочтения отслеживания (DNT), свойство должно быть у объекта navigator
, и, таким образом, оно есть в Firefox, Chrome и более новых версиях Opera (с использованием мигания).
Некоторое время, хотя спецификация еще не была рекомендованным стандартом и реализация Microsoft отличалась от проекта, она существовала как свойство с префиксом navigator.msDoNotTrack
в Internet Explorer. Так было до тех пор, пока в Internet Explorer 11 Microsoft не решила принять эту спецификацию и не включать режим« Не отслеживать по умолчанию», но они также переместили свойство с navigator
на window
. И вот мы, прыгая через обруч за обручем, просто получаем значение этого свойства.
Примечание. Это свойство также устанавливается для объекта
window
в Safari.
Далее нам нужно поговорить о следующей строке:
Как упоминалось выше, был длительный период, когда реализация Microsoft не соответствовала стандарту и по умолчанию включала функцию «Не отслеживать». Это означало, что это больше не было указанием на выбор пользователя. Таким образом, это делает невозможным соблюдение настройки, и именно поэтому нам нужны Array
поврежденные версии Windows, указанные выше.
Пропуская биты регулярных выражений, мы попадаем в довольно большой условный блок. Затем нам нужно выяснить реальный статус Do Not Track, прежде чем возвращать результат вызывающей стороне. Сначала мы обрабатываем старые версии (lte IE8), в которых этот флаг не существовал.
Нет смысла делать что-либо еще, мы можем просто вернуть false и покончить с этим. Итак, Firefox и здесь не был полностью невиновен:
Для версий Firefox до версии 32 была ошибка с возвращаемым значением свойства doNotTrack. Tl; dr означает, что значение да означало, что пользователь выразил намерение, но не то, что было намерением. Поэтому нам нужно установить возвращаемое значение как Unspecified. Далее следует обработка аномальных версий Windows, в которых для параметра Не отслеживать по умолчанию было установлено значение true
.
Как упоминалось ранее, в этих случаях мы не можем доверять настройке флага «Не отслеживать», чтобы она была указана пользователем, и поэтому необходимо установить по умолчанию значение «Не указано», то есть false
.
Со всем этим мы можем справиться с последним удачным случаем, когда мы просто используем значение, возвращаемое браузером, но обрабатывая возможные выпадающие случаи, когда значение равно undefined
. Осталось только вернуть истину или ложь, если мы еще не вернулись на предыдущем шаге.
Я искренне надеюсь, что люди найдут эту небольшую утилиту полезной и будут использовать ее на своих сайтах. Когда мы уважаем конфиденциальность и выбор наших пользователей, пользователи и открытый Интернет выигрывают, и это всегда хорошо.
Жду ваших комментариев.