Une idée pour GA sans cookie...

Discussion dans 'Google Analytics' créé par ortolojf, 2 Mai 2019.

  1. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 061
    J'aime reçus:
    12
    Bonjour

    C'st un petit exemple théorique de GA compliant GDPR.

    Très simple, mais est-ce que celà suffit pour Analytics ?

    l'adresse ip n'y est pas.

    Que va faire GA sans localisation ?


    Code:
    
      D'abord :
     
      /******* UUID.php ********/
    
     
    <?php
    function UUID_v4($anonid)
    {
        /**
        * Fonction de hash
        * hash("ripemd128", $anonid)
        * avec $anonid
        * en paramètre.
        **/
        /**
        * Génère 32 caractères
        * mais algorihtme
        * correct ?
        **/
        $randomString = hash("ripemd128", $anonid);
        $time_low = bin2hex(substr($randomString, 0, 4));
        $time_mid = bin2hex(substr($randomString, 4, 2));
        $time_hi_and_version = bin2hex(substr($randomString, 6, 2));
        $clock_seq_hi_and_reserved = bin2hex(substr($randomString, 8, 2));
        $node = bin2hex(substr($randomString, 10, 6));
        /**
        * Set the four most significant bits (bits 12 through 15) of the
        * time_hi_and_version field to the 4-bit version number from
        * Section 4.1.3.
        * @see http://tools.ietf.org/html/rfc4122#section-4.1.3
        */
        $time_hi_and_version = hexdec($time_hi_and_version);
        $time_hi_and_version = $time_hi_and_version >> 4;
        $time_hi_and_version = $time_hi_and_version | 0x4000;
        /**
        * Set the two most significant bits (bits 6 and 7) of the
        * clock_seq_hi_and_reserved to zero and one, respectively.
        */
        $clock_seq_hi_and_reserved = hexdec($clock_seq_hi_and_reserved);
        $clock_seq_hi_and_reserved = $clock_seq_hi_and_reserved >> 2;
        $clock_seq_hi_and_reserved = $clock_seq_hi_and_reserved | 0x8000;
        return "'" . sprintf('%08s-%04s-%04x-%04x-%012s', $time_low, $time_mid, $time_hi_and_version, $clock_seq_hi_and_reserved, $node) . "'";
    } // guid
    ?>
    
      Ensuite :
    
    /**********  GA.php ********/
    
    <?php
    require("UUID.php");
    $anonid = "ERVTEBBfggf:";
    echo "`\nga('create', 'UA-XXXXX-Y', {
        'storage': 'none',
        'storeGac': false,
        'clientId': " . UUID_v4($anonid) . "
        });\n\n";
    echo "ga('send', 'pageview');\n\n";
    ?>
    
    
    Résultat :

    Code:
    
    ga('create', 'UA-XXXXX-Y', {
        'storage': 'none',
        'storeGac': false,
        'clientId': '32303438-6366-4393-8e0d-623535396466'
        });
    ga('send', 'pageview');
    
    

    Merci beaucoup de vos réponses.

    Amicalement.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 029
    J'aime reçus:
    291
    Sérieux t'es encore en train de perdre du temps avec ces cookies à la noix ?

    [​IMG]
     
  3. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    1 487
    J'aime reçus:
    195
  4. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 061
    J'aime reçus:
    12
    Bof, bof...

    Chacun sa méthode n'est-ce pas ?

    Je vais me renseigner. ;)

    Par rapport à GA évidement. .;)

    Amicalement.
     
  5. ABCWEB
    ABCWEB WRInaute impliqué
    Inscrit:
    22 Octobre 2015
    Messages:
    900
    J'aime reçus:
    97
    remettre le site en ligne ne serait pas plus une priorité?
     
  6. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 061
    J'aime reçus:
    12
    Bonjour

    Je vais voir pour le site.

    Voici la version Global tag ci-dessous.

    Merci beaucoup de m'indiquer quels paramètres pour disabler les cookies.

    Ex. : 'user_id' ou 'clientId', et puis 'storage' et 'storeGac'.

    Merci.

    Amicalement.


    Code:
    
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-137618084-1"></script>
    <script>
       
      window['ga-disable-UA-137618084-1'] = (true|false);
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-137618084-1', { 
          'anonymize_ip': true,
          'storage': 'none',
          'storeGac': false,
          'clientId': 'UUID_v4($anonid)',
          'user_id': 'USER_ID',
      });
    </script>
    
    
     
  7. ABCWEB
    ABCWEB WRInaute impliqué
    Inscrit:
    22 Octobre 2015
    Messages:
    900
    J'aime reçus:
    97
    supprimer ce qui ce trouve entre les balises script?
     
  8. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 061
    J'aime reçus:
    12
    Bonjour

    Voilà le code.

    Je prend le client_id à partir de la "custom définition" de nom client_ID, d'index 1 que j'ai créée dans GA de type "User", et puis j'ai créé dans GTM la variable _ga de type : cookie primaire du même nom client_ID.

    J'espère que celà suffira pour rendre visible demain dans GA cette variable client_ID.

    Bien amicalement.


    Code:
    
    
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-137618084-1"></script>
    <script>
    var value_cookie_permitted;
    value_cookie_permitted = getCookie('cookieconsent_status');
    if(value_cookie_permitted == 'allow')
    {
    window['ga-disable-UA-137618084-1'] = false;
    console.log('enable GA');
    }
    else
    {
    window['ga-disable-UA-137618084-1'] = true;
    console.log('disable GA');
    }
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('set', {
    'anonymize_ip': true,
    'cookie_expires': 395 * 24 * 60 * 60 // 13 mois.
    });
    gtag('js', new Date());
    gtag('config', 'UA-137618084-1', {
    'custom_map': {
    'dimension1': 'clientId'
    }
    });
    </script>
    
    
     
  9. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 061
    J'aime reçus:
    12
    Bonjour

    Est-ce que le code ci-dessous est correct ?

    C'est pour Google Analytics.

    Je n'ai pas trouvé pour GA le moyen de me passer des cookies.

    Le système de gestion de cookies : 'Cookie_consent' gère l'acceptation/refus par le visiteur des cookies ( en mode opt-tout ) donc de Google Analytics.

    Ce mode opt-out, fait que l'acceptation explicite du visiteur est nécessaire avant de poser aucun cookie ( hormis le cookie de session 'SES' et celui de gestion de cookie 'cookieconsent_status'.

    Celà a induit une chute drastique de ma fréquentation Google : 1.665 vu/jour en mars, 565 vu/jour hier.

    A votre avis, Google s'aperçoit-il de la cause de cette chute de fréquentation ?

    Le code activant/désactivant GA est conforme aux guideline Google ?

    Merci beaucoup de vos conseils.

    Amicalement.


    Code:
    
    <script>
    function remove_cookie(tmp_name)
    {
    // Cookie https.
    securite = true;
    chemin = undefined;
    domaine = undefined;
    var d = new Date();
    d.setTime(d.getTime() - 24*60*60*1000);
    var tmp_expire = '; expires=' + d.toUTCString();
    var tmp_value = '';
    // alert(tmp_name + '=' + tmp_value + tmp_expire + '; path=/' + ((chemin === undefined) ? '' : chemin) + ((domaine === undefined) ? '' : '; domain=' + domaine) + ((securite === true) ? '; secure' : ''));
    document.cookie = tmp_name + '=' + tmp_value + tmp_expire + '; path=/' + ((chemin === undefined) ? '' : chemin) + ((domaine === undefined) ? '' : '; domain=' + domaine) + ((securite === true) ? '; secure' : '');
    }
    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 getAllCookies()
    {
    var AllCookies = Array();
    var nameRegexp = new RegExp("[^=]+=");
    var ca = document.cookie.split(';');
    k=0;
    for(var i=0;i < ca.length;i++) {
    var c = ca[i].toString().trim();
    if(c.match(nameRegexp))
    {
    var j = c.indexOf('=');
    AllCookies[k] = c.substring(0, j);
    k++;
    }
    }
    if(k > 0)
    {
    return AllCookies;
    }
    return null;
    }
    function remove_All_Cookies()
    {
    var AllCookies = Array();
    AllCookies = getAllCookies();
    if(AllCookies !== null)
    {
    for(var i = 0;i < AllCookies.length; i++)
    {
    var cookie = AllCookies[i].toString().trim();
    /*
    * Cookie de session
    * et cookie de gestion
    * de cookies.
    */
    if((cookie != 'SES')&&(cookie != 'cookieconsent_status'))
    {
    remove_cookie(cookie);
    }
    }
    }
    }
    function onLog (status) {
    console.log(status ? 'enable cookies' : 'disable cookies');
    }
    </script>
    
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-137618084-1"></script>
    
    <script>
    var value_cookie_permitted;
    value_cookie_permitted = getCookie('cookieconsent_status');
    
    if(value_cookie_permitted == 'allow')
    {
    window['ga-disable-UA-137618084-1'] = false;
    console.log('Google Analytics activé.');
    }
    else
    {
    window['ga-disable-UA-137618084-1'] = true;
    console.log('Google Analytics désactivé.');
    }
    
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('set', {
    'anonymize_ip': true,
    'cookie_expires': 395 * 24 * 60 * 60 // 13 mois.
    });
    gtag('js', new Date());
    gtag('config', 'UA-137618084-1');
    
    </script>
    
    
     
  10. cthierry
    cthierry WRInaute passionné
    Inscrit:
    15 Janvier 2005
    Messages:
    2 222
    J'aime reçus:
    47
    https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id

    Bon, on en avait parlé dans un autre topic et comme tu veux refaire la roue, tu te dis que ce n’est pas full RGPD :
    https://www.webrankinfo.com/forum/t/plugin-dopt-out-pour-google-analytics.193869/

    Bref, si tu veux être full RGPD tu ne dois pas être capable de suivre le visiteur du tout, rien, nada, que dalle. Si je vais sur ton site et que je pars, tu ne dois pas savoir que c'est moi quand je reviens. Donc il ne faut mettre aucun système de suivi au final. :)

    Sinon il y a fingerprint et le localstorage comme dans cet exemple (je sais pas si il est récent) qui fait que tu as juste une empreinte unique du visiteur, mais qu'elle est stockée chez lui et non sous forme de cookie domaine.
    https://codepen.io/run-time/pen/XJNXWV
     
  11. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 061
    J'aime reçus:
    12
    Bonjour cthierry

    J'ai ce code ci-dessous.

    Je ne comprend pas comment le clientId est calculé.

    var tracker_id = GA_TRACKING_ID.replace(/-/g, '_');
    var tracker = window.ga.getByName('gtag_'+tracker_id);
    var _lsc_clientId = tracker.get('clientId');

    Qu'est-ce qui fait, que_lsc_clientId contient le clientId de Google ?

    Et puis, aussi :

    Faut-il déclarer la variable 'clientId' dans le Google Tag Manager ?

    Merci beaucoup de ton aide.


    Code:
    
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-137618084-1"></script>
    <script>
    var GA_TRACKING_ID = 'UA-137618084-1';
    var value_cookie_permitted;
    value_cookie_permitted = getCookie('cookieconsent_status');
    if(value_cookie_permitted == 'allow')
    {
        window['ga-disable-' + GA_TRACKING_ID] = false;
        console.log('Google Analytics activé.');
    }
    else
    {
        window['ga-disable-' + GA_TRACKING_ID] = true;
        console.log('Google Analytics désactivé.');
    }
    var localStorageCid = {
        objectName: 'ga_client_id',
        expires: 1000*60*60*24*395    // en millisecondes.
      };
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    if (window.localStorage) {
      var lsCid;
      var jsonObj = window.localStorage.getItem(localStorageCid.objectName) || '{}';
      var obj = JSON.parse(jsonObj);
      var now = new Date().getTime();
      if (obj.clientId && obj.expires) {
        if (now <= obj.expires) {
          lsCid = obj.clientId;
        }
      }
     
      //initialize - but do not send auto-hit
      //add your own additional options here if present in existing code
      gtag('config', GA_TRACKING_ID, { 'anonymize_ip': true, 'send_page_view': false, 'client_id': lsCid});
     
      //pageview gets sent now with callback for storing the Client ID
      gtag('event', 'page_view', {
        'event_callback': function() {
          var tracker_id = GA_TRACKING_ID.replace(/-/g, '_');
          var tracker = window.ga.getByName('gtag_'+tracker_id);
          var _lsc_clientId = tracker.get('clientId');
          var _lsc_obj = JSON.stringify({
              clientId: _lsc_clientId,
              expires: new Date().getTime() + localStorageCid.expires
          });
          window.localStorage.setItem(localStorageCid.objectName, _lsc_obj);
        }
      });
    }
    else {
      //add your own additional options here if present in existing code
      gtag('config', GA_TRACKING_ID, {
        'anonymize_ip': true,
        'cookie_expires': 395 * 24 * 60 * 60  // 13 mois ( en secondes ).
     });
    }
    </script>
    
    
     
  12. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 061
    J'aime reçus:
    12
    Voili, voilou

    J'ai créé une dimension personnalisée sous GA : 'Client_ID' de type User.

    J'ai créé sous GTM la variable Javascript personnalisée ci-dessous ''Client_ID' :

    J'ai créé le déclencheur 'Client_ID_loaded', rendant cette valeur 'Client_ID' dans les conditions : 'window loaded' et 'Client_ID not equal false'.

    Qu'est-ce qui me reste à faire pour que Client-ID soit lisible par : tracker.get('clientId'); ?

    Et, quelle valeur attribuer à tracker ?

    ga ?

    Merci beaucoup de vos réponses.

    Respectueusement.


    Code:
    
    function() [
          try {
                    var tracker = ga.getAll()[0];
                    return tracker.get('clientId');
            } catch (e) {
                    return false;
            }
    }
    
    
     
    #12 ortolojf, 12 Mai 2019
    Dernière édition: 12 Mai 2019
  13. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 061
    J'aime reçus:
    12
    Bon, bon...

    Je crois que je ne vais pas installer GA avec un local storage.

    Ce type de tracking n'est pas GDPR compliant, et c'est d'une complexité abominable.

    Je reste avec mon code actuel, avec les cookies classiques de GA.

    Une question cependant :

    Mon implémentation ( Cookie_consent ) de gestion de cookies, ne différencie pas le fait de refuser/accepter les cookies GA, et les hash-codes anonyme et unidirectionnels des adresses IP pour l'anti-aspirateur.

    Est-ce que je suis obligé de présenter la possibilité d'accepter/refuser ces deux choses séparément ?

    Merci beaucoup pour vos réponses.

    Très respectueusement.
     
  14. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 061
    J'aime reçus:
    12
    Rebonjour

    Comment rendre cookieconsent compatible avec le "Do Not Track" ?

    Faut-il détecter celà manuellement ?

    Merci.

    Amicalement.
     
Chargement...
Similar Threads - idée cookie Forum Date
[Idée ?] Détecter la présence de cookies Développement d'un site Web ou d'une appli mobile 5 Décembre 2013
Sécurité cookie : mon idée ! Développement d'un site Web ou d'une appli mobile 8 Avril 2012
Créer une page ou une rubrique "citation", bonne idée ? Débuter en référencement 21 Juin 2020
Réécriture d'articles, est-ce une bonne idée de couper ses articles? Rédaction web et référencement 25 Mai 2020
Récupérer backlinks vers liens morts : fausse bonne idée ? Netlinking, backlinks, liens et redirections 6 Avril 2020
Une idée à confirmer pour tenter de gagner un peu plus avec AdSense AdSense 17 Octobre 2019
pour des visites guidées animées Tests et études de cas 21 Juin 2019
Idées pour améliorer mon design et mon contenu Demandes d'avis et de conseils sur vos sites 24 Juillet 2018
Facebook pour promouvoir des visites guidées Facebook 18 Juillet 2018
Créer des backlinks entre des sites d'artisans opérant chacun dans leur département, une bonne idée? Netlinking, backlinks, liens et redirections 19 Avril 2018
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice