Предупреждение о сборе статистики [Яндекс.Метрика]
Оригинальная статья находится в официальной документации сервиса Яндекс.Метрика
Вы можете предупредить посетителей вашего сайта о сборе статистики и отложить загрузку кода счетчика Яндекс Метрики на страницах сайта.
При согласии посетителя на передачу информации код счетчика загружается стандартным образом. Без согласия посетителя код не загрузится. Однократный выбор посетителя может учитываться при посещении всех страниц сайта (домена).
Чтобы включить оповещение и реализовать отложенную загрузку кода счетчика, обратитесь к вашему вебмастеру.
Пример оповещения
Вы можете использовать любой текст для информирования посетителей. Представленный ниже текст приведен исключительно в качестве примера отображения текста в оповещении. Яндекс не несет ответственности за его соответствие требованиям законодательства. Перед размещением текста рекомендуем проконсультироваться с вашим юристом.
Этот сайт собирает статистику посещения и данные посетителей.
[Ссылка на Пользовательское соглашение вашего сайта или на Политику конфиденциальности вашего сайта]
Пример реализации кода [оригинал]
<head>
<meta charset="UTF-8">
<title>Заголовок страницы</title>
<!--В примере используется стиль reset.css. Вы можете использовать свое решение.-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<!--В примере используется библиотека js-cookie для работы с cookie. Вы можете использовать свое решение-->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.1.2/js.cookie.js"></script>
<style>
* {
box-sizing: border-box;
}
body {
width: 100%;
height: 100%;
}
.cookie-notification {
position: fixed;
background-color: rgba(0, 0, 0, .8);
bottom: 0;
width: 100%;
color: white;
padding: 15px;
}
.cookie-notification_hidden_yes {
display: none;
}
.cookie-notification__header {
margin-bottom: 10px;
font-size: 23px;
}
.cookie-notification__body {
margin-bottom: 10px;
}
</style>
</head>
<body>
Контент сайта
<div class="cookie-notification cookie-notification_hidden_yes">
<div class="cookie-notification__header">Предупреждение о сборе статистики</div>
<div class="cookie-notification__body">
<p>Этот сайт собирает статистику посещения и данные посетителей.</p>
<p>[Ссылка на Пользовательское соглашение вашего сайта или на Политику конфиденциальности вашего сайта]</p>
</div>
<div class="cookie-notification__buttons">
<button class="cookie-notification__button" id="yes">Я согласен</button>
</div>
</div>
<script type="text/javascript">
var messageElement = document.querySelector('.cookie-notification');
// Если нет cookies, то показываем плашку
if (!Cookies.get('agreement')) {
showMessage();
} else {
initCounter();
}
// Загружаем сам код счетчика сразу
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document,'script','https://mc.yandex.ru/metrika/tag.js', 'ym')
// Функция добавляет класс к DOM-элементу. Вы можете использовать библиотеку jQuery или другой фреймворк
function addClass (o, c) {
var re = new RegExp("(^|\\s)" + c + "(\\s|$)", "g");
if (!o || re.test(o.className)) {
return;
}
o.className = (o.className + " " + c).replace(/\s+/g, " ").replace(/(^ | $)/g, "");
}
// Функция удаляет класс из DOM-элемента. Вы можете использовать библиотеку jQuery или другой фреймворк
function removeClass (o, c) {
var re = new RegExp('(^|\\s)' + c + '(\\s|$)', 'g');
if (!o) {
return;
}
o.className = o.className.replace(re, '$1').replace(/\s+/g, ' ').replace(/(^ | $)/g, '');
}
// Функция, которая прячет предупреждение
function hideMessage () {
addClass(messageElement, 'cookie-notification_hidden_yes');
}
// Функция, которая показывает предупреждение
function showMessage () {
removeClass(messageElement, 'cookie-notification_hidden_yes');
}
function saveAnswer () {
// Прячем предупреждение
hideMessage();
// Ставим cookies
Cookies.set('agreement', '1');
}
function initCounter () {
ym(XXXX, 'init', {});
saveAnswer();
}
// Нажатие кнопки "Я согласен"
document.querySelector('#yes').addEventListener('click', function () {
initCounter();
});
</script>
</body>где XXXXXX — номер вашего счетчика.
В чем суть?
До явного согласия пользователя на ненужные (аналитические, рекламные, маркетинговые) cookies сайт не должен устанавливать никаких подобных файлов — ни при первом визите, ни при отказе. После отказа или при отсутствии явного согласия — cookie не должны появляться в devtools, кроме строго необходимых для работы сайта (технические/session cookies).
Важно! Если сайт всё же устанавливает cookies до получения согласия, это нарушение, за которое грозят крупные штрафы (к примеру, Яндекс.Метрика без опции «не использовать до согласия» считается нарушением).
Есть ли оговорки?
- Оговорка только для технических (strictly necessary) cookies — таких как cookie для сессии сайта, корзины, работы авторизации, они допустимы до согласия, если без них сайт работать не может корректно.
- Все остальные случаи — только по явному согласию.
Вывод:
С точки зрения российских требований, до согласия на cookies в devtools не должно появляться аналитических, рекламных, трекинговых и сторонних файлов cookie. Исключение — только технически необходимые cookies для минимальной работоспособности сайта.