Archive for Bidouille

SQL dans Firefox

Pour remettre un petit peu de vie dans ce blog, je vous propose un article de pure bidouille. On va tripatouiller les fichiers de configuration de firefox pour obtenir des informations telles que l’historique, les marques page …

Quand on fait une recherche  sur l’amélioration des performances de  firefox, on tombe souvent sur ce type d’article par exemple (j’aurais pu choisir un autre site, il y a une foule d’articles sur le sujet). Ça parle d’appliquer l’action vacuum sur les fichiers de configuration de firefox. Ok c’est cool on a un firefox plus speed (je suis pas sur que ça change grand chose) mais c’est pas très fun. Le plus intéressant, les fichiers de configuration sont des basses de données tournant avec sqlite. Donc ça devient super simple de récupérer ces informations pour les utiliser dans une autre application par exemple.

Enfin on arrive aux ligne de commande. Je vous laisse vous débrouiller pour installer sqlite3 sur votre système et je vous conseille de sauvegarder les fichiers sqlite que vous manipulez, on est jamais trop prudent. (même si je n’ai pas suivi mon propre conseil )

Pour commencer, on va aller dans le dossier de votre profil firefox.

$cd ~/.mozilla/firefox/
$ls
mci61le1.default  profiles.ini  se1rptc9.Default User
$cd mci61le1.default

Rien de compliqué ! Voyons voir les fichiers sqlite qu’on peut explorer

 $ls *.sqlite
addons.sqlite           downloads.sqlite    messages.sqlite     signons.sqlite               ubiquity_suggestion_memory.sqlite
chromeappsstore.sqlite  extensions.sqlite   permissions.sqlite  startup.sqlite               urlclassifier3.sqlite
content-prefs.sqlite    formhistory.sqlite  places.sqlite       ubiquity_ann.sqlite          webappsstore.sqlite
cookies.sqlite          jetpack_ann.sqlite  search.sqlite       ubiquity_skin_memory.sqlite

Oui chez moi il y a de quoi s’amuser. Il y a une bonne partie des fichiers sqlite qui viennent d’extensions comme ubiuity, jetpack .…
On va s’intéresser au fichier places.sqlite qui gère l’historique et les marques pages. D’après la doc voila les tables disponibles

  • moz_anno_attributes – Annotation Attributes
  • moz_annos – Annotations
  • moz_bookmarks – Bookmarks
  • moz_bookmarks_roots – Bookmark roots i.e. places, menu, toolbar, tags, unfiled
  • moz_favicons – Favourite icons – including URL of icon
  • moz_historyvisits – A history of the number of times a site has been visited
  • moz_inputhistory – A history of URLS typed by the user
  • moz_items_annos – Item annotations
  • moz_keywords – Keywords
  • moz_places – Places/Sites visited – referenced by moz_historyvisits

On va se connecter pour voir ça.

$sqlite3 places.sqlite

Maintenant on se trouve dans la ligne de commande de sqlite.
J’ai trouvé 3 commandes intéressantes pour commencer
.help listant l’ensemble des commandes.
.tables listant la liste des tables
.schema affiche le schéma de la table donnée en argument.

sqlite> .schema moz_places
CREATE TABLE moz_places (id INTEGER PRIMARY KEY, url LONGVARCHAR, title LONGVARCHAR, rev_host LONGVARCHAR, visit_count INTEGER DEFAULT 0, hidden INTEGER DEFAULT 0 NOT NULL, typed INTEGER DEFAULT 0 NOT NULL, favicon_id INTEGER, frecency INTEGER DEFAULT -1 NOT NULL, last_visit_date INTEGER, guid TEXT);
CREATE INDEX moz_places_faviconindex ON moz_places (favicon_id);
CREATE INDEX moz_places_frecencyindex ON moz_places (frecency);
CREATE UNIQUE INDEX moz_places_guid_uniqueindex ON moz_places (guid);
CREATE INDEX moz_places_hostindex ON moz_places (rev_host);
CREATE INDEX moz_places_lastvisitdateindex ON moz_places (last_visit_date);
CREATE UNIQUE INDEX moz_places_url_uniqueindex ON moz_places (url);
CREATE INDEX moz_places_visitcount ON moz_places (visit_count);

Voila deux exemples d’extraction :
pour afficher les 20 sites les plus visités dans votre historique. Si vous connaissez sql c’est tout simple pour les autres la doc est facile à trouver.

sqlite> select url  from moz_places order by visit_count DESC limit 20;

Attention: quand vous lancez une requête n’oubliez pas le ; à la fin.

la liste des sites en marque page que vous avez le plus visités

select url, visit_count from moz_bookmarks t1
inner join moz_places t2 on t1.fk = t2.id
order by visit_count DESC limit 10;

Je vous laisse maintenant trouver des idées d’utilisation de cette bidouille.

Bonne soirée et à la prochaine

Comments (2)