Le calepin du geek
Geek : Personne s’intéressant à des domaines pointus, avec une once de créativité.

Ceci est un site perso, dans le pur esprit web 1.0, compilant des notes diverses sur des thèmes d’intérêt. (Informatique, programmation, voyage à vélo, réflexions)

Comment supprimer les messages d’avertissements concernant les cookies ?
et apprendre à écrire un script qui clique avec greasemonkey
Article mis en ligne le 21 avril 2016
par aldoniel
Imprimer cet article logo imprimer

 Historique d’un combat perdu

Il convient déjà de préciser l’origine de ce message.

  1. Peu après les débuts d’internet, vers 1995, les cookies commencèrent à apparaître sur internet.
  2. Les internautes avisés se rendant compte que ce dispositif servira entre autres à surveiller l’activité en ligne, un débat apparaît...
  3. Avec une redoutable efficacité administrative, les fonctionnaires européens et français font appliquer 19 ans plus tard (sic), l’obligation d’informer les internautes de l’usage de ces cookies...

 Une mesure :

  • idiote, car de toute façon c’est ça, ou arrêter d’utiliser internet
  • pénible, car les webmestres ont dû se plier à la loi pour infliger des nuisances visuelles aux internautes.
  • Obsolète. En effet, en 19 ans, internet s’est changé d’un outil d’universitaires et de propagateurs de connaissances, en une vaste foire consumériste. Les firmes ont donc développé divers outils de surveillance et de pistage, où le cookie est anecdotique. Les boutons like, les outils « gratuits » de google pour faciliter la vie des usagers et webmestres, sont autant d’espions qui permettent à ces firmes de savoir tout ou presque de vous (les pages vues, votre profil d’âge religion orientation sexuelle, vos achats, etc.), même si vous n’avez pas de compte chez eux.

Voir par exemple le Canvas fingerprinting et  ; l’IP tracking...

La vie privée sur internet est depuis longtemps illusoire, et cette mesure légale n’est que poudre aux yeux.

 Enlever les messages, la voie facile

Installez le plugin I don’t care about cookies

C’est pas parfait, mais c’est déjà ça.
Il y a une procédure pour signaler à l’auteur les sites où ça ne marche pas...

 Enlever les messages, la voie « hardcore geek »

(où, attention, ça marche, mais c’est une sorte de masochisme informatique)

  • Pour les sites où le bandeau est très gênant, et sur lequel l’extension ne marchera jamais (sites non publics...).
  • Déjà installez le plugin I don’t care about cookies, à moins de vouloir réinventer l’eau tiède.
  • installez le plugin greasemonkey si on est sur firefox. Pour les autres navigateurs voir wikipedia. On pourra lire What Is Greasemonkey pour comprendre l’outil. Ça sert à insérer dynamiquement un javascript dans une page.
    • indispensable, servira à faire tourner le script qui clique.
  • installer firefox, firebug
    • pour développer les variantes du script

 Ex. sur developpez.com

  • clic-droit sur le bandeau -> firebug
  • on repère que le bandeau est dans un conteneur div dont le nom est gabarit_cnilcookie
  • On va créer un script greasemonkey qui simule un clic sur le bandeau.
  • Aller dans addons (about:addons), puis éditer le script via user scripts -> options -> edit this user script
  • et coller le script.
  • Bien évidemment, il faudra refaire cette manip sur chacun des sites à régler, en substituant gabarit_cnilcookie dans le script, par l’id de l’élément à cliquer (je plains la vie de l’auteur de I don’t care about cookies qui a eu le courage de maintenir ça pour tous les sites d’europe...).
// ==UserScript==
// @name        developpez
// @namespace   developpez
// @include     http://www.developpez.com/*
// @version     1
// @grant       none
// ==/UserScript==
window.addEventListener('load', function () {
 var cible = document.getElementById('gabarit_cnilcookie');
 click(cible);
}, false);

// Click by JoeSimmons
// Syntax: click(element);
function click(e, type) {
 if (!e) {
   return;
 }
 var evObj = document.createEvent('MouseEvents');
 evObj.initMouseEvent((type || 'click'), true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
 e.dispatchEvent(evObj);
}

 Commentaires du script

  • Je ne programme pas en javascript, mais c’est assez lisible, alors j’ai lu quelques scripts d’autres pour assembler ça.
  • lignes importantes : @include http://www.developpez.com/* (url de base + *) signifie que ce script sera lancé sur toutes les pages du domaine www.developpez.com
  • @name et @namespace On y met ce qu’on veut
  • window.addEventListener(’load’, function () [...] sert à n’éxécuter le script QUE lorsque la page a fini de charger. Ce point est très important, car greasemonkey lance le javascript quelque part avant la fin du chargement de la page (détail non ou mal documenté...). Or, sur cette page, le bandeau apparaît dynamiquement vers la fin du chargement. Sans cette ligne, le script ne trouve jamais le bandeau (j’ai mis un moment à saisir le problème...)
  • click() attend l’objet à cliquer (sic). Ici, on l’initialise avec getElementById(’gabarit_cnilcookie’) où gabarit_cnilcookie est le nom du bandeau récupéré par firebug.

 Ex. sur Sourceforge

(Je peine à saisir pourquoi l’extension I don’t care y est sans effet)

// ==UserScript==
// @name        sourceforge
// @namespace   sourceforge
// @include     https://sourceforge.net/*
// @include     http://sourceforge.net/*
// @version     1
// @grant       none
// ==/UserScript==

window.addEventListener('load', function () {
setFreedomCookie();
}, false);

Encore plus simple. Le bouton déclenche <a class="btn" onclick="setFreedomCookie()">[...], c’est à dire la fonction setFreedomCookie. On n’a qu’à la lancer directement.

P.S. :

La plupart des site retiennent qu’on a cliqué le message, mais ça m’arrive de supprimer les cookies sur mon navigateur (il y a une option pour faire ça automatiquement à la fermeture). Ça m’évite la blague de la session ouverte, etc., mais je préfère éviter d’avoir à ré-accepter les conditions chaque jour.

A télécharger

Pas de documents à télécharger pour cet article


Site réalisé sous SPIP
avec le squelette ESCAL-V3
Version : 3.70.61