Согласие на использование файлов cookie для вставленных видео на YouTube с использованием JavaScript для соответствия GDPR

Из-за закона GDPR, нам кажется, что нам нужно согласие пользователя даже для видео на YouTube, размещенных на нашем сайте, что аналогично тому, что мы должны делать для Google Analytics.

Я искал через, но мог найти способы много помочь в сети или плагин, который может получить согласие пользователя для видео YouTube.

Мы можем использовать www.youtube-nocookie.com вставлять видео, которые не устанавливают файлы cookie http. Вместо этого альтернативный домен устанавливает постоянные "супер-куки" в браузере HTML Locale Storage, что также требует согласия.

Я наткнулся на один веб-сайт, который требовал согласия пользователя перед воспроизведением видео на YouTube, но я не уверен, как они это делают.

https://edps.europa.eu/press-publications/press-news/videos/cnn-regulators-probe-facebook-over-data-privacy-giovanni_en

еще один пример, который показывает обход, ниже, но это не показывает работающий пример https://cybot.uservoice.com/knowledgebase/articles/614733-iframe-cookie-consent-with-youtube-example

1 ответ

Возможно, что-то изменилось через эти 3 года, но файлы cookie для YouTube не устанавливаются, пока пользователь не запустит видео. Для этого вы можете использовать API YouTube, чтобы предотвратить воспроизведение видео, пока пользователь не установит файлы cookie.

https://developer.google.com/youtube/iframe_api_reference

Вы также можете использовать jQuery для предотвращения воспроизведения видео до тех пор, пока пользователь не примет файлы cookie. Имейте в виду, что на вашем сайте может быть ошибка javascript;) и в этом случае вы не будете соблюдать GDPR.

Вот пример, в котором сообщение, запрещающее воспроизведение видео, будет наложено на проигрыватель YouTube (сохранение согласия пользователя в .. cookie;):

      // Check if the user has not already accepted the use of cookies
if (getCookie('accept-yt-cookies') != 'yes') {

  // Foreach iframe with a src attribute begining  with 'https://www.youtube'
  $('iframe[src^="https://www.youtube"]').each(function(){

      // Wrap iframe element in a new div with a paragraph and a button
      $(this).wrap('<div class="iframe-wrapper"></div>')
      $iframeRequestApproval = $('<div class="iframe-request-approval"/>')
        .append($('<p>You must accept our <a href="/legal">legal notice</a></p>'))
        // Note that an onclick function is attached to the button here
        .append($('<button>Accept</button>').click(()=>{acceptYTcookies()}))  
      $(this).before( $iframeRequestApproval )
  })
}
// If user click on "Accept" button, this function will be called
function acceptYTcookies() {
  // Remove overlays
  $('.iframe-request-approval').remove()
  // ...
  // Write your own magic function to remember the user's choice for the next time
  // You can auto play video after click with YT API..
  setCookie('accept-yt-cookies', 'yes', 365) // here we save user choice for 365 day
}



// Cookies helpers
function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}
function setCookie(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "") + expires + "; path=/";
}

Структура HTML будет такой:

      <div class="iframe-wrapper">
    <div class="iframe-request-approval">
         <p/>
         <button/>
    </div>
    <iframe/>
</div>

CSS-оверлей:

       /* Place the message over the iframe element */
.iframe-wrapper{
  position:relative;
}
.iframe-request-approval{
  width:560px;
  height:315px;
  position:absolute;
  top:0;
  left:0;
  background:rgba(0,0,0,.95);
  color:#fff;
  z-index:10;
}

https://codepen.io/kisaure/pen/oNZpVvv

Другие вопросы по тегам