Ma 1ère extension Firefox : Disable GeoIP Cookie

Comme je n’ai pas trouvé de solution par l’effacement de ce cookie de géolocalisation envoyé par Wikipédia à Firefox et comme tout le monde s’en fout, je me suis décidé à écrire une extension Firefox au nom de Disable GeoIP Cookie. Il ne m’a pas fallu bien longtemps pour le faire. Elle est actuellement en attente de validation.

L’extension

J’ai créé un répertoire dans lequel j’ai créé un fichier manifest.json, trois dossiers icons, content_scripts (non utilisé au final), background_scripts. Dans le dossier icons, j’ai mis deux images en 48×48 et en 96×96.

Le fichier manifest.json

C’est le fichier qui définit tous les éléments de l’extension.

{

  "manifest_version": 2,
  "name": "Disable GeoIP cookie",
  "version": "1.0",

  "description": "Disable GeoIP cookie",

  "icons": {
    "48": "icons/disable-geoip-cookie-48.png",
    "96": "icons/disable-geoip-cookie-96.png"
  },

  "permissions": [
    "activeTab",
    //"tabs",
    "cookies",
    //"",
    "*://*.wikipedia.org/*",
    "webRequest",
    "webNavigation",
    "storage",
    "webRequestBlocking"
  ],

  //"content_scripts": [
  //{
  //  "matches": ["*://*.wikipedia.org/*"],
  //  "js": ["disable-geoip-cookie.js"]
  //  }
  //],

  "background": {
    "scripts": ["background_scripts/disable-geoip-cookie.js"]
  },

  "applications": {
    "gecko": {
      "id": "dszalkowski@gmail.com"
    }
  }
}

Le code de l’extension

J’ai eu l’idée d’intercepter et de modifier la valeur de l’en-tête de réponse Set-Cookie envoyée par le site Wikipédia au navigateur Firefox.

var targetPage = "*://*.wikipedia.org/*";

function rewriteCookie(e) {
  e.responseHeaders.forEach(function(header){
    if (header.name.toLowerCase() == "set-cookie" && header.value.match(/GeoIP/)) {
      //console.log("back "+header.value);
      header.value = header.value.replace(/GeoIP=[^:]+:[^:]+:[^:]+:[^:]+:[^:]+:v4/,"GeoIP=:::::v4")
    }
  });
  return {responseHeaders: e.responseHeaders};
}

browser.webRequest.onHeadersReceived.addListener(
  rewriteCookie,
  {urls: [targetPage]},
  ["blocking", "responseHeaders"]
);

Tester le module

A partir de la barre d’adresses, tapez about:debugging#/runtime/this-firefox. Cliquez sur Charger un module complémentaire et sélectionnez votre fichier manifest.json. Vérifiez votre code en faisant Examiner.

Firefox > about > debugging > runtime > this-firefox

L’envoi du module

Vous devez zipper les fichiers et dossiers de l’extension cités ci-dessus. L’envoi du module se fait à partir du Centre développeur de modules. Le module Disable GeoIP Cookie est actuellement en cours de validation.

Ma 1ère extension Firefox : Disable GeoIP Cookie

Firefox Addons  / Extensions Firefox