Greasemonkey, l'extension du webuser developpeur

Cette extension qui fonctionne sur pas mal de navigateurs (je met IE dans le tas) permet d'ajouter des scripts Javascript sur tout les sites qu'on visite.

Une fois qu'on a installé et configuré un script, il s'exécute une fois que le DOM de la page est complétement chargé.

Pour la télécharger, c'est du coté du site officiel que ça se passe.

L'intérêt de cette extension est majeur quand on en a marre de voir des fonctionnalités inexistantes sur nos sites préférés.
L'ensemble des outils proposés par Greasemonkey ont été soigneusement implémentés pour permettent de développer facilement des scripts complets.

Basiquement, pour créer un script il faut lui donner un nom, une description, un espace de nom et les pages sur lesquels il s'exécutera.

De ces 4 informations, seule la description n'est pas essentielle. Le nom et aussi celui du fichier javascript généré sur la machine du client (vous). Si 2 scripts ont le même nom, alors le namespace (espace de nom) permettra de les différencier car plus tard, on verra que chaque script peut enregistrer des informations indépendamment. Les url à inclures sont évidement un point clé pour que les scripts soit exécutés.

Si je veux ajouter un script pour mon blog, je ferai :

// ==UserScript==
// @name  Mon script
// @namespace Mon script
// @include https://www.deblan.io/*
// ==/UserScript==

Le caractère « * » indique "tous les caractères possibles". Ainsi, toutes les pages de mon blog seront cibles.

Le reste de la manoeuvre demande simplement de savoir écrire du javascript.

Le meilleur ami de l'Homme 2.0 est la console d'erreur. Vous pouvez interfacer Greasemonkey avec la console Firebug mais vous pouvez également loguer des données (le alert() du riche en gros ^^) :

GM_log("Ceci est un log =)");
console.log("Ceci est un message qui sera affiché dans la console de Firebug");

Par défaut, on ne peut pas interagir avec les scripts originaux des pages cibles, donc par défaut, si JQuery ou Mootools sont présents, vous ne pourrez par les utiliser. Forte heureusement, on peut palier au problème en utilisant une des fonctionnalité très intéressante de Greasemonkey : unsafeWindow.

Pour donner un exemple concret, en développant un script pour Facebook, j'ai eu besoin d'avoir accès à l'objet "window.presenceNotifications". Pour pouvoir l'utiliser, voila le code utilisé :

var w = unsafeWindow;
var foo = w.presenceNotifications;
// A noter que c'est un poil plus complexe pour une bibliothèque

En javascript, on utilise les cookie pour enregistrer des données (dans le cas où on n'a pas de langage type Php pour le faire à sa place).
Avec Greasemonkey, 4 fonctions nous sont accessibles :

// http://wiki.greasespot.net/GM_setValue
// GM_setValue : enregistre une donnée
GM_setValue('Nom', 'Valeur');

// http://wiki.greasespot.net/GM_getValue
// GM_getValue : retourne une donnée enregistrée
GM_getValue('Nom');

// http://wiki.greasespot.net/GM_deleteValue
// GM_deleteValue : supprime une donnée enregistrée
GM_deleteValue('Nom');

// http://wiki.greasespot.net/GM_listValues
// GM_listValues : retourne toutes les données enregistrées
GM_listValues();

Bien sûr, entre 2 espaces de noms différents, impossible d'interagir avec les données.

Un tas d'autres fonctions sont présentes, en voici une liste :

  • GM_addStyle() : ajoute du CSS à la page
  • GM_xmlhttpRequest() : permet de faire des requêtes asynchrones
  • GM_getResourceText() : permet de télécharger une ressource textuelle
  • GM_getResourceURL() : télécharge une ressource (une image par exemple)

La documentation complète de Greasemonkey est disponible sur le wiki.

Pour donner des exemples, voila quelques-uns des scripts que j'ai développé :

Userscripts recense des milliers de scripts Greasemonkey pour une tripoté de sites web.

Si j'ai un conseil à donner avant d'écrire du code, c'est de savoir parcourir et modifier le DOM Html d'une page proprement, sans quoi vous allez avoir des problèmes.

A utiliser !

Simon Vieille

Capture, un reverse proxy pour analyser les requêtes de vos applications

Capture, un reverse proxy pour analyser les requêtes de vos applications

Capture est un reverse proxy HTTP qui se place entre votre application cliente et une API. C…

Un modèle pour démarrer un script shell

Un modèle pour démarrer un script shell

J'ai régulièrement le besoin d'écrire des scripts shell un peu évolués. Il y a quelques mois…


  • cyril
  • bonjour,
    un question simple pour savoir si je peu continuer a creuser dans ce sens ou trouver autre chose,
    es ce possible de creer un script qui reagie lorsque sur une page de base php sur un endroit preci nous previens avec une image qui clignote ??
    et a ce moment preci faire reagir le script creer a cet endroit là avec un avertissement sonore ou autre en plus sachant que je n'est aucun acces la page de bases php.
    dison de façon simple que je verai mon script sous forme de calques supperposer sur cette page de base pour etre prevenu en temps reel meme si je ne suis pas devant mon pc
    merci de la reponse
  • Simon
  • C'était pour un ami donc je n'ai plus la source et quoiqu'il en soit, l'interface a du changer donc il n'est sans doute plus compatible. Ça restait simple à faire cela dit : le principe était de repérer à temps régulier si une attaque était en marche (via des infos affichée à l'écran) et je jouais un son quand ça arrivait.
  • cyril
  • si tu a la base je suis quand meme preneur meme avec ton ami sinon
    existe t'il un soft ou faut tous faire a la main ?
    merci encore de ta reponse

Ajouter un commentaire

Votre commentaire - Vous pouvez utiliser du markdown

Renouveler